>>> def foo(bar):
... def put():
... bar = bar + ['World']
... print(', '.join(bar))
... put()
...
>>>
>>> foo(['Hello'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in foo
File "<stdin>", line 3, in put
UnboundLocalError: local variable 'bar' referenced before assignment
因为您只讨论嵌套函数,而不是闭包,除非您有特定的理由将其嵌套,否则我建议在模块范围中定义每个函数:
如果出于某种原因确实需要嵌套它,那么最好显式地传入
bar
。但是,如果您确实认为需要嵌套,请先询问您的推理;很有可能您不需要不同之处在于,在第一种情况下,bar变量在父函数的作用域中,可以在子函数中使用,除非您对其进行赋值(这种情况类似于在函数中使用
global
变量)。示例-在本例中,如果要使用} 关键字,例如-
bar
并将其赋值,则需要使用^{而在第二个函数中,bar是
put()
函数的局部变量(因为它是函数的一个参数),可以在没有上述UnboundLocalError
的情况下赋值,例如-我更喜欢像在第二种情况中那样显式地传递所需的参数。你知道吗
相关问题 更多 >
编程相关推荐