如何将外部Python代码包含在其他文件中?

如果你有一个文件中的方法的集合,有没有办法将这些文件包含在另一个文件,但没有任何前缀(即文件前缀)调用它们?

所以如果我有:

[Math.py] def Calculate ( num ) 

我怎么称呼它是这样的:

 [Tool.py] using Math.py for i in range ( 5 ) : Calculate ( i ) 

您需要将其他文件导入为这样的模块:

 import Math 

如果你不想以模块名称为你的Calculatefunction的前缀,那么做到这一点:

 from Math import Calculate 

如果你想导入一个模块的所有成员,那么这样做:

 from Math import * 

编辑: 这是 Dive Into Python的 一个很好的篇章 ,在这个主题上更深入一点。

只需编写“include”命令即可:

 import os def include(filename): if os.path.exists(filename): execfile(filename) include('myfile.py') 

@Deleet:

@bfieck备注是正确的,对于Python 2和3的兼容性,您需要:

Python 2和3:替代1

 from past.builtins import execfile execfile('myfile.py') 

Python 2和3:替代2

 exec(compile(open('myfile.py').read())) 

如果你使用:

 import Math 

那么这将允许你使用math的function,但你必须做Math.Calculate,所以这显然是你不想要的。

如果你想导入一个模块的function,而不必为它们加前缀,你必须明确地命名它们,如:

 from Math import Calculate, Add, Subtract 

现在,您可以引用计算,添加和减去他们的名字。 如果你想从Math中导入所有的函数,那么:

 from Math import * 

但是,对于你不确定内容的模块,你应该非常小心。 如果导入两个包含相同函数名称定义的模块,则一个函数会覆盖另一个函数名称,而您不明智。

我发现python inspect模块非常有用

例如teststuff.py

 import inspect def dostuff(): return __name__ DOSTUFF_SOURCE = inspect.getsource(dostuff) if __name__ == "__main__": dostuff() 

从另一个脚本或Python的控制台

 import teststuff exec(DOSTUFF_SOURCE) dostuff() 

现在dostuff应该在本地范围内, dostuff()将返回控制台或脚本_ name _,而执行test.dostuff()将返回python模块的名称。