python学习笔记:函数参数

1. 位置参数:一般的参数

2. 默认参数:    

1 def power(x, n=2):
2     s = 1
3     while n > 0:
4         n = n - 1
5         s = s * x
6     return s

参数里有默认赋值,调用时用power(5)就是平方,如果power(5, 3)就是立方了

如果有多个默认参数,调用时前面用默认参数,后面不是用默认参数,则需要在调用语句中写出“参数名 = 参数值”,比如下面这个情况

1 def enroll(name, gender, age=6, city='Beijing'):
2     print('name:', name)
3     print('gender:', gender)
4     print('age:', age)
5     print('city:', city)

enroll('bob','M',7)这样没有参数名是可以的,city就是用默认参数'beijing',age没有用,enroll('sary','F','hangzhou')这样是错误的,因为'hangzhou'不是age,是city,因此需要这样使用:enroll('sary','F',city='hangzhou'),这样age=6, city='hangzhou'

3. 可变参数

1 def calc(numbers)
2       sum = 0
3       for n in numbers:
4           sum = sum + n * n
5       return sum

如果使用上面这个代码,对于一个list或者tuple输入值,比如[1,2,3],调用的时候需要这么写:calc([1,2,3])或者calc((1, 2, 3)),很麻烦

所以可变参数需要在numbers前加*

1 def calc(*numbers)
2       sum = 0
3       for n in numbers:
4           sum = sum + n * n
5       return sum

这样就可以这样调用了:calc(1, 2, 3)。

对于nums = [1, 2, 3]这个list时,如果用上面这个可变参数,则不能写成calc(nums),需要写成calc(nums[0], nums[1], nums[2])或者calc(*nums)

4. 关键字参数

1 def person(name, age, **kw)
2      print('name: ’, name, 'age: ', age, 'other: ', kw)

**kw是一个dict,调用语句为person('jackson', 30, gender='M', city='beijing')后,结果为name: jackson age:30 other:{'gender' : 'M', 'city' : 'beijing'}

对于extra = {'gender' : 'M', 'city' : 'beijing'}这种已经定义好的dict,可以这么调用:person('jackson', 30, **extra)

5. 命名关键字参数

这个感觉用处不大

原文地址:https://www.cnblogs.com/yingzhongwen/p/8967437.html