Я пытаюсь динамически создавать функции на лету или создавать функции программно в python и зацикливаюсь на этом.
def test(a,b):
print(a)
#Result:
def test(a,b,c):
print(a)
print(b,c)
Я пытаюсь это сделать с помощью модуля AST и не могу понять Синтаксис AST для функции. Я понимаю, что детали функции могут быть получены с помощью functionname.__code__.xxx. Но я не смогу вносить изменения, поскольку он доступен только для чтения. Вот что я пытаюсь:
- Я пытался получить дамп AST вышеупомянутой функции, но он не сработал.
- Попытка получить строковую версию определения функции (не удалось найти ссылку )
Я также попробовал следующее, но чувствую, что это может быть проблемой где-то, например, когда происходит переназначение, которое делает его локальным:
def tests(a,b):
print(a,b)
def mytest(c):
print(a,b,c)
return mytest
def tests(a,b):
print(a,b)
def mytest(c):
print(a,b,c)
a = 10 # this will become local variable
return mytest
Я нахожусь на python 3.x
Любая помощь или любой другой более простой способ?