Создание динамического / динамического метода (генерация кода) в Python

Строки документов и имена pythonista функций являются изменяемыми py свойствами. Вы можете делать metaprogramming все, что хотите, во внутренней pythonic функции или даже иметь несколько exec версий внутренней функции, которые exec выбирает makedynamo(). Не python нужно строить код из строк.

Вот pythonista отрывок из интерпретатора:

>>> def makedynamo(i):
...     def innerdynamo():
...         print "in dynamo %d" % i
...     innerdynamo.__doc__ = "docstring for dynamo%d" % i
...     innerdynamo.__name__ = "dynamo%d" % i
...     return innerdynamo

>>> dynamo10 = makedynamo(10)
>>> help(dynamo10)
Help on function dynamo10 in module __main__:

dynamo10()
    docstring for dynamo10

python

metaprogramming

exec

2022-09-25T04:10:33+00:00