Использовать ввод в функции python в операторе from-import - PullRequest
2 голосов
/ 06 ноября 2019

Я хочу использовать ввод (строку) в функции в файле "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 (правда, люблю его) и этот форум.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

рекомендуется использовать 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
0 голосов
/ 06 ноября 2019

Вы забыли связать имя function1 с функцией.

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

function("a")
...