首页 > 深入Python > 自省的威力 > 可选和定名参数 | << >> | ||||
diveintopython.org Python for experienced programmers |
Python允许函数参数拥有缺省值;如果函数不带参数调用,参数就得到它的缺省值。而且,参数可以通过使用指定参数名(译注:此后译作定名参数)以任何次序使用。在SQL Server Transact/SQL中的存储过程可以做到这点,如果你是一个SQL Server脚本的高手,你可以跳过这部分。
def help(object, spacing=10, collapse=1):
spacing 和 collapse 是可选的,因为它们拥有定义了的缺省值。object 是必须的,因为它没有缺省值。如果只使用一个参数来调用 help,spacing 缺省为 10 且 collapse 缺省为 1。如果用两个参数调用 help,collapse 仍然缺省为 1。
假定你想要给 collapse 指定一个值,但是想接受 spacing 的缺省值。在大多数语言中,可能很不幸,因为你将不得不使用三个参数来调用函数。但在Python中,参数可以通过名字以任意顺序被指定。
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按照函数声明中所指定的顺序来将参数值与参数名匹配起来。并且大多数情况,你会按“通常”的方式来调用函数,但是如果你需要总是可以有额外的灵活性。
要调用一个函数唯一要做的就是必须为每个必须的参数指定一个值(多多少少);以何种方式和顺序来指定就是你的事了。 |
进一步阅读
自省的威力 |
1 2 3 4 5 6 7 8 9 |
type,str,dir,和其它内键函数 |