Я кодирую приложение 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 ().
Будет приветствоваться любой указатель на лучший (более питонический) подход.