Python中有任何类型的范围解析运算符吗?

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 我不知道怎么

当还有一个同名的局部变量时,有没有办法让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

我不知道怎么做(我也不是专家)。我能想到的两种解决方案是给你的
本地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()