python字符串和变量

时间:2012-11-24 05:05:43

标签: python string variables

Python中是否有其他方法可以将字符串更改为变量? 例如,我有一些名为button1,button2,button3等的变量。我想在循环中对它们进行操作。如果我不想使用eval,还有其他合适的东西吗?

3 个答案:

答案 0 :(得分:1)

globalslocals,它们返回当前命名空间的字典映射。

e.g:

a = 1
print globals()['a']  #1
如果变量是在模块级别定义的,则应使用

globalslocals应该用于其他所有内容。在你的情况下,我认为locals()['button1']可以解决问题。


话虽如此,将按钮放在字典中可能是个更好的主意。

答案 1 :(得分:0)

这不是你问的问题,但是有什么问题:

  for btn in (button1, button2, button3):
      do_something(btn)

答案 2 :(得分:-1)

globals()locals()函数返回可用于直接操作全局变量和局部变量的字典:

# sets the global variable foo (in the scope of the module) to 1
# equivalent to
#   foo = 1
# outside a functions
globals()['foo'] = 1

# gets the local variable bar (in the scope of the current function)
# equivalent to
#   print bar
# inside a function
print locals()['bar']

当您在函数之外使用locals()时,它等同于使用globals()

如果您想操纵对象的属性,可以改为使用getattr(obj, name)setattr(obj, name, value)

# equivalent to
#   print foo.x
print getattr(foo, 'x')

# equivalent to
#   foo.x = 45
setattr(foo, 'x', 45)

编辑:正如DSM指出的那样,使用locals()无法可靠地用于在函数中设置变量值。不管怎样,只需将所有按钮包含在单独的字典中也会更加明智。