[英]Python how to reference variable
在python文件中引用变量时遇到问题。 这是代码:
FG_E = 9
FG_R = 8
START = 7
READY = 9
MC = 3
BRAKE = 5
ERROR = 6
a = 2
b = 3
position = 0
def build_message(signal):
message = position
message = message | (0b1<<signal)
s = bin(message)
s = s[2:len(s)]
s = (16-len(s))*'0' + s
s0 = s[0:len(s)/2]
s1 = s[len(s)/2:len(s)]
s0 = s0[::-1]
s1 = s1[::-1]
s_final = int(s0 + s1, 2)
position = s_final
print bin(s_final)
return s_final
build_message(FG_R)
我得到的错误是:UnboundLocalError:局部变量'位置'引用了berofe分配
有问题的行实际上是position = s_final
函数中的position = s_final
build_message
。
如果不存在,则message = position
将起作用,因为Python解释器会知道您要引用哪个position
变量。
但是在这种情况下,它是模棱两可的,因为您稍后将重新分配给position
( position = s_final
)。
您应该重新考虑代码的设计,或者将global position
添加为build_message
的第一行。 请记住,正如它所说,它将使position
成为全局变量,并且build_message
将在整个代码中的每个position
更改position
的值。
编辑一个快速演示:
global_var = 0
def foo1():
print(global_var)
def foo2():
print(global_var)
global_var = 1
def foo3():
global global_var
print(global_var)
global_var = 1
print(global_var)
foo1()
>> 0
foo2()
>> UnboundLocalError: local variable 'global_var' referenced before assignment
foo3()
>> 0
1
您需要使用global
关键字来访问全局变量。
def build_message(signal):
global position
message = position
如果在函数中使用外部变量,则应该考虑将其作为参数传递,例如:
def build_message(signal,position):
pass
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.