如何访问模块内的所有全局变量(我不是他们提前做的那些人)?
例如
文件m.py:
def a(s):
exec('print '+s)
主要代码:
import m
x=2
m.a('x*2')
答案 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)