如果你有一个文件中的方法集合,有没有一种方法可以将这些文件包含在另一个文件中,但是不带任何前缀(即文件前缀)调用它们?
因此,如果我有:
[Math.py] def Calculate ( num )
怎么说呢:
[Tool.py] using Math.py for i in range ( 5 ) : Calculate ( i )
如果你使用:
import Math
那么你就可以使用数学的函数,但是你必须学习数学。计算,所以这显然是你不想要的。
如果您想导入模块的函数而不需要为它们加上前缀,那么您必须显式地为它们命名,比如:
from Math import Calculate, Add, Subtract
现在,您可以仅通过它们的名称来引用 Calculate、 Add 和扣除。如果要从 Math 导入所有函数,请执行:
from Math import *
但是,在使用内容不确定的模块时,应该非常小心
您需要像下面这样导入另一个文件:
如果您不想在 Calculate函数前面加上模块名,那么可以这样做:
Calculate
from Math import Calculate
如果要导入模块的所有成员,请执行以下操作:
编辑: 这是一个很好的章节 from 深入巨蟒,在这个主题上进行了更深入的讨论。
只需写下“ 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()))
我发现 Python 检查模块非常有用
例如 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 ()将返回控制台或脚本 _ < em > name _,而执行 test.dostuff ()将返回 python 模块名称。
我要强调评论中的一个答案,这个答案对我很有用。正如 mikey 所说,如果您希望在‘ include’的调用程序的作用域中包含文件中的变量,只需将其作为普通 python 插入即可。它的工作原理类似于 PHP 中的 include 语句。在 Python 3.8.5中工作。
第一个选择
import textwrap from pathlib import Path exec(textwrap.dedent(Path('myfile.py').read_text()))
第二个选择
with open('myfile.py') as f: exec(f.read())
我更喜欢选择 # 2,并一直在使用它在我的网站开发。
这很简单: 你可以这样做:
def run_file(path): return exec(open(path).read()); run_file("myfile.py");