您的位置: 网站首页> python基础> 当前文章
Python函数可变参数*args,**kwargs
老董-我爱我家房产SEO2019-09-07179围观,130赞
可变参数,又称不定长参数,即传入函数中的参数可以是任意多个。或者说一个函数能处理比当初声明时更多的参数。听起来很神奇,如何实现呢?
主要有2 种形式:形参前添加一个 * 或者形参前添加两个 *,形参名不是固定的,但是人类习惯用args和kwargs。
1形参前添加一个 *,形参本身被当做元祖处理,该元组可接受任意个非关键字实参。
# -*- coding: utf-8 -*- def test_arg(name, *args) : print(name,args) # args被当做元组 for person in args: print(person,'嘿嘿') test_arg('隔壁老王', '妇女1','妇女2','妇女3')
D:python3installpython.exe D:/pyscript/py3script/python66/python66.py 隔壁老王 ('妇女1', '妇女2', '妇女3') 妇女1 嘿嘿 妇女2 嘿嘿 妇女3 嘿嘿 Process finished with exit code 0
易错点:上面的函数如果*agrs和name调换顺序,name必须以关键字实参的形式传参,否则报错。
# -*- coding: utf-8 -*- def test_arg(*args,name) : print(name,args) # args被当做元组 for person in args: print(person,'嘿嘿') test_arg('妇女1','妇女2','妇女3',name='隔壁老王') print('=================================') def test_arg(*args,name) : print(name,args) # args被当做元组 for person in args: print(person,'嘿嘿') test_arg('妇女1','妇女2','妇女3','隔壁老王')
D:python3installpython.exe D:/pyscript/py3script/python66/python66.py 隔壁老王 ('妇女1', '妇女2', '妇女3') Traceback (most recent call last): 妇女1 嘿嘿 妇女2 嘿嘿 妇女3 嘿嘿 ================================= File "D:/pyscript/py3script/python66/python66.py", line 17, intest_arg('妇女1','妇女2','妇女3','隔壁老王') TypeError: test_arg() missing 1 required keyword-only argument: 'name' Process finished with exit code 1
2 形参前添加两个*,形参本身被当做字典,该字典可以接收任意个对关键字参数赋值的实参(key=value)。
# -*- coding: utf-8 -*- def test_karg(name,**kargs) : print(name,kargs) # kargs被当做字典 for person,age in kargs.items(): print(person,age) test_karg('王老五',小妾1=18,小妾2=28)
D:python3installpython.exe D:/pyscript/py3script/python66/python66.py 王老五 {'小妾1': 18, '小妾2': 28} 小妾1 18 小妾2 28 Process finished with exit code 0
*args、*kargs混合使用,你可能会出错。
# -*- coding: utf-8 -*- def test(a, b, c=3, *args, **kargs) : print(a, b, c) print(args) print(kargs) test(1, 2, "www.python66.com" , "我是args", p1='隔壁老王', p2='隔壁老张')
D:python3installpython.exe D:/pyscript/py3script/python66/python66.py 1 2 www.python66.com ('我是args',) {'p1': '隔壁老王', 'p2': '隔壁老张'} Process finished with exit code 0
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
Python函数可变参数*args,**kwargs文章写得不错,值得赞赏
站点信息
- 网站程序:Laravel
- 客服微信:a772483200