如何在python中的exec语句中传递变量

时间:2010-07-16 09:51:32

标签: python

我有两个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 :(得分: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.py2.py更好的名称以避免以后出现混淆;)

答案 1 :(得分: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] )
...