我是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/