【问题标题】:how to return multiple variations of function in python [duplicate]如何在python中返回函数的多种变体[重复]
【发布时间】:2017-12-03 04:31:08
【问题描述】:

我怎样才能写出下面的代码,让不是所有的功能都是一样的?

>>> def g(x):
...     l = []
...     for i in range(1,10):
...         def f(x):
...             return x + i
...         l.append(f)
...     return l

这个想法应该是 g 返回一个包含 9 个函数的列表,其中第一个函数返回 x+1 第二个 x+2 等等。但是,由于在 python 中一切都是对象,所有以前的函数定义都将被覆盖。我该如何解决这个问题?

【问题讨论】:

  • 我认为这里的问题是 i 是最终值,而不是函数。
  • 所有函数都是相同的:它们都添加了i 的当前值。而当你调用函数时,i 的当前值为 10。

标签: python


【解决方案1】:

这不会覆盖最终列表中的函数

def make_f(x, i):
    def f():
        return x + i
    return f


def g(x):
    l = []
    for i in range(1, 10):
        l.append(make_f(x, i))
    return l

for f in g(10):
    print f()

11
12
13
14
15
16
17
18
19

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 2021-01-29
    • 2016-01-12
    • 1970-01-01
    • 2022-12-25
    • 2020-02-20
    • 2016-09-26
    • 2018-05-09
    相关资源
    最近更新 更多