如何动态定义函数?

发布于 2021-01-29 15:07:03

我有这样的功能:

def activate_field_1():
   print 1

def activate_field_2():
   print 2

def activate_field_3():
   print 3

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

关注者
0
被浏览
69
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

    >>> 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
    ...
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看