1

我有以下代码:

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()但我找不到合适的属性去检查?

4

2 回答 2

5

partial对象有一个func属性,这是你想要的:

 myfunc = returnAPartial()
 print myfunc.func # <function mysecond at 0x10c918488>
于 2012-11-15T10:27:04.810 回答
1

内部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
 |
于 2012-11-15T10:31:04.053 回答