Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中如何在执行语句中传递变量_Python - Fatal编程技术网

在python中如何在执行语句中传递变量

在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)

我有两个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文件中可用。 这是一个更好地理解问题的例子,我知道我可以通过导入模块来实现这一点,但问题是我必须使用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)”应该是statement
exec
,它不接受文件名,所以没有帮助。fp=open(2.py)temp=fp.read()fp.close()exec(temp)我们现在可以这样做吗