|
Python for experienced programmers |
2.3. 可选和定名参数
Python允许函数参数拥有缺省值;如果函数不带参数调用,参数就得到它的缺省值。而且,参数可以通过使用指定参数名(译注:此后译作定名参数)以任何次序使用。在SQL
Server Transact/SQL中的存储过程可以做到这点,如果你是一个SQL Server脚本的头头,你可以跳过这部分。
例 2.6. help, 一个有两个可选参数的函数
def help(object, spacing=10, collapse=1):
spacing 和 collapse 是可选的,因为它们拥有定义了的缺省值。object 是必须的,因为它没有缺省值。如果只使用一个参数来调用
help,spacing 缺省为 10 且 collapse 缺省为 1。如果用两个参数调用
help,collapse 仍然缺省为 1。
假定你想要给 collapse 指定一个值,但是想接受 spacing 的缺省值。在大多数语言中,可能很不幸,因为你将不得不使用三个参数来调用函数。但在Python中,参数可以通过名字以任意顺序被指定。
例 2.7. help 的合法调用
help(odbchelper)
help(odbchelper, 12)
help(odbchelper, collapse=0)
help(spacing=15, object=odbchelper)
|
只用一个参数,spacing 得到它的缺省值 10
且 collapse 得到它的缺省值 1。 |
|
使用两个参数,collapse 得到它的缺省值 1。 |
|
这里你明确指明了 collapse 参数,且给定了它的值。spacing
仍然得到它的缺省值 10。 |
|
甚至必须的参数(象 object,它没有缺省值)可以被定名,并且定名参数可以以任意顺序显示。 |
这些看上去非常累,除非你意识到参数不过是一个字典。“通常”的不使用参数名字的函数调用方式只是一个简写,Python按照函数声明中所指定的顺序来将参数值与参数名匹配起来。并且大多数情况,你会按“通常”的方式来调用函数,但是如果你需要总是可以有额外的灵活性。
|
要调用一个函数唯一要做的就是必须为每个必须的参数指定一个值(多多少少);以何种方式和顺序来指定就是你的事了。 |