使用exec时,全局变量不起作用

2024-10-02 02:32:00 发布

您现在位置:Python中文网/ 问答频道 /正文

每当我用下面的代码片段执行代码时,它都能很好地工作

def set_globvar_to_one():
    global globvarq
    globvarq = 2

def print_globvar():
    print(globvarq)

set_globvar_to_one()
print_globvar()

但是,在我的例子中,我需要使用exec命令执行这个代码段,因为我的代码是动态的。 所以,我试着跟随

def set_globvar_to_one():
    exec(compile("global globvarq","setglobal","exec"))
    exec(compile("globvarq = 2","setglobal","exec"))
def print_globvar():
    eval(compile("print(globvarq)","setglobal","eval")) 

set_globvar_to_one()
print_globvar()

这段代码抛出了以下错误

Traceback (most recent call last):
    print_globvar()
    eval(compile("print(globvarq)","setglobal","eval"))
  File "setglobal", line 1, in <module>
NameError: name 'globvarq' is not defined

如何从一个方法使变量成为全局变量,并在另一个方法中使用相同的变量


Tags: to方法代码defevalglobalone例子
1条回答
网友
1楼 · 发布于 2024-10-02 02:32:00

我不确定您实际想要实现什么,但这符合您的预期:

def set_globvar_to_one():
    exec(compile("global globvarq\nglobvarq = 2", "setglobal", "exec"))


def print_globvar():
    eval(compile("print(globvarq)", "setglobal", "eval"))


set_globvar_to_one()
print_globvar()

相关问题 更多 >

    热门问题