Python中函数的参数类型详解
目录
- 1、Python的函数参数的类型
- 2、Python的必传参数
- 3、关键字参数
- 4、默认参数
- 5、不定长参数
1、Python的函数参数的类型
- 必传参数:调用函数时必须传入的参数,函数定义时只定义参数名
- 关键字参数:传入时以函数的参数名值对的方式传入
- 默认参数:函数定义时为参数默认设置一个值,调用时不传输参数即以默认值处理
- 不定长参数:以*修饰或者**修饰的参数; *修饰的参数是一个元组(tuple),**修饰的参数必须是字典(dict),通常写作*args或者**args
2、Python的必传参数
- 传入的参数个数必须与形参的数量一致
# coding:utf-8# Author:YangXiaoPengdef demo01(a,b):print(a, type(a))print(b, type(b))# demo01(1) #TypeError missing 1 required positional argument: 'b' 缺少一个未知的参数,demo01必须传2个参数# demo01(1, 2, 3) #TypeError demo01() takes 2 positional arguments but 3 were given, demo01函数有2个位置参数,但是接收到了3个;# 必传参数 : 调用函数时必须传入的参数,函数定义时只定义参数名# 传入的参数个数必须与形参的数量一致demo01(1, 2) # yesdemo01(1, [1, 2]) # yesdemo01([2, 3], (1, 2)) # yesdemo01(1, {2, 3, 4}) # yesdemo01(2, {"code":'1001', "name":"zhang", "age":18}) # yes
文章图片
3、关键字参数
- 以参数名和参数值的关联在一起的方式进行传参,键值对的模式,参数名为键。
# coding:utf-8# Author:YangXiaoPengdef demo01(a,b):print(a, type(a), end="__")print(b, type(b))# 第一个关键字出入的参数位置之前的参数比逊选择关键字传参;如下面的示例中,第一个关键字传参的变量是a,a在函数定义的第二个位置,那么第二个位置之前的参数都必须以关键字传参的形式传参。# demo01(1, a=2) # demo01() got multiple values for argument 'a'demo01(a=1, b=2) # yesdemo01(1, b=2) # yesdemo01(b=1, a=2) # yesdemo01(b=1, a=[1, 2]) # yesdemo01(b=[2, 3], a=(1, 2)) # yesdemo01(b=1, a={2, 3, 4}) # yesdemo01(b=2, a={"code":'1001', "name":"zhang", "age":18}) # yes
文章图片
【Python中函数的参数类型详解】
4、默认参数
- 调用函数时不传入参数an默认值处理,传入时按传入的参数值处理
# coding:utf-8# Author:YangXiaoPeng## 默认参数def demo02(City = "LongNan"):print("City是默认参数,默认值是:中国,当前值是:", City)# 不传入参数demo02()# 传入参数demo02("Beijing")
文章图片
5、不定长参数
- 传入的参数会生成一个元组类型的变量供函数内部使用
# coding:utf-8# Author:YangXiaoPeng## 不定长参数def demo03(*args):print(args,type(args))# 传入的参数会生成一个元组类型的变量供函数内部使用demo03(1)demo03("code")demo03(1,"code")
文章图片
- 传入的参数不能少于必传参数的个数
- *args 后面的形参,必须以关键字参数进行传参
# coding:utf-8# Author:YangXiaoPeng# *args 后面的形参,必须以关键字参数进行传参,def demo04(a, b, *args,c):print("a传入的参数值是:{},b传入的参数值是:{}, args传入的参数是:{}, c出入的参数是:{}".format(a, b, args,c))# 传入的参数不能少于必传参数的个数,a,b,c三个为必传参数# demo04(1, 2) # TypeError# demo04(1, 2, 3) # TypeErrordemo04(1, 2, c=3)
文章图片
- *args 之前的参数只能按位置传参,不可以关键字传参
- 传入的参数个数比必传参数多时,首先给必传参数按位置赋值,然后将剩余的参数生成一个元组传递给args
文章图片
- **修饰的参数必须以关键字的参数方式传参,Python解释器会将传入的关键字和关键字的值生成一个字典供函数内部使用
# coding:utf-8# Author:YangXiaoPengdef demo05(**kwargs):print("kwargs传入的参数是:{}".format(kwargs),type(kwargs))kwargs = {"code":'1002', "name":"zhang"}# demo05(kwargs) # TypeError# **修饰的参数必须以关键字的参数方式传参,Python解释器会将传入的关键字和关键字的值生成一个字典供函数内部使用demo05(**kwargs) # kwargs传入的参数是:{'code': '1002', 'name': 'zhang'}demo05(code='1002',name="zhang") # kwargs传入的参数是:{'code': '1002', 'name': 'zhang'}
文章图片
- **修饰的参数必须是最后一个
# coding:utf-8# Author:YangXiaoPeng# **修饰的参数必须是最后一个"""# SyntaxError: invalid syntaxdef demo06(a, b, *args, c, **kwargs, d):pass"""def demo06(a, b, *args, c, **kwargs):print("a传入的参数值是:{},b传入的参数值是:{}, args传入的参数是:{}".format(a, b, args),end='')print(",c传入的参数是:{},kwargs传入的参数是:{}".format(c,kwargs))demo06(1, 2, 3, 4, 5, c=3, code='1002', name="zhang", d=3)
文章图片
到此这篇关于Python中函数的参数类型详解的文章就介绍到这了,更多相关Python函数参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 使用Python去除小数点后面多余的0问题
- python四则运算表达式求值示例详解
- PyQt5实现tableWidget|PyQt5实现tableWidget 居中显示
- Python实现计算AUC的三种方式总结
- 期中分析
- 项目实训|山东大学项目实训二——python+opencv实现人脸识别
- 牛客刷题笔记——python二维列表——迷宫题目
- linux|阿里前端面试题(最全),持续更新中
- 防火墙基础之防火墙在校园网中的应用
- Python标准库datetime之time模块详解