学习函数,首先必须搞懂参数,一般的参数容易理解,但我们经常遇到*args和**kwargs 这两个比较特殊的参数可能就会产生一些困惑。
*args参数的作用:当所需传入的参数个数未知,且不需要知道参数名称时,可以将这些参数打包成一个数组(tuple)传入。
Example1:
>>> def func_arg1(name,*args):
... print(name,args,type(args))
...
>>> func_arg1("马云","马化腾","李彦宏","雷军","刘强东")
马云 ('马化腾', '李彦宏', '雷军', '刘强东') <class 'tuple'>
Example2:
>>> def func_arg2(x,*args):
... print(x)
... for i in args:
... print("args:",i)
...
>>> func_arg2("仔细看!","保护我方娜可露露","收到!","人在塔在")
仔细看!
args: 保护我方娜可露露
args: 收到!
args: 人在塔在
**kwargs参数的作用:当所需传入的参数个数未知,但需要知道参数名称时,可以将这些参数打包成一个字典(dict)传入。
Example3:
>>> def func_arg3(x,**kwargs):
... print(x,kwargs,type(kwargs)
... )
...
>>> func_arg3("盯着看!",name="小米",age=18)
盯着看! {'name': '小米', 'age': 18} <class 'dict'>
Example4:
>>> def func_arg4(x,**kwargs):
... print(x)
... for i in kwargs:
... print(i,":",kwargs[i])
...
>>> func_arg4("拼命看!",name="马云",age=18,hobby="研究哲学")
拼命看!
name : 马云
age : 18
hobby : 研究哲学
普通参数、* args、 * *kwargs 同时出现时,一定要按照先普通参数,再 * args, 最后 * *kwargs 的顺序,否则将会报错。
以上内容,如有错误,敬请批评指正!谢谢!