【问题标题】:python functools.partial of which functionpython functools.partial 哪个函数
【发布时间】:2012-11-15 18:39:05
【问题描述】:

我有以下代码:

import functools
import random
import inspect 

def myfirst(a, b):
    return a + b

def mysecond(c, d):
    return c - d

def returnAPartial():  
    myrand = random.randrange(0,2)
    if myrand == 1:
        return functools.partial(myfirst, 1)
    else:
        return functools.partial(mysecond, 2)

我将它加载到 python 交互中并运行:

myfunc = returnAPartial()

我想(以编程方式)检查 myfunc 是否是 myfirst 或 mysecond 函数的部分应用(不是通过计算,示例有点做作)到目前为止,我使用了inspect.getmembers(),但我找不到合适的要检查的属性?

【问题讨论】:

  • @MartijnPieters 感谢更正。

标签: python


【解决方案1】:

partial objects 有一个 func 属性,这就是你想要的:

 myfunc = returnAPartial()
 print myfunc.func # <function mysecond at 0x10c918488>

【讨论】:

  • +1,我假设它不存在,因为询问者提到检查。显然不太小心;)
  • 谢谢,我的错,我在运行inspect.getmembers(myfunc)时得到的属性列表中错过了这个项目
【解决方案2】:

内部help 命令可以给你一些提示:

>import _functools
>help(_functools.partial)
...
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |
 |  args
 |      tuple of arguments to future partial calls
 |
 |  func
 |      function object to use in future partial calls
 |
 |  keywords
 |      dictionary of keyword arguments to future partial calls
 |

【讨论】:

  • 谢谢,这很有帮助,我一直默认在网上查找文档,却没有意识到命令行解释器中有多少可用的文档。
猜你喜欢
  • 1970-01-01
  • 2011-03-16
  • 2016-07-09
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多