函数参数
1. 位置参数
调用函数时,传入的每一个实参都必须关联到一个形参,传入函数的实参顺序按照形参的顺序关联的方法叫做位置参数,每一个传入的实参都是位置参数。
2. 默认参数
默认参数可以减少调用函数的难度,比如定义一个函数学生注册enroll
,在调用函数的时候传进参数name, gender,birthplace,当大部分人都是广州出生的时候可以只传前两个参数,第三个默认为Guangzhou
。要注意的是默认参数必须要指向不变的对象。有默认值的参数放在没有默认值的参数后面。
def enroll(name, gender, birthplace = 'Guangzhou'):
print('name : ' + name)
print('gender : ' + gender)
print('birthplace : ' + birthplace)
3.可变参数
函数的参数个数是不确定的,可以将参数作为一个list或者tuple传进去,比如计算一系列数字的立方和a^3 + b^3 + c^3 + ...
,可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。可以这样实现:
def sum_of_cube(numbers): # number is the name of a list
sum = 0
for n in numbers:
sum += n*n*n
return sum
调用的时候有以下形式
numbers = [1, 2, 3, 4]
#1. 逐一传入
sum_of_cube(numbers[0], numbers[1], numbers[2], numbers[4])
#2. list名传入
sum_of_cube(*numbers) # *list_name
4.关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
在调用函数的时候,将参数名与参数的值联系起来,不会出现参数顺序的错误,如:两次的调用的函数结果一致
def fun(argu1, argu2):
do something
fun(argu1 = 'a', argu2 = 'b')
fun(argu2 = 'b', argu1 = 'a')