,以及所有含有默认值,函数调用时不必要指定的参数。(声明函数时创建的)局部命名空间为各个参数值,创建了一个名字。一旦函数开始执行,即能访问这个名字。
...
...
>>> foo
>>> foo()
Traceback (most recent call last):
TypeError: foo() takes exactly 1 argument (0 given)
>>> foo('world')
hello world
>>> foo('Mr','world')
Traceback (most recent call last):
TypeError: foo() takes exactly 1 argument (2 given)
的时候,他们可以精心选择“最佳“的默认值,所以用户不需要马上面对繁琐的选项。
>>> defmulti_add(const,rate=0.1):
...
return const+const*rate
...
>>> multi_add(100)
110.0
>>> multi_add(100,0.5)
150.0
>>>
...
>>> multi_add(100)
110.0
>>> multi_add(100,0.5)
150.0
>>>
>>> defmulti_add(rate=0.1,const):
...
returnconst+const*rate
...
File "", line 1
SyntaxError: non-default argument follows default argument
>>>
...
...
SyntaxError: non-default argument follows default argument
>>>
示例参数:
>>> defproduct(*args):
...
result=1
...
for arg in args:
...
result*=arg
...
return result
...
>>> product(1,2,3,4)
24
>>> product(5,3,8)
120
>>> product(9)
9
>>>
关键字变量参数
在我们有不定数目的或者额外集合的关键字的情况中,参数被放入一个字典中,字典中键为参
数名,值为相应的参数值。为什么一定要是字典呢?因为为每个参数-参数的名字和参数值--都是成
对给出---用字典来保存这些参数自然就最适合不过了。
>>> def add_person(ssn,surnname,**kwargs):
...
print("SSN = ",ssn)
...
print("surnname=",surnname)
...
for key insorted(kwargs):
...
print("{0}={1}".format(key,kwargs[key]))
...
>>>add_person(83272171,"Luther",forename="Lexis",age=47)
('SSN = ', 83272171)
('surnname=', 'Luther')
age=47
forename=Lexis
>>>
...
...
...
...
...
>>> product(1,2,3,4)
24
>>> product(5,3,8)
120
>>> product(9)
9
>>>
...
...
...
...
...
>>>add_person(83272171,"Luther",forename="Lexis",age=47)
('SSN = ', 83272171)
('surnname=', 'Luther')
age=47
forename=Lexis
>>>
注:本文主要参考《Python核心编程》与《python3程序开发指南》