我是python新手,我使用一个全局变量来轻松控制我的设计,特别是调试。
这是我的代码:

hidNow = -1
def loginFromSql(br, n=0):
    global hidNow
    print hidNow
    hidNow = 5566
    print hidNow
print(hidNow)

我直接用“from myModule import*”运行python
在调用函数之前,print hidNow得到的结果是-1,但它仍然是-1,甚至调用了函数。。。。
这是python中的一个bug吗?我使用的是Python2.7.5
谢谢!

最佳答案

如果执行from myModule import *,则在执行导入的位置创建一个名为hidNow的变量。这个新变量与hidNow内部的myModule分开。它们最初具有相同的值,但从hidNow内部为myModule分配新值不会更改已导入的值。
一种解决方案是不要使用*导入。取而代之的是:

import myModule
print myModule.hidNow
myModule.loginFromSql()
print myModule.hidNow # will change

(这是我认为你在问的问题,但是你的问题和代码不清楚,所以如果这不是你想要的,请编辑并更正。)
您应该考虑一下为什么要使用全局变量来存储这些信息。全球变量是脆弱的。

关于python - 为什么更改全局变量的值不生效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19667744/

10-12 16:51