函数之参数详解

2021-01-09  本文已影响0人  闲云野鹤_23dd

函数之参数详解

2020-09-25 Reads 4

位置入参

函数调用时,实参默认按位置顺序传递,需要个数和形参匹配。按位置传递的参数,称为:“位置参数”。
形参: 就是方法中声明的参数
实参: 调用方法时传入的参数

`# 方法定义
def str_form1(name,age):
return "我是{},我今年{}岁了".format(name,age)

方法调用

str_form1("小明",18) # 参数必须和定义的时候位置和个数保持一致

错误示范

str_form1("小明")
str_form1("小明",18,8)`

默认参数

方法中 声明了默认参数,调用方法时 不传参就是用默认参数

`def str_form2(name='小红',age=18): # 给age设置默认值18
return "我是{},我今年{}岁了".format(name,age)

str_form2(name="小明") # 未传递小明的年龄,则使用方法定义时给定的默认值`

如果位置参数和关键字参数同时存在,位置参数在前,关键字参数在后:

`def str_form3(name,age=18): # 必须位置参数在前,关键字参数在后
return "我是{},我今年{}岁了".format(name,age)

str_form3("小明",age=18) # 必须位置参数在前,关键字参数在后`

关键字入参

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值

`def str_form4(name,age):
return "我是{},我今年{}岁了".format(name,age)

str_form4(age=18,name="小明") # 传递参数时,使用关键字来指定参数`

</pre>

不定长参数 (可变参数,魔法参数)

不定长参数 分两种情况:

注意: 方法声明不定长参数时,最好param在倒数第一位,param在第二位,如果没有param,那param最好在倒数第一位

例子:

`def foo(name,*args, **kwargs):
print('name =',name)
print('args = ', args)
print('kwargs = ', kwargs)
print('---------------------------------------')

if name == 'main':
foo('ming',1, 2, 3, 4)
foo('ming',a=1, b=2, c=3)
foo(1, 2, 3, 4, a=1, b=2, c=3)
foo('a', 1, None, a=1, b='2', c=3)`

运行结果:

name = ming
args =  (1, 2, 3, 4)
kwargs =  {}
---------------------------------------
name = ming
args =  ()
kwargs =  {'a': 1, 'b': 2, 'c': 3}
---------------------------------------
name = 1
args =  (2, 3, 4)
kwargs =  {'a': 1, 'b': 2, 'c': 3}
---------------------------------------
name = a
args =  (1, None)
kwargs =  {'a': 1, 'b': '2', 'c': 3}
---------------------------------------

强制位置参数 和 强制关键字参数

Python3.8 新增了一个函数形参语法 / 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。
/ :/ 左边的参数必须位置入参

def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)

正确的例子

f(10, 20, 30, d=40, e=50, f=60)

错误的例子

f(10, b=20, c=30, d=40, e=50, f=60) # b 不能使用关键字参数的形式
f(10, 20, 30, 40, 50, f=60) # e 必须使用关键字参数的形式`

上一篇 下一篇

猜你喜欢

热点阅读