我发现这个完全令人困惑。以下代码运行良好:
def vendor(title, description):
def validate():
print("in validate, title: ", title)
print("in validate, description: ", description)
convert()
def convert():
print("\nin convert, title: ", title)
print("in convert, description: ", description)
if title == "fedex":
pass
#description = "something else"
validate()
vendor("ups", "stuff")
但是将pass
替换为description = "something else"
这样的重新分配,我得到UnboundLocalError: local variable 'description' referenced before assignment
。如果我取出print("in convert, description: ", description)
程序运行没有错误。
是什么给出的?在分配之前我如何引用描述?此外,如果传递vendor()
“fedex”或其他类似“ups”作为标题似乎并不重要,我仍然会收到错误消息。我将如何做我正在尝试做的事情 - 如果某个条件为True,则重新分配变量(尽管是函数参数)?
提前致谢!