2015-01-13 142 views
3

使用函數作爲字典鍵是否被認爲是不正確的形式?例如:使用函數作爲字典鍵

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

mydict = {add: "hello"} 
+0

你想弄明白嗎? – Hackaholic

+2

'add'不是函數的名稱,它*是*函數。 * name *是字符串「add」,也可以作爲「add .__ qualname__」訪問。 – 5gon12eder

+0

你希望用這個解決的實際問題是什麼? (它真的不明顯,你可能想用'mydict'做什麼。) – NPE

回答

3

是的,這是完全有效的。你可以使用它來存儲一個計數器,函數被調用的次數:

def hi(): 
    print 'hi' 

funcs = {hi: 0} 

funcs # {<function hi at 0x...0>: 0} 

for func in funcs: 
    func()    # call func, prints "hi" 
    funcs[func] += 1 # increment call counter 

funcs # {<function hi at 0x...0>: 1} 
+1

非常感謝:) – ViralSpiral