从不同的文件中调用具有相同名称的函数

时间:2018-06-15 00:30:25

标签: python

是否可以拥有一个包含python脚本的文件夹,它们都包含相同的方法名称。并有一个运行每个脚本函数的主python脚本。请注意,它们运行的​​函数名称相同但脚本不同。

这是为了创建一个运行每个任务的框架。每个任务都将具有相同的方法名称。主python将抓住每个任务并运行它。

文件布局:

master.py
tasks/
    task1.py
    task2.py

task1.py:

def task:
    print("hello")

task2.py:

def task:
    print("world")

注意:我不知道我可以完成多少任务

3 个答案:

答案 0 :(得分:3)

在名为tasks的{​​{1}}目录中创建一个新文件,然后输入以下内容:

__init__.py

如有必要,您可以动态生成所有模块名称的列表,但该变量必须命名为__all__ = ['task1', 'task2']

然后,在__all__

master.py

这是在Python项目中的目录中打包多个模块的首选方法。

答案 1 :(得分:0)

import task1
import task2

task1.task()
task2.task()

或者...

import task1 as task1_new_name
import task2 as task2_new_name

task1_new_name.task()
task2_new_name.task()

或者...

from task1 import task as task1 # or some other name
from task2 import task as task2 # or some other name

task1()
task2()

或......(请永远不要这样做)

exec("class task1:" + ("\n\t".join(open("task1.py").read().split("\n")))
exec("class task2:" + ("\n\t".join(open("task2.py").read().split("\n")))

task1.task()
task2.task()

编辑:

您可以使用exec功能动态执行此操作。

for filename in filenames:
    exec("import " + filename)
    exec(filename + ".task()")

答案 2 :(得分:-1)

导入master.py时,只需导入模块,然后从中调用该函数。

master.py

import task1 
import task2

task1.task()
task2.task()

task1.py

def task(): 
    print("hello")

task2.py:

def task(): 
    print("world")