2024-04-20 04:37:59 发布
网友
我想我要疯了。
url_request = 0 def somefunction(): url_request+=1 if __name__ =='__main__': somefunction()
给我一个未绑定的本地错误。我遗漏了什么重要的概念?
您要分配给全局变量,这意味着您需要将其标记为全局变量:
def somefunction(): global url_request url_request+=1
当您在本地作用域中赋给变量时,除非您首先使用global语句告诉python其他情况,否则假定它是本地变量。
global
对于Python2.7,我们需要变量的类型:全局的,局部的。每个函数都为变量创建自己的局部作用域。
在本地范围内,您可以不受任何限制地阅读。还可以调用全局对象方法,这样就可以从全局修改变量。但不能重新分配值。
看看这个代码:
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]
怎么了?无法从本地作用域重新分配requests变量,因此解释器会为您创建redeclare调用上下文的本地作用域中的其他变量。
requests
redeclare
关于你的密码。。。首先,尝试从全局范围重新分配变量。为什么?url_request是int,int是不可变的,因此操作url_request+=1不会更改值,它应该将新值重新分配给变量名。其次,您没有为这个变量指定global标识。所以解释器只有一个选项——假设url_request为局部变量。但是。。。你没有在任何地方声明它的价值。。。。
url_request
int
url_request+=1
UnboundLocalError意味着您尝试使用变量值执行操作,而不在之前声明它。希望这将帮助您了解更多关于Python变量/名称/作用域的信息。
UnboundLocalError
您要分配给全局变量,这意味着您需要将其标记为全局变量:
当您在本地作用域中赋给变量时,除非您首先使用
global
语句告诉python其他情况,否则假定它是本地变量。对于Python2.7,我们需要变量的类型:全局的,局部的。每个函数都为变量创建自己的局部作用域。
在本地范围内,您可以不受任何限制地阅读。还可以调用全局对象方法,这样就可以从全局修改变量。但不能重新分配值。
看看这个代码:
怎么了?无法从本地作用域重新分配
requests
变量,因此解释器会为您创建redeclare
调用上下文的本地作用域中的其他变量。关于你的密码。。。首先,尝试从全局范围重新分配变量。为什么?
url_request
是int
,int
是不可变的,因此操作url_request+=1
不会更改值,它应该将新值重新分配给变量名。其次,您没有为这个变量指定global
标识。所以解释器只有一个选项——假设url_request
为局部变量。但是。。。你没有在任何地方声明它的价值。。。。UnboundLocalError
意味着您尝试使用变量值执行操作,而不在之前声明它。希望这将帮助您了解更多关于Python变量/名称/作用域的信息。相关问题 更多 >
编程相关推荐