在python中如何在执行语句中传递变量
我有两个python文件,分别为1.py和2.py在python中如何在执行语句中传递变量,python,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)
**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文件中可用。
这是一个更好地理解问题的例子,我知道我可以通过导入模块来实现这一点,但问题是我必须使用exec()方法来解决问题,并且我可以在2.py文件中获取数字,也就是说,我应该使用exec作为参数或其他方法来传递它
真的有什么帮助吗
谢谢我不确定您到底需要什么,但我有一个解决方案,可以解决您的小例子,它遵循了您的局限性
# 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] )
...
如果这两个文件都是您自己编写的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
更好的名称,以避免以后混淆;) 你是在说exec语句,还是在说os.exec()?我希望这个“exec(2.py)”应该是statementexec
,它不接受文件名,所以没有帮助。fp=open(2.py)temp=fp.read()fp.close()exec(temp)我们现在可以这样做吗