Доступ во время выполнения Python к функциям модуля или создание динамических функций - PullRequest
0 голосов
/ 20 июня 2019

Я кодирую приложение Python для командной строки и хочу получить доступ к функции модуля, известной во время выполнения.

Я смотрел на динамическое создание функции во время выполнения из следующего: https://snipplr.com/view/17819/

Но такой подход больше не является действительным.

Вот какой-то нерабочий код:

from domains import *


def execute(name, func, arg1, arg2):
    pass


def main():

    if sys.version_info < (3, 0):
        print("Detected Python 2.x, but code requires Python 3.x. Exiting")

    parser = argparse.ArgumentParser()
    parser.add_argument("-d", "--doms", help="dom name", type=str)
    parser.add_argument("-a", "--arg1", help="arg1 name", type=str)
    parser.add_argument("-b", "--arg2", help="arg2 name", type=str)
    args = parser.parse_args()

    dom = args.doms
    if dom in vars():
        func = vars()[dom].fn1
        execute(dom, func, arg1, arg2)
    else:
        print("{} not implemented!\n".format(dom))


if __name__ == "__main__":
    main()

Первоначально код будет работать, если он помещен в область if__name__ == main . Но однажды сломается в области видимости функции main ().

Будет приветствоваться любой указатель на лучший (более питонический) подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...