python的函数参数你了解吗
作者:lishuaigell 发布时间:2021-11-08 16:15:59
前言
python参数类型和参数传递形式多样,相对于其他语言python使用会更加灵活。它传参形式一般分为两种:位置传参,关键字传参。传参形式是相对于实参而言,在函数调用时使用。参数类型一般也分为两种:默认参数,不定长参数。参数类型是相对形参而言,在函数创建时定义。
位置传参
位置传参,我们经常使用的一种函数传参形式,它根据实参的位置传递给对应位置的形式参数。在与其他传参形式混合使用时,必须优先输入位置参数。
def func(a, b, c):
print(a, b, c)
# 位置参数
if __name__ == '__main__':
func(1, 6, 7) # 打印结果是1 6 7 位置一一对应
func(6, 1, 7) # 打印结果是6 1 7
# func(6, 1) # 实参与形参数量必须一致
# func(6, 1, 7, 9) # 不能多也不能少
关键字传参
关键字传参,根据形式参数的名字来进行对应的赋值。
def func(a, b, c):
print(a, b, c)
# 关键字参数
if __name__ == '__main__':
func(1, b=6, c=7) # 打印结果是1 6 7
func(c=3, b=1, a=7) # 打印结果是7 1 3
# func(c=2, b=3) # 不能少赋值
# func(c=2, b=3,a=6,c=5) # 不能多赋值
# func(c=2, b=3,a=5,qq=3) # 也不能无关赋值
# func(1, b=6, 7) # 与位置传参混合使用时,必须位置参数在前,而且不能交替使用
默认参数
默认参数,就是形参会有个默认值,如果有新值传入就使用新值,否则使用默认值。形参使用默认参数时同样需要注意位置,必须写在位置参数后面(其实不能叫位置参数,但是为了理解就把没有赋值的普通形参叫做位置参数),否则会报错。如下方ab必须写在c后面。
# 默认参数必须要写在右侧
def func(a, b=5, c=3):
print(a, b, c)
# 默认参数
if __name__ == '__main__':
func(1) # 打印的结果是 1 5 3
func(1, 6) # 打印的结果是 1 6 3
func(1, 2, 7) # 打印结果是1 2 7
func(b=1, a=4) # 打印结果是4 1 3
不定长参数
不定长参数有两种表现形式。
在形参前面加个*(*args),表示不定长元组形参,可以接收所有通过位置传参进来的实参,将其存入元组里面。
在形参前面加两个*(**kwargs),表示不定长字典形参,可以接收所有通过关键字传参进来的实参,将其存入字典里面。
# 不定长参数
def func(*args, **kwargs):
print(args)
print(kwargs)
if __name__ == '__main__':
func(1, 4, 8, 7, a=5, h=6, l=15) # 注意实参形参顺序要对应
结果
(1, 4, 8, 7) # 元组
{'a': 5, 'h': 6, 'l': 15} # 字典
混合使用问题
创建时
def func1(a, b=5, *args, c=7, **kwargs):
print(a, b, args, c, kwargs)
我们先给它们一个称呼方便引用。就称a为普通参数,b为默认参数,*args为可变参数(因为它能接收多个实参),**kwargs为可变关键字参数(因为它能接收多个通过关键字传参进来的实参)。
普通参数必须写在最前面(写在其他类型参数前面)
可变关键字参数必须写在最后面(写在其他参数类型后面)
可变参数与可变关键字参数只能出现一次。
引用时
位置传参必须写在关键字参数前面,他们俩不能交替使用。关键字传参什么时候出现合适?出现在可变参数之后,相当于终止条件。
def func1(a, b=5, *args, c=7, **kwargs):
print(a, b, args, c, kwargs, sep='\n')
if __name__ == '__main__':
func1(5, 6, 8, 7, 1, 5, 6, 8, c=4, r=2, s=3)
结果为
5
6
(8, 7, 1, 5, 6, 8)
4
{'r': 2, 's': 3}
来源:https://blog.csdn.net/lishuaigell/article/details/122663663


猜你喜欢
- 一、简介本章内容主要通过具体的简单示例来分析Vue3是如何实现响应式的。理解本章需要了解Vue3的响应式对象。只注重原理设计层面,细节不做太
- 本文主要介绍Python3.6及TensorFlow的安装和配置流程。一、Python官网下载自己电脑和系统对应的Python安装包。&nb
- 现在对于python2版本,直接修改python.exe名字为python2.exe,命令python2 -m pip install --
- MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列
- 背景今天突然想到之前被要求做同性质银行的数据分析。妈耶!十几个银行,每个银行近5年的财务数据,而且财务报表一般都是 pdf 的,我们将 pd
- 最近在做后台管理系统的时候遇到要使用富文本编辑器。最后选择了ueditor,我的项目使用 vue+vuex+vue-router+webpa
- 本文实例为大家分享了python实现在线翻译的具体代码,供大家参考,具体内容如下具体效果请看图代码:import urllib.reques
- function ten2eight(x){ var s=[]; var r=''; while(x>0){ s.pu
- 前言Go语言的 sort 包实现了内置和用户定义类型的排序,sort包中实现了3种基本的排序算法:插入排序.快排和堆排序.和其他语言中一样,
- 一、前言数据库的数据量达到一定程度之后,为避免带来系统性能上的瓶颈。需要进行数据的处理,采用的手段是分区、分片、分库、分表。二、分片(类似分
- 工作闲余,除抱有浓厚兴趣领域,我很不喜欢看些晦涩难懂的文字,于是想像茶余饭后的闲聊,随谈点话题。一次和一朋友吃饭聊天,随便聊到了他最近做的一
- 一、字符串离散化示例对于一组电影数据,我们希望统计电影分类情况,应该如何处理数据?(每一个电影都有很多个分类)思路:首先构造一个全为0的数组
- 本篇我们将学习简单的json数据的存储首先我们需要引入json模块:import json这里我们模拟一个常见常见,我们让用户输入用户名、密
- PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样。但是因为是Python的类库,所以可以使用Python
- 前言今天小编带领大家用Python自制一个自动生成探索性数据分析报告这样的一个工具,大家只需要在浏览器中输入url便可以轻松的访问,如下所示
- 假设我有一个DataFrame(df)如下:name age idmike 10 1tony 14 2lee 20 3现在我想把id 放到最
- 一、concat()函数功能:将多个字符串连接成一个字符串语法:concat(str1,str2,…) 其中的字符串既可以是数据表字段,也可
- python应用文件读取与登录注册功能,具体实现代码如下所示:#!/usr/bin/python3# -*- coding: utf-8 -
- 正则表达式可以被看成是一个强大的通配符(通用匹配符号)。大多数人都应该很熟悉通配符,例如,当我们看到一个诸如“SAMS”的表达式
- assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。断言可以在条件不满足程序运行的情况下直接返回错误,而不必