下面是文档给出的(python v2.7.3 5.3.4 Calls)
1 call ::= primary "(" [argument_list [","] 2 | expression genexpr_for] ")" 3 argument_list ::= positional_arguments ["," keyword_arguments] 4 ["," "*" expression] ["," keyword_arguments] 5 ["," "**" expression] 6 | keyword_arguments ["," "*" expression] 7 ["," "**" expression] 8 | "*" expression ["," "*" expression] ["," "**" expression] 9 | "**" expression 10 positional_arguments ::= expression ("," expression)* 11 keyword_arguments ::= keyword_item ("," keyword_item)* 12 keyword_item ::= identifier "=" expression
相关摘要:
http://blog.csdn.net/qinyilang/article/details/5484415
上面一篇博客有说到:
参数的次序定义,不用的可以跳过:
1)必须的参数
2)可选的参数
3)过量的位置参数
4)过量的关键字参数
不只在定义时这样,在使用函数时也必须这样。
1 >>> def say(msg, times = 1): 2 print msg*times 3 4 5 >>> say("hello") 6 hello 7 >>> say("hello",5) 8 hellohellohellohellohello 9 >>> say(times = 3, msg="abc") 10 abcabcabc 11 >>> say(msg="abcd", times = 4) 12 abcdabcdabcdabcd 13 >>> say("a", times = 5) 14 aaaaa 15 >>> say(msg = "a", 5) 16 SyntaxError: non-keyword arg after keyword arg
调用时也不可以在关键字参数后面使用非关键字参数。
浙公网安备 33010602011771号