def power(x, n=2): #默认参数
s = 1
while n > 0:
n = n - 1
s = s * x
return s
print (power(5)) #默认了n=2,n > 2的其他情况,就必须明确地传 25 #入n,比如power(5, 3)
print (power(5, 2))
25
必选参数在前,默认参数在后
def enroll(name, gender, age=6, city=‘Beijing’):
enroll(‘Adam’, ‘M’, city=‘Tianjin’)
#调用时,传入默认参数可不按顺序但需明确参数名(city)。
def add_end(L=None):
if L is None: #默认参数必须是定值,不能是变量,变量结果会被不断更新
L = []
L.append(‘END’)
return L
print(add_end([‘1’,‘2’]))
[‘1’, ‘2’, ‘END’]
我们在编写程序时,定义默认参数时,如果可以设计一个不变对象,那就尽量设计成不变对象。
def calc(*numbers): #*numbers是定义的可变参数
sum = 0
for n in numbers:
sum = sum + n * n
return sum
nu=[1,2,3]
print(calc(1,2,3)) #print(calc(nu[0],nu[1],nu[2]))也可
14 #11+22+3*3
def calc(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
print(calc([1,2,3]))
14 #11+22+3*3
关键字参数:关键字也可以“可变”
def person(name, age, **kw): #**kw,关键字可变
print(‘name:’, name, ‘age:’, age, ‘other:’, kw)
print(person(‘Michael’, 30))
name: Michael age: 30 other: {}
print (person(‘Bob’, 35, city=‘Beijing’))
name: Bob age: 35 other: {‘city’: ‘Beijing’}
print (person(‘Adam’, 45, gender=‘M’, job=‘Engineer’))
name: Adam age: 45 other: {‘gender’: ‘M’, ‘job’: ‘Engineer’}
def person(name, age, *, city, job): #*后两个参数为指定的可传入参量名
print(name, age, city, job)
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。