将值传递给其他模块python

时间:2009-11-14 19:50:49

标签: python

我有两个脚本名称是A.py和B.py

我想知道如何从A.py向B.py发送价值。

有关详细信息,请在脚本末尾运行完成A.py脚本,A.py调用B.py。

我的问题是我必须从A.py向B.py发送一些价值。

任何人都帮我如何将值A.py发送给B.py,所以我可以在B.py中使用一些值。

“我是否正确地假设你想让B.py使用值为

的所有变量

在A.py完成时存在?“

这正是我想要的。我将我的A.py和B.py上传到了pastebin网站。

http://elca.pastebin.com/m618fa852< - A.py

http://elca.pastebin.com/m50e7d527< - B.py

我想使用B.py的xx值,xx值来自A.py。

抱歉,我的英文

3 个答案:

答案 0 :(得分:2)

你的问题不太清楚。

import B
B.methodToExecute(argument)

答案 1 :(得分:1)

我是否正确地假设您希望让B.py使用A.py完成时存在的值的所有变量?

[编辑]

好的,问题是你没有任何变量赋值就不能轻易做到这一点。你想要实现的是向后做的导入声明。通常,如果您在其他模块或脚本中导入模块,导入器(在此示例中为A)可以访问导入器的(B)变量,方法等,但不能向后

A.py

a = 2
print "A.a:", a
import B
print "B.b:", B.b
from B import *
print "b in our namespace:", b

B.py

b = 3

这将打印:

A.a: 2
B.b: 3
b in our namespace: 3

如果你100%确定你想要这个(你为什么不用方法创建一些相关的类,或者只是将方法放在一个大模块中?),你可以从模块B导入模块A,所以如果你修改B.py:

B.py

b = 3
from A import *
print "a in B's namespace:", a

...再次运行它,你会看到一些奇怪的输出,包括双线和所需的a in B's namespace: 2线(所以它的成功率为50%)。关键是如果要导入没有函数和/或模块/类声明的简单脚本,每当Python导入一些内容时,将在Python VM中创建必要的对象和引用,导入的脚本将被执行,因此您可能会遇到麻烦与之前完成的循环导入。使用模块或类,你会更好,因为在那些只有

之后的部分
if __name__ == "__main__":
  ...

将在导入时执行。

或者,此线程中的另一个好主意是调用子进程,但是您需要在命令行上检查变量,而不是直接在脚本的命名空间中检查。

答案 2 :(得分:0)

你的问题可能过于抽象,我真的不知道你需要什么。

一般来说,你要做的就是在你完成A中的所有事情并为B读取之后,你的模块顶部会有import A并调用A中的一个函数您要传递的值。如果B当前正在使用要覆盖的硬编码全局变量,请重构它以使用函数。