2014-03-26 46 views
2

雖然工作在Python我發現我的IDE(蝕)提出了幾個方法,這些方法似乎是相同的一個GAE項目:GAE API中'重複'函數的用途是什麼?

mail

我要使用這個API來發送電子郵件和according to the docssend_mail應該用於此。然而,當我在日食中看到SendMail時,我開始懷疑是否其中一個已被棄用,於是我去搜索了有關這方面的信息。

我碰到了the page that documents the functions that the mail api offers並注意到SendMail沒有包含在那裏,我發現這很奇怪。

我做下一件事就是檢查source code for the mail api對於任何能告訴我更多關於這一點,有(線376),我發現:

def send_mail(sender, 
      to, 
      subject, 
      body, 
      make_sync_call=apiproxy_stub_map.MakeSyncCall, 
      **kw): 
    """Sends mail on behalf of application. 

    Args: 
    sender: Sender email address as appears in the 'from' email line. 
    to: List of 'to' addresses or a single address. 
    subject: Message subject string. 
    body: Body of type text/plain. 
    make_sync_call: Function used to make sync call to API proxy. 
    kw: Keyword arguments compatible with EmailMessage keyword based 
     constructor. 

    Raises: 
    InvalidEmailError when invalid email address provided. 
    """ 
    kw['sender'] = sender 
    kw['to'] = to 
    kw['subject'] = subject 
    kw['body'] = body 
    message = EmailMessage(**kw) 
    message.send(make_sync_call) 


SendMail = send_mail 

什麼引起我注意的是底線

SendMail = send_mail 

結論:它們是相同的。通過不同名稱提供兩次相同功能的原因可能是什麼?

我搜索了一下,試圖找到一個原因,你爲什麼要這樣做,但我找不到任何東西。儘管我顯然不是專家,但似乎沒有增加任何價值。

+0

這是一個很好的問題 - 我在google apis上看到過很多。我推測這只是提供了2種編碼風格,但有興趣知道是否還有其他原因。 –

回答

2

我懷疑這只是Google內部風格與公衆不同的一個例子。在內部,Python風格指南爲所有函數和方法以及類強制執行CamelCase(不知道爲什麼)。在外部,他們遵循PEP8關於函數lower_case_with_underscore的建議。這種別名只是從一種風格轉換爲另一種風格。

+1

你能告訴我你在哪裏找到這些信息嗎?我想我可以在這裏http://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Naming閱讀它,但它說使用蛇的情況下的函數名稱。 –

+0

我通過之前在Google工作的方式找到了它,並具有所謂的「Python可讀性」,這意味着我信任根據內部樣式指南編寫Python。 (儘管我沒有在這些代碼上工作,所以我只是假設這就是重複的原因。) –

+0

儘管我無法找到任何有關這方面的文檔,但我認爲,我會得到比以前使用Python的員工更好的答案,所以我會接受它:-) –

相關問題