本篇文章主要介绍了"Python学习笔记四Python函数的参数",主要涉及到方面的内容,对于Pythonjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
Python的函数除了正常使用的必选参数外,还可以使用默认参数、可变参数和关键字参数。默认参数基本使用默认参数就是可以给特定的参数设置一个默认值,调用函数时,有...
Python的函数除了正常使用的必选参数外,还可以使用默认参数、可变参数和关键字参数。
默认参数
基本使用
默认参数就是可以给特定的参数设置一个默认值,调用函数时,有默认值得参数可以不进行赋值,如:
def power(x, n=2):
s=1
while n > 0:
n = n - 1
s = s * x
return s
这样调用power(5)时,相当于调用power(5, 2)。
设置默认参数时的注意事项:
一是必选参数必须在前,默认参数在后,否则Python的解释器会报错;
二是如何设置默认参数。当函数有多个参数时,把变化大的参数放在前面,变化小的参数放在后面,变化小的参数就可以作为默认参数。
有多个默认参数时的调用注意事项
如下函数,有多个默认参数:
def enroll(name, gender, age=6, city='Beijing'):
print('name:', name)
print('gender:', gender)
print('age:', age)
print('city:', city)
有多个默认参数时,调用的时候,既可以按顺序提供默认参数,如enroll('bob', 'M', 7),即除了name和gender两个参数外,最后一个参数用在age上,city使用默认值。
也可以不按照定义时的顺序提供默认参数,但是需要把参数名字写上,如enroll('bob', 'M', city='shanghai'),表示age使用默认参数,city使用传入的值。
默认参数必须指向不变对象
默认参数指向可变对象时的坑:
如下函数:
def add_end(L=[]):
L.append('END')
return L
如果正常传入list不会出问题,但是如果一直使用默认参数,会出现以下情况:
>>> add_end()
['END']
>>> add_end()
['END', 'END']
>>> add_end()
['END', 'END', 'END']
出现以上情况的原因是:Python在函数定义的时候,默认参数L的值就已经被计算出来了,即[],因为默认参数也是一个变量,指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就改变了,不再是函数定义时的[]了。
所以默认参数必须指向不可变对象。
上面问题的解决方法为:
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L
可变参数
Python中可变参数的定义方式如下,
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
在参数之前加一个*号,其内部原理是在函数内部,参数收到的是一个tuple,所以函数代码可以完全不变。
如果想把list或者tuple直接传入,可以使用如下方式:
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
关键字参数
关键字参数的定义方式如下: