64.关键字参数和默认值
先举个例子:
def Hello_1(name,gets):
print("{},{}".format(name,gets))
>>> name='hello'
>>> gets='world'
>>> Hello_1(name,gets)
hello,world
-------------
def Hello_2(gets,name):
print("{},{}".format(gets,name))
>>> gets='hello'
>>> name='world'
>>> Hello_2(gets,name)
hello,world
可以看出这个两个函数的功能是相同的,只是参数的顺序是相反的;但是当参数很多的时候,这样就很难记住了,为了简化,可以指定名称。
def Hello_1(name,gets):
print("{},{}".format(name,gets))
>>> Hello_1(gets='world',name='hello')
hello,world
>>> Hello_1(name='hello',gets='world')
hello,world
>>> Hello_1(name='world',gets='hello')
world,hello
这样指定的名称的参数称为关键字,虽然输入量多了,但是参数的作用更加的清晰明了。
举个例子1:
def Hello_3(name='hello',gets='world'):
print("{},{}".format(name,gets))
>>> Hello_3()
hello,world
>>> Hello_3(gets='tom')
hello,tom
>>> Hello_3(name='join',gets='tom')
join,tom
举例子2:
def Hello_4(first,name='hello',gets='world'):
print("{},{},{}".format(first,name,gets))
>>> Hello_4('one')
one,hello,world
>>> Hello_4('one','tom')
one,tom,world
>>> Hello_4('one','tom','join')
one,tom,join
>>> Hello_4('one',name='you')
one,you,world
>>> Hello_4()
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
Hello_4()
TypeError: Hello_4() missing 1 required positional argument: 'first'
结论:可以看出这样设置有很大的优点,但是如果参数没有指定的默认值,则会发生错误。