如果文件中有一组方法,是否可以将这些文件包含在另一个文件中,但不带任何前缀(即文件前缀)调用它们?
所以,如果我有:
[Math.py]
def Calculate ( num )
我怎么这样称呼它:
[Tool.py]
using Math.py
for i in range ( 5 ) :
Calculate ( i )
如果文件中有一组方法,是否可以将这些文件包含在另一个文件中,但不带任何前缀(即文件前缀)调用它们?
所以,如果我有:
[Math.py]
def Calculate ( num )
我怎么这样称呼它:
[Tool.py]
using Math.py
for i in range ( 5 ) :
Calculate ( i )
Answers:
只需编写“ 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()))
from module import *吗?另外,如果您正在调用的文件的主体中有代码,则执行该代码即可。
execfile
compile()比上述提到的其他签名。因此正确的Python 2和3:替代2将是:exec(compile(source=open('myfile.py').read(), filename='myfile.py', mode='exec'))
我发现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模块名称。
from Math import *是不建议这样做。