第7篇,参数
2017-12-01 本文已影响9人
ZYiDa
默认参数值
# 默认参数值
def default_value(m,n=10):
print(m*n)
default_value('*haha*\n',5)
default_value('test\n')
输出
*haha*
*haha*
*haha*
*haha*
*haha*
test
test
test
test
test
test
test
test
test
test
Process finished with exit code 0
如上,我们可以在定义函数时通过=
来给参数设定默认值,这个默认值是不可改变的。在调用函数时,如果没有传递值,就会使用默认值。
不过下面的情况需要注意
def default_value(m=10,n)
,这种设置默认值的方式是无效的,但def default_value(m,n=10)
就是有效的。这是因为值是按参数所在位置依次分配的。只有那些位于参数列表末尾的参数才能被赋予默认值,即在函数的参数列表中拥有默认参数值的参数不能位于没有默认参数值的参数之前
关键字参数
# 关键字参数
def keyword_arguments(a,b=10,c=11):
print('a = ',a,',b = ',b,',and c = ',c)
keyword_arguments(7,8,9)
keyword_arguments(7,8)
keyword_arguments(7)
keyword_arguments(a=100,c=123)
keyword_arguments(c=101,b=102,a=103)
输出
a = 7 ,b = 8 ,and c = 9
a = 7 ,b = 8 ,and c = 11
a = 7 ,b = 10 ,and c = 11
a = 100 ,b = 10 ,and c = 123
a = 103 ,b = 102 ,and c = 101
Process finished with exit code 0
如上例子,
- 当函数有很多参数,而我们又只希望对其中的一部分参数进行指定,我们可以使用命名(关键字)而不是参数的位置来指定函数中的参数。
- 这样做,我们可以不用考虑参数的顺序,同时在其它参数都具有默认值的情况下,我们可以只对我们希望赋予的参数进行赋值。
可变参数
请看下面的例子
# 可变参数
def variable_parameters(a=5,*numbers,**phonebook):
print('a = ',a)
# 遍历元组中的所有项目
for single_part in numbers:
print('single_part = ',single_part)
# 遍历字典中的所有项目
for first_part,second_part in phonebook.items():
print(first_part,second_part)
variable_parameters(10,1,2,3,Tom=233,Jerry=322,Mike=211)
输出
a = 10
single_part = 1
single_part = 2
single_part = 3
Tom 233
Jerry 322
Mike 211
Process finished with exit code 0
当我们希望函数中 参数的数量是任意数量可变的时候,可以采取上面的方式。
当我们声明一个如*param
的星号参数时从此处开始到结束的所有位置参数都将被手机并汇集成一个到名为param
的元组(Tuple);
当我们声明一个如**param
的双星号参数时,从此处开始一直至结束的所有关键字参数都将被收集并汇集为一个名为param
的字典(Dictionary)。