【问题标题】:Python: getting a reference to a function from inside itselfPython:从自身内部获取对函数的引用
【发布时间】:2010-10-25 13:00:53
【问题描述】:

如果我定义一个函数:

def f(x):
    return x+3

我可以稍后将对象存储为函数的属性,如下所示:

f.thing="hello!"

我想从函数本身的代码中执行此操作。问题是,我如何从内部获取对函数的引用?

【问题讨论】:

标签: python function self-reference


【解决方案1】:

同理,用它的名字就行了。

>>> def g(x):
...   g.r = 4
...
>>> g
<function g at 0x0100AD68>
>>> g(3)
>>> g.r
4

【讨论】:

  • 我对输出格式感到困惑,但我认识到代码和答案是可靠的 (+1)。这就是“通常”的 Python REPL 所展示的内容,应该更容易被更多人识别。你用的是什么口译员?
【解决方案2】:

或者使用闭包:

def gen_f():
    memo = dict()
    def f(x):
        try:
            return memo[x]
        except KeyError:
            memo[x] = x + 3
    return f
f = gen_f()
f(123)

恕我直言有点好

【讨论】:

    【解决方案3】:

    如果你想做记忆,你可以使用字典作为默认参数:

    def f(x, memo={}):
      if x not in memo:
        memo[x] = x + 3
      return memo[x]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-18
      • 2013-04-21
      • 2013-10-07
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 2012-10-17
      相关资源
      最近更新 更多