我试图将字典中的值赋给一个变量,但该变量保持不变。该值是另一个字典。
我用来生成字典的代码可以在这里找到:http://pastebin.com/Q2Hc8Ktp
我自己写的,没有这个问题就进行了测试。
下面是我试图从字典中复制字典的代码片段。
_classes = {}
def populateClasses():
print "Classes Exist"
cp = Preferences(''.join([resource_path,"resources.ini"]))
print cp
_classes = cp.getPreferences()['Classes']
populateClasses()
print _classes当我打印cp时,它显示了正确的数据,但当我尝试打印_classes时,它只显示{}
注意:从函数内部打印_classes可以正常工作,但不能从函数外部打印。_classes是在全局范围内定义的
-编辑-
下面是一些示例数据:
[Classes]
Wizard = Arcana, Bluff
Warrior = Endurance, Intimidate
Ranger = Nature, Perception
Bard = Heal, History发布于 2013-05-12 14:27:14
如果要更改全局变量_classes的值,则需要使用global
def populateClasses():
global _classes # <<<<<< THIS
print "Classes Exist"
cp = Preferences(''.join([resource_path,"resources.ini"]))
print cp
_classes = cp.getPreferences()['Classes']如果不这样做,您的方法将创建一个单独的局部变量,也称为_classes。一旦你的方法返回,这个变量就会超出作用域。
发布于 2013-05-12 14:50:36
您可以使用_classes.update(cp.getPreferences()['Classes'])而不是global。
全局变量的规则是,如果对其进行写操作,则需要global关键字,但如果只是访问变量,则不需要该关键字(即使该访问会改变状态)。这就是为什么我上面的建议不需要global语句,而原始代码需要。当您“将列表分配给两个变量”并且不需要global时,可能也会发生这种情况。
https://stackoverflow.com/questions/16504748
复制相似问题