Python培训
400-996-5531
Python函数中,参数总共有5种,分别为:
位置参数
默认参数
可变参数
关键字参数
命名关键字参数
1、位置参数
这是最直观的参数,就拿print()函数来说:
print (x)
括号里的 x 就是位置参数。在所有内置函数(BIF)中,无论是字符串还是数字,只要被用在函数中,都是作为位置参数来使用的。
2、默认参数
有些时候函数中的参数值会非常多,举个例子:
def power (x,n):
s = 1
if n > 0:
n = n-1
s = s * x
return s
这样我们就定义了一个power函数,用来求x的n次方。我们每次输入的时候,两个参数都必须同时填入,否则代码解释器就会报错:
>>> power(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: power() missing 1 required positional argument: 'n'
假如我们操作工作中用得最多的是求x的2次方呢?每次都输入2,手也很累啊。所以,我们可以告诉解释器,这个函数,默认求2次方:
def power (x,n = 2):
s = 1
if n > 0:
n = n - 1
s = s * x
return s
可以看到,我们在函数定义过程中,直接使参数n等于2,也就是默认power函数求2次方了。但是这样并不会导致这个函数从此只能求2次方。默认参数只是在求2次方的过程中简便了输入,想要求n次方,只需要按照原来的power(x,n)格式输入就可以了。
然而默认参数有时候也并不是很好用:
def add_end(L=[]):
L.append('END')
return L
当我们调用默认参数时:
>>> add_end()
['END']
再次调用时:
>>> add_end()
['END', 'END']
>>> add_end()
['END', 'END', 'END']
问题来了,每调用一次,list中都增加一个字符串'END'。原因就在于我们把一个变量L=[]作为了默认参数。每次调用函数,变量L的默认值都会发生改变,也就是增加一个'END'。所以,使用默认参数必须指向不变对象。
3、可变参数
这个迷惑了我好久。可变参数只是意味着参数数量的可变,就好比原本的函数只允许输入固定参数量,多一个少一个都会报错。而可变参数就可以随意输入不同数量的参数。
无论是定义函数时,还是调用函数把list或tuple当作参数,所需要做的也只是在参数名前加上一个*而已。
4、关键字参数
这个和可变参数很容易搞混。可变参数仅意味着参数数量的可变,关键字参数则必须使用带参数名的参数,数量也是可变的。说简单点就是带有参数名的可变参数。
而从形态上来说,可变参数实质上是一个list或tuple;关键字参数是一个dict:
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
其中**kw代表的就是关键字参数,使用案例如下:
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer') name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
5、命名关键字参数
命名关键字参数和关键字参数一样,但命名关键字参数是用来限制关键字参数的名字,即只接受指定的参数名。比如,只接受city和job作为关键字参数:
def person(name, age, *, city, job):
print(name, age, city, job)
这种参数的用法不同于关键字参数,仅需要添加一个*就可以了。*后边的参数被视作命名关键字参数。
命名关键字参数也可以和默认参数组合调用:
def person(name, age, *, city='Beijing', job):
print(name, age, city, job)
5种参数虽然都可以组合调用,但是考虑到函数接口的可理解性,还是不要使用过多的参数组合。
本文内容转载自网络,来源/作者信息已在文章顶部表明,版权归原作者所有,如有侵权请联系我们进行删除!
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved