小编典典

如何动态定义函数?

python

我有这样的功能:

def activate_field_1():
   print 1

def activate_field_2():
   print 2

def activate_field_3():
   print 3

如何定义activate_field_[x]x=1:10,而不打字了他们中的每一个?当然,我宁愿传递一个参数,但是出于我的目的,这是不可能的。


阅读 272

收藏
2021-01-20

共1个答案

小编典典

您是否要在源文件中静态地单独定义它们?那么最好的选择是编写一个脚本来生成它们。

另一方面,如果您希望在运行时使用这些功能,则可以使用更高阶的功能。例如

>>> def make_func(value_to_print):
...     def _function():
...         print value_to_print
...     return _function
...
>>> f1 = make_func(1)
>>> f1()
1
>>> f2 = make_func(2)
>>> f2()
2

您可以生成这些列表并再次在运行时进行存储。

>>> my_functions = [make_func(i) for i in range(1, 11)]
>>> for each in my_functions:
...     each()
...
1
2
3
...
2021-01-20