2015-07-21 97 views
4

Python對函數的變量有一個命名約定嗎?我在PEP-8中看不到任何特定的內容(除了命名變量)。作爲函數的變量的Python命名約定

因爲函數是Python中的第一類對象,所以使用_fn後綴或類似的公認的約定?

編輯:已更新,更現實的例子

例子:

def foo_a(): 
    print 'a' 

def foo_b(): 
    print 'b' 

funcs = {'a': foo_a, 'b': foo_b} 

# dynamically select function based on some key 
key = 'a' 
foo_fn = funcs[key] 
+0

我不知道是否有約定,但出於好奇,你爲什麼要這樣做?爲什麼不直接使用'foo'? – That1Guy

+0

請注意,'foo'也是一個「變量」(我認爲術語「名稱」更合適),所以如果您分配或定義它真的沒關係。 – ch3ka

+0

@ That1Guy我給出的原始示例稍微做了些設計。我更新了一個更現實的例子,我必須根據某些邏輯動態分配一個函數。 – Alex

回答

4

確實的Python有是函數的變量的命名約定?

不,它不是,函數是Python中的第一類對象。按照訪問它的方式傳遞函數名稱以便調用。

例如:

def foo(): 
    pass 

foo() # calling 

another_function(foo) # passing foo 

一個最難的事情在編程越來越冠名權,但是。我肯定會用一個更具描述性的名字,可能是一個動詞。例如:

def do_nothing(): 
    pass 

編輯:同樣的協議,但沒有什麼可利用_fn作爲後綴阻止你,如果它使你的代碼更清晰:

def foo_a(): 
    print 'a' 

def foo_b(): 
    print 'b' 

funcs = {'a': foo_a, 'b': foo_b} 

# dynamically select function based on some key 
key = 'a' 
foo_fn = funcs[key] 

foo_fn() # calling 
another_function(foo_fn) # passing 
+0

感謝您的回答,但我剛剛更新了我的問題以添加一個稍微好一點的示例。在你的情況下,你會把這個參數叫做another_function? – Alex

+2

@亞歷山大你所得到的東西越來越成爲一個意見問題,人們將投票結束這一決定。如果問題是,「是否有約定?」那麼答案是「否」。但如果問題是,「我應該怎麼稱呼它?」問題將被關閉。 –

+0

謝謝亞倫,是的,我有興趣知道是否有一個約定。 – Alex

0

功能都只有在Python的什麼子集是可調用對象。 callable只是一個對象類型,例如strlistdict。沒有任何約定爲它們命名,我尤其沒有看到爲什麼這與callable有什麼不同。