函数之参数文档

134 阅读4分钟
形参顺
位置
参数
,默
认参数
*args,**kwargs

位置参数:
:放在所有
参数
之前
实参
:放在所有
参数
之前
[Python]
纯文本查看
复制代码
def one(name,age,gender='男',*args,**kwargs):[/align] print(name,age,gender,args,kwargs)
one('elijah',18)
>>>: elijah 18 男 () {}
注意:实参,形参只需放在最前并按照顺序传递即可

默认参数
(注意):放在位置
参数
之后,
**kwargs
之前
实参:根据形参的位置调整

情况:(形参
)在
位置
参数之后,*args和**kwargs之前
实参
传递
方法之一:
实参传递
(建
,情
一可用)
[Python]
纯文本查看
复制代码
1
2
3
4
def two(name,age,gender='女',*args,**kwargs):[/align] print(name,age,gender,args,kwargs)
two('elijah',18,'男')
>>>:elijah 18 男 () {}

实参传递
方法之二:
关键
传递
(不建
,
而定,第二
可用)
[Python]
纯文本查看
复制代码
1
2
3
4
5
def three(name,age,gender='女',*args,**kwargs):
print(name,age,gender,args,kwargs)
three('elijah',18,gender='男')
>>>:elijah 18 男 () {}

:(形
)在
位置
参数
之后,
**kwargs
之前
实参传递
方法:
关键
传递
(必
如此)
[Python]
纯文本查看
复制代码
1
2
3
4
def four(name,age,*args,gender='女',**kwargs):[/align] print(name,age,gender,args,kwargs)
four('elijah',18,gender='男')
>>>:elijah 18 男 () {}
注意:不可使用
一的方法一,那
样会
*args
收集到
[Python]
纯文本查看
复制代码
1
2
3
4
def five(name,age,*args,gender='女',**kwargs):[/align] print(name,age,gender,args,kwargs)
five('elijah',18,'男')
>>>:elijah 18 女 ('男',) {}
解析
1. elijah 18
两个实参
按照
传递给
name,age,
2. '
'
这个实参传递时
,遇到的形
*args ,
这时
*args
收集,
成元祖的
第一
元素
3.
这时
实参
经传递
,形
参还
有一
认参数
gender='
'
造成了正常
传递
的不正



关键字参数
错误

[Python]
纯文本查看
复制代码
1
2
3
def sex(name, age, gender='女', *args, **kwargs):
print(name, age, gender, args, kwargs)
sex('elijah', 18, gender='男',45,name1='test')

[Python]
纯文本查看
复制代码
1
2
3
def seven(name, age, gender='女'):
print(name, age, gender)
seven(age=18,gender= '男',name='elijah')
注意
传递给
*args
实参
位置之前不可使用
关键
参数

1.
就相
**kwargs
不可放在
*args
之前

2.但是放在 *args之后,并且存在 **kwargs 时,就会被 **kwargs 收集;**kwargs不存在,就会报错
3.
所以
关键
参数给
位置
参数
或者默
认参数传值
是最好不要
不定
长传参
相配合





不定长传参
位置:
*args
在前,
**kwargs
在后
它们分别接收多值并转换成元祖和字典,在这就不讲关于它们的操作,用
元祖和字典的方法操作
即可;在这只提及几个知识点。

知道
*args
**kwargs
把收集的
参数
合成元祖和字典,知道了
这个
之后那,
就可以直接
不定
长参数传递
元祖和字典,就不需要收集合成的步
了。

*args: 元祖传入
[Python]
纯文本查看
复制代码
1
2
3
4
5
6
card = ('handsome boy','brilliant')
def eight(a,b):
print(a,b)
eight(*card)
>>>:1 2
元祖传入时,如直接解包,形参需要和元祖的元素一一对应
*args: 多参数类型配合
[Python]
纯文本查看
复制代码
1
2
3
4
def eight(name, age, gender='女', *args, **kwargs):[/align] print(name, age, gender, args, kwargs)
eight('elijah', 18, '男',*('handsome boy','brilliant'))
>>>:elijah 18 男 ('brilliant', 'handsome boy') {}

注意:需要
给传递
的元祖前加
*
,不然
传递
的元祖,再次收集合
成元祖的第一
元素
list,set,tuple
是可相互
转换
的,所以也可以
*args
参数传递

**kwargs: 字典传入

[Python]
纯文本查看
复制代码
1
2
3
4
5
6
dic = {'hobby1':'guitar','hobby2':'sketch'}
def ten(hobby1,hobby2):
print(hobby1,hobby2)
ten(**dic)
>>>:guitar sketch
字典传入的时,如直接解包,形参需要和字典的 key 相同

**kwargs:
多参数类型配合
[Python]
纯文本查看
复制代码
1
2
def nine(name, age, gender='女', *args, **kwargs):[/align] print(name, age, gender, args, kwargs)
nine('elijah', 18, '男',*{'handsome boy','brilliant'},**{'hobby':['guitar','sketch']})
注意
传递
的字典需要加
两个
*

更多技术资讯可关注:itheimaGZ获取