Python中函数的参数问题有点复杂,主要是参数类型问题导致的情况比较多。下面我们来分析一下。
参数类型:默认参数、关键字参数、变长位置参数、变长关键字参数。
其实总共可以分为位置参数和关键字参数,因为位置参数放在列表中,关键字参数放在dict中,Python在解释的时候先处理列表,如果没有关键字则追加到列表中遭遇。当到达关键字时,将生成dict,直到结束。因此,位置参数必须放在关键字参数之前。
这里总结出三个模型:
1:不存在缺省函数时:
def test(a,*args,c,d=3,**kwargs):
print(a)
print(args)
print(c)
print(d)
print(kwargs)
test(1,2,3,4,c=1,d=4,e=11,f=22)
运行结果:
1
(2, 3, 4)
1
4
{'e': 11, 'f': 22}
2:有一个默认参数,参数取默认值,(默认参数放在args后面)*
def test(a,*args,b=1,c,d=3,**kwargs):
print(a)
print(args)
print(b)
print(c)
print(d)
print(kwargs)
test(1,2,3,4,c=1,d=4,e=11,f=22,h=66)
运行结果:
(2, 3, 4)
1
{'e': 11, 'f': 22, 'h': 66}
3:有默认参数,参数不取默认值,(默认参数放在args前面)*
def test(a,b=1,*args,c,d=3,**kwargs):
print(a)
print(b)
print(args)
print(c)
print(d)
print(kwargs)
test(1,2,3,4,c=1,d=4,e=11,f=22,h=66)
运行结果:
1
2
(3, 4)
1
4
{'f': 22, 'e': 11, 'h': 66}
总结:
从上面也可以看出,其实基本顺序是位置参数--->关键字参数,然后是*args前后的默认参数。
还有一点,前面说过,关键字参数保存为字典类型,即无序,但是**kwargs需要放在最后!
众多
视频,尽在python学习网,欢迎在线学习!
本文转自:https://www.jianshu.com/p/625a400b563d
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 什么是 python timedelta 函数?08/30
- ♥ 如何启动python脚本11/23
- ♥ 最全Python数据工具箱:标准库、第三方库和外部工具都在这里了01/03
- ♥ python时间的使用方法01/12
- ♥ Python有表格显示界面吗?09/16
- ♥ 如何在python中将字符串拆分为列表?08/16
内容反馈