访问python模块中的全局变量

时间:2012-11-21 20:21:08

标签: python module global-variables

如何访问模块内的所有全局变量(我不是他们提前做的那些人)?

例如

文件m.py:

def a(s):
    exec('print '+s)

主要代码:

import m
x=2
m.a('x*2')

3 个答案:

答案 0 :(得分:1)

你想在这里使用eval()而不是exec()。

但是你真正要做的是什么...... eval()和exec()的使用通常都是糟糕的风格,而且通常不需要(特别是在安全考虑方面可怕)。

答案 1 :(得分:0)

您可以通过直接导入特殊__main__模块来破解它。在m.py

def print_global(name):
  import __main__
  print getattr(__main__, name)

在主要模块中:

import m
x = 2
m.print_global('x')  # prints 2

虽然这个例子说明了如何以编程方式使用命名空间,但如果有的话,应该谨慎地做这件事。

答案 2 :(得分:0)

为什么你不能正常使用(好吧,如果你认真地确实有字符串,但是因为它几乎都在代码中,所以看起来你出于某些原因看起来就像是有字符串)

(重写代码):

文件m.py:

def a(s):
    print s

主要代码:

import m
x=2
m.a(x * 2)
相关问题