重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍python中的五类参数是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联建站服务项目包括铁门关网站建设、铁门关网站制作、铁门关网页制作以及铁门关网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,铁门关网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到铁门关省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
python五类参数:位置参数,关键字参数,默认参数,可变位置与关键字参数的使用规范
def f(a,*b,c=10,**d): print(f'a:{a},b:{b},c:{c},d:{d}')12
默认参数c
不能位于可变关键字参数d
后.
调用f:
f(1,2,5,width=10,height=20) a:1,b:(2, 5),c:10,d:{'width': 10, 'height': 20}
可变位置参数b
实参后被解析为元组(2,5)
;而c取得默认值10; d被解析为字典.
再次调用f:
f(a=1,c=12)a:1,b:(),c:12,d:{}
a=1传入时a就是关键字参数,b,d都未传值,c被传入12,而非默认值。
注意观察参数a
, 既可以f(1)
,也可以f(a=1)
其可读性比第一种更好,建议使用f(a=1)。如果要强制使用f(a=1)
,需要在前面添加一个星号:
def f(*,a,*b): print(f'a:{a},b:{b}')
此时f(1)调用,将会报错:TypeError: f() takes 0 positional arguments but 1 was given
只能f(a=1)
才能OK.
说明前面的*
发挥作用,它变为只能传入关键字参数,那么如何查看这个参数的类型呢?借助python的inspect
模块:
In [22]: for name,val in signature(f).parameters.items(): ...: print(name,val.kind) ...: a KEYWORD_ONLY b VAR_KEYWORD
可看到参数a
的类型为KEYWORD_ONLY
,也就是仅仅为关键字参数。
但是,如果f定义为:
def f(a,*b): print(f'a:{a},b:{b}')
查看参数类型:
In [24]: for name,val in signature(f).parameters.items(): ...: print(name,val.kind) ...: a POSITIONAL_OR_KEYWORD b VAR_POSITIONAL
可以看到参数a
既可以是位置参数也可是关键字参数。
以上是“python中的五类参数是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!