Python中有任何类型的范围解析运算符吗?
当还有一个同名的局部变量时,有没有办法让python解释器专门选择全局变量?(像C++有::运算符) 功能块内的第二条打印语句应显示全局x的值Python中有任何类型的范围解析运算符吗?,python,Python,当还有一个同名的局部变量时,有没有办法让python解释器专门选择全局变量?(像C++有::运算符) 功能块内的第二条打印语句应显示全局x的值 File "/home/karthik/PycharmProjects/helloworld/scope.py", line 7 global x ^ SyntaxError: name 'x' is used prior to global declaration Process finished with exit code 1 我不知道怎么
File "/home/karthik/PycharmProjects/helloworld/scope.py", line 7
global x
^
SyntaxError: name 'x' is used prior to global declaration
Process finished with exit code 1
我不知道怎么做(我也不是专家)。我能想到的两种解决方案是给你的
本地x
(比如xLoc
)起另一个名字,或者把你的全局x
放在参数中,比如:
x=50
def fun(xGlob):
x=20
print("The value of local x is",x)
print("The value of global x is",xGlob)
print("The value of global x is",x)
fun(x)
这是否回答了您的问题?Python没有直接等价于
:
操作符(通常这种事情由点
处理)。要从外部作用域访问变量,请将其指定给不同的名称,以避免对其进行阴影处理:
x = 50
def fun():
x = 20
print(x) # 20
print(x_) # 50
print(x) # 50
x_ = x
fun()
但是如果没有黑客的话,Python当然不是Python了。。。你所描述的事实上是可能的,但我不推荐:
x = 50
def fun():
x = 20
print(x) # 20
print(globals()['x']) # 50
print(x) # 50
fun()
不,没有。为局部变量使用不同的名称。因此,globals()方法基本上列出了编译器加载的全局符号表的所有元素。那么,我们正在访问和更改其中一个元素?
x = 50
def fun():
x = 20
print(x) # 20
print(globals()['x']) # 50
print(x) # 50
fun()