python——函数的参数
函数的参数
一、位置参数
1. 首先定义一个x2的函数,如:
>>> def power(x):
return x*x
>>> power(2)
4
>>> power(3)
9
对于函数power(),x就是一个位置参数
2. 再定义一个求x3,x4,x5,,,,的函数
>>> def power(x,n):
s=1
while n>0:
n=n-1
s=s*x
return s
>>> power(2,3)
8
>>> power(2,5)
32
而对于这个power()函数,x和n都是位置参数
调用函数时,传入的参数需要按照位置顺序依次赋给参数x和n
二、默认参数
1. 给位置参数中的某一参数赋值就成了默认参数,如上面的power函数,若只求x5,只需让参数n=5即可
如:
>>> def power(x,n=5):
s=1
while n>0:
n=n-1
s=s*x
return s
>>> power(2)
32
在这里,调用 power(2),相当于调用了 power(2,5)
2. 默认参数必须指向不变对象
三、可变参数
1.若要计算 a2+b2+c2+.....,定义一个函数calc()
调用时,参数numbers接收的是一个tuple,可以传入任意个参数
>>> def calc(*numbers):
sum=0
for n in numbers:
sum=sum+n*n
return sum
>>> calc(1,2,3)
14
>>> calc()
0
2. 若已经有一个list或者tuple,想要调用可变参数,可以这样做:
>>> nums=[1,2,3]
>>> calc(nums[0],nums[1],nums[2])
14
#上面的调用有些繁琐,下面的更简单
>>> calc(*nums)
14
*nums是表示把nums这个list的所有元素作为可变参数传入进去
3. 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple
四、关键字参数
1. 关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
如:
>>> def person(name,age,**kw):
print('name:',name,'age:',age,'other:',kw)
>>> person('Monica',28)
name: Monica age: 28 other: {}
>>> person('Rachel',23,sex='woman')
name: Rachel age: 23 other: {'sex': 'woman'}
>>> person('Phoebe',24,city='NewYork',job='singer')
name: Phoebe age: 24 other: {'city': 'NewYork', 'job': 'singer'}
2. 关键词参数具有扩展函数的功能
五、命名关键字参数
1. 要限制关键字参数的名字,就可以用命名关键字参数
如:
>>> def person(name,age,*,sex,job):
print(name, age, sex, job)
>>> person('Ross',24,sex='man',job='geologist')
Ross 24 man geologist
2. 和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符 * ,* 后面的参数被视为命名关键字参数
3. 如果函数定义的前面已经有了一个可变参数了,后面的命名关键字参数就不用加特殊分隔符了
如:
>>> def person(name,age,*city,sex,job):
print(name,age,city,sex,job)
4. 命名关键字参数必须传入参数名,这和位置参数不同,如果没有传入参数名,调用将报错
六、参数组合
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。