PyN*_*bie 1 python parameters dictionary function
今天早些时候,我问了一个问题, 关于传递字典值的函数.虽然我现在明白如何完成我想要完成的事情,但为什么问题(未被问到)从未得到回答.所以我的跟进就是为什么我不能
def myFunction(newDict['bubba']):
some code to process the parameter
Run Code Online (Sandbox Code Playgroud)
是因为解析器规则不允许这样做吗?我用Google搜索+ Python +函数+"允许参数",但没有找到任何有用的信息,所以我会感激任何信息.
我过于简单化了.我有一个结构相似的字典
myDict={outerkey1:(innerkey1:value,innerkey2:value,. . .innerkeyn:value),outerkey2:(innerkey1:value,innerkey2:value,. . .innerkeyn:value),. . .}
Run Code Online (Sandbox Code Playgroud)
正如我所说,我知道如何做我想要的 - 我得到了一个非常有用的答案.但我开始想知道为什么
def myFunction(outerkey,myDict[outerkey]):
Run Code Online (Sandbox Code Playgroud)
给出了一个语法错误,我发现它必须是一个解析问题.
是的,解析器将拒绝此代码.
参数列表用于函数定义,以将函数内的标识符绑定到在调用时从外部传入的参数.
由于newDict['bubba']它不是有效的标识符,因此没有任何意义 - 您需要将其作为调用参数而不是函数参数提供,因为函数参数只能是标识符.
因为您似乎对正式语法感兴趣,所以这里是相关部分:
funcdef ::=
[decorators] "def" funcname "(" [parameter_list] ")"
":" suite
parameter_list ::=
(defparameter ",")*
(~~"*" identifier [, "**" identifier]
| "**" identifier
| defparameter [","] )
defparameter ::=
parameter ["=" expression]
identifier ::=
(letter|"_") (letter | digit | "_")*
Run Code Online (Sandbox Code Playgroud)
实际上,您尝试用作标识符的构造是订阅:
subscription ::=
primary "[" expression_list "]"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2143 次 |
| 最近记录: |