首页 > 解决方案 > 在 from-import 语句中使用 python 函数中的输入

问题描述

我想在文件“a.py”的函数中使用输入(字符串)来指向另一个python代码文件“b.py”。在 b.py 代码中,我有一些功能,我想使用。

我努力了:

b.py.

def function1(x,y):
    s=x+y
    print(s)
    return

function1(2,4)

(b.py 位于 a.py 的子文件夹中,名为 .app.dashapp1)

和 a.py:

def function(func_name):
    name = "app.dashapp1." + func_name
    __import__(name)
    function1(2, 4)
    return

function("b")

当我运行 a.py 时,我最终得到了错误消息:

“NameError:名称'function1'未定义”

:(

会帮我很多。我来自 matlab/R 并且是 Python 的新手(虽然喜欢它)和这个论坛。

谢谢!

标签: pythonfunctionmodulepython-importimporterror

解决方案


建议使用importlib.import_module而不是__import__


a.py

import importlib

def func(name):
        module_str = "dashapp1." + name  # get module str
        module = importlib.import_module(module_str)  # import module from str
        f = getattr(module, "function")  # get function "function" in module
        f(1, 2)  # execute function "function" in module

func("b")

dashapp1/b.py

def function(a, b):
        print("{a} - {b}".format(a=a, b=b))

输出:

$ python3.7 a.py 
1 - 2

推荐阅读