这两天看了看Python,觉得要做一下笔记,其他方面没什么难点,但看了函数的参数那一块儿之后发现还是要理清楚的,因此从函数参数开始写。
函数的参数
位置参数
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
这段代码中x和n是两个位置参数,传入值按照位置赋值给x和n。
默认参数
当只传入一个参数时,会导致另一个参数为空而报错,因此需要有一个默认值。
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
当只传入x一个参数时,那么就是计算平方值。
注意
- 必选参数在前,默认参数在后。
- 有多个默认参数时,可以按顺序提供参数;也可以指明参数名称和值,如name=‘tian’,其他参数使用默认参数。
- 定义参数时默认参数必须指向不变对象
可变参数
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
这个参数numbers就是可变参数,可以传入1个、2个到任意个,还可以是0个参数。
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
*nums表示把这个list的所有元素输入,然后进行计算。
关键字参数
可变参数允许传入0个或任意个参数,可变参数会组装成tuple。关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
这个函数中kw就是关键字参数
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
与可变参数类似,extra把extra的所有元素传到了参数kw中,且对kw的修改不会影响函数外的extra。
命名关键字参数
- 用*限制
def person(name, age, *, city, job):
print(name, age, city, job)
这样city和job必须传入并且是以city=''和job=''的形式。
2.已有可变参数
def person(name, age, *args, city, job):
print(name, age, args, city, job)
那么不需要再加*了
网友评论