关键字参数和默认值
在大型工程中,一个函数的参数往往有很多,所以记住他们的顺序并不是一件容易的事情,以一下函数为例:
def hello(greeting, name):
print(greeting, name)
>>> hello('Hello', 'world')
Hello world
python中可以提供参数的名称,以简化:
>>> hello(greeting='Hello', name='world')
Hello,world
这样一来,顺序就完全没有影响了。
关键字更厉害的地方在于可以在函数中提供默认值
def hello_1(greeting='Hello', name= 'world'):
print(greeting, name)
>>> hello_1()
Hello world
调用的时候若不提供参数则使用默认值,若提供参数则覆盖默认参数。
收集参数
通常函数中只能提供指定多的参数,但有时提供任意多参数是很有用的。可以采用以下方法:
def print_params(*params):
print(params)
>>> print_params(1, 2, 3)
(1, 2, 3)
参数前的星号将所有值放置在同一个元组中,可以说将值收集起来再使用。星号的意思就是“收集其余的位置参数”。
对关键字的收集可以用 “ ** ”实现,返回的是一个字典:
def print_params_1(**params):
print(params)
>>> print_params(x=1, y=2, z=3)
{'x': 1, 'y': 2, 'z': 3}