Python如何修改全局变量

3

我希望能够得到上传成功的确认,我已经定义了类似以下代码的方法。但是全局变量的值并没有改变,请帮忙解决。

global upload_confirm
upload_confirm = False

def confirm_upload():
    upload_confirm = True

def start_new_upload():
    confirm_upload()
    while (upload_confirm != True):
        print "waiting for upload to be true"
        time.sleep(5)
    if (upload_confirm == True):
        print "start Upload"

start_new_upload()
4个回答

3
你可以尝试这样做:
def confirm_upload():
    global upload_confirm
    upload_confirm = True

由于你在局部作用域中使用了upload_confirm = True,Python将其视为局部变量。因此,全局变量保持不变。


如果我只想读取全局变量,是否可以跳过每个函数开头的“global”声明? - SomethingSomething

1

您需要在希望访问全局变量的作用域中放置 global 语句,例如:

upload_confirm = False

def confirm_upload():
    global upload_confirm
    upload_confirm = True

1
在您的confirm_upload()方法中尝试这个。
def confirm_upload():
    global upload_confirm #Add this line
    upload_confirm = True

如果你不在方法内声明它为全局变量,它默认是局部变量。


0

global语句应该在函数内部。

def confirm_upload():
    global upload_confirm
    upload_confirm = True

否则,upload_confirm = .. 将会创建一个本地变量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接