我想我在这里疯了.
url_request = 0
def somefunction():
url_request+=1
if __name__ =='__main__':
somefunction()
Run Code Online (Sandbox Code Playgroud)
给我UnboundLocalError.我在这里错过了什么重要概念?
Mar*_*ers 11
您正在分配一个全局变量,这意味着您需要将其标记为全局变量:
def somefunction():
global url_request
url_request+=1
Run Code Online (Sandbox Code Playgroud)
当您为本地范围中的变量赋值时,它被假定为局部变量,除非您首先使用global语句告诉python.
对于Python 2.7,我们必须使用变量类型:global,local.每个函数都为变量创建自己的本地范围.
从本地范围,您可以不受任何限制地阅读.您还可以调用全局对象方法,以便可以从全局修改变量.但你无法重新分配价值.
看看这段代码:
requests = [1,2,3]
def modify():
requests.append(4)
def redeclare():
requests = [10,20,30]
modify()
print requests
# will give you [1,2,3,4]
redeclare()
print requests
# will give you [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?您无法requests从本地范围重新分配变量,因此解释器会为您创建其他变量 - 在redeclare调用上下文的本地范围内.
关于你的代码......首先,你试图从全局范围重新分配变量.为什么?url_request是int,int是不可变的,所以操作url_request+=1不会改变值,它应该将新值重新赋值给变量名.其次,您没有global为此变量指定标识.所以只有一个解释器选项 - 假设url_request为局部变量.但是......你没有在任何地方声明它的价值......
UnboundLocalError意味着您尝试使用变量值执行操作而不事先声明它.希望这可以帮助您更多地了解Python变量/名称/范围.
| 归档时间: |
|
| 查看次数: |
7373 次 |
| 最近记录: |