Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从同一目录中的所有模块导入和调用相同的函数_Python_Function_Import_Python Import - Fatal编程技术网

Python 从同一目录中的所有模块导入和调用相同的函数

Python 从同一目录中的所有模块导入和调用相同的函数,python,function,import,python-import,Python,Function,Import,Python Import,我在script2.py,script3.py,script4.py中有def myfunc()。在script1.py中,我想从script2、script3和script4调用myfunc 在script1.py中,而不是冗长地列出: from script2.py import myfunc myfunc() from script3.py import myfunc myfunc() from script4.py import myfunc myfunc() 是否有一种方法可以

我在
script2.py
script3.py
script4.py
中有
def myfunc()。在
script1.py
中,我想从script2、script3和script4调用
myfunc

script1.py
中,而不是冗长地列出:

from script2.py import myfunc 
myfunc()
from script3.py import myfunc 
myfunc()
from script4.py import myfunc 
myfunc()

是否有一种方法可以从同一目录中的所有脚本导入
myfunc

您可以使用
\uuuu import\uuuu
函数在循环中调用函数

for i in range(2, 5):
    try:
        script_module = __import__("script{}.py".format(i))
        script_module.myfunc()
    except ImportError:
        pass # or do whatever when this fails...

嗯。。。为什么不直接导入scriptN
,然后使用
scriptN.myfunc
进行访问?您的意思是仅仅将文件名的数字(2,3,4)更改为
N
?如果我的文件名称中没有共用前缀,那又如何呢?我确信Mateen的意思是你应该有一系列的
import scriptN
语句,然后你可以通过在每种情况下使用更长的名称来访问每个
myfunc
,例如:
scriptN.myfunc()
@quamrana:这意味着:
import script2,script3,script4
然后
scriptN.myfunc()
?不,如果您导入script2、script3、script4,则需要调用
script2.myfunc()
script3.myfunc()
等。谢谢您的建议。如果我的文件有不同的名称,即没有通用前缀,该怎么办。唯一的共同点是它们位于同一个文件夹中(不同于它们具有相同的功能)。有没有一种方法可以从所有这些名称不同的文件调用函数?当然,只需循环它们的名称,查看如何列出目录。刚刚尝试过这种方法,效果非常好。谢谢但是,可能最好删除
.py
,因为导入python文件不需要编写
.py
扩展名。我添加了问题中的.py扩展名,您可以使用file.py.py,无法知道,所以我只尝试回答问题,不做代码复查。。。我们对此有充分的理由