如何将外部Python代码包含在其他文件中?
如果你有一个文件中的方法的集合,有没有办法将这些文件包含在另一个文件,但没有任何前缀(即文件前缀)调用它们?
所以如果我有:
[Math.py] def Calculate ( num )
我怎么称呼它是这样的:
[Tool.py] using Math.py for i in range ( 5 ) : Calculate ( i )
您需要将其他文件导入为这样的模块:
import Math
如果你不想以模块名称为你的Calculate
function的前缀,那么做到这一点:
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模块的名称。