如何在Python的exec语句中传递变量
我有两个 Python 文件,分别是 1.py 和 2.py。
**1.py is as**
class A:
def __init__(self):
x = 5
y = 7
NUMBERS = self
fp = open(filePath)
temp = fp.read()
exec(temp)
fp.close()
ADD_METHOD()
**2.py is as**
def ADD_METHOD():
print NUMBERS.x + NUMBERS.y
我的问题是,为什么 2.py 文件里能使用 NUMBERS 这个变量。这个例子是为了更好地说明问题,我知道可以通过导入模块来解决,但我需要用 exec() 方法来实现,那我该怎么在 2.py 文件中获取 NUMBERS 呢?是需要把它作为参数传给 exec,还是有其他的方法?
任何帮助都非常感谢!
2 个回答
0
我不太确定你具体需要什么,但我有一个解决你简单例子的办法,符合你的要求。
# 1.py
...
os.execl( "2.py", str( NUMBERS.x ), str( NUMBERS.y ) )
# 2.py
from collections import namedtuple
A = namedtuple( "A", "x y" )
NUMBERS = A( x=sys.argv[1], y=sys.argv[2] )
...
2
如果这两个文件都是你自己写的Python文件,为什么不在2.py
里创建一个函数,然后在1.py
中导入并调用呢?这样做会更简单、更干净。而且这样可以避免创建一个新的进程。你可以写成这样:
# **1.py is as**
from 2 import ADD_METHOD
class A:
def __init__(self):
x = 5
y = 7
ADD_METHOD(x, y)
# **2.py is as**
def ADD_METHOD(x, y):
print x + y
注意,最好给1.py
和2.py
起个更好的名字,以免以后搞混哦;)