2012-11-15 56 views
0

我有以下代碼:蟒蛇functools.partial哪個函數

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()但我找不到合適的屬性來檢查?

+0

@MartijnPieters。 –

回答

4

partial objectsfunc屬性,這是你想要的:

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

+1,我做了推測它不存在提問者提到的檢查。顯然不是太仔細;) –

+0

謝謝,我的壞,我錯過了在運行inspect.getmembers(myfunc) –

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 
| 
+0

時得到的屬性列表中的這個項目,謝謝這是有幫助的,我一直默認查找在線文檔沒有意識到多少在命令行解釋器中可用。 –