簡體   English   中英

分支后使用函數args是否更有效(Python)?

[英]Is it more efficient to use function args after branching (Python)?

我有一個帶有幾個參數的函數,其中一個是聯系電話。 提供給該功能的數據用於生成文檔,如果選擇了一個選項,該文檔將立即以內聯方式返回,其中另一個選項將使用聯系電話並生成電子郵件。 在此功能的原始版本中,聯系號碼是在該功能開始時立即解析的,但是我將其移到else塊中,因為這實際上是使用該聯系號碼生成電子郵件的地方,因此我沒有理由創建一個新變量(如果有一半時間未使用)。 下面是一個示例,它是使用Django框架在Python中構建的:

def function(request, object, number=None):
    obj = ObjectItem.objects.get(id=object)
    # Originally number processed here
    if request.method == 'POST':
        if 'inline' in request.POST:
            data = {
                'object': obj,
            }
            return generate_document(data, inline=True)
        else:
            if number:
                contact = '{}'.format(number)
            else:
                contact = obj.contact
            data = {
                'object': obj,
            }
            document = generate_document(data, inline=False)
            return message(document, contact)
    else:
        return redirect()

在查看我的代碼時,我意識到我可以將數據字典創建移出POST中的內聯處理而不是內聯處理,但是我不知道是否將number參數的處理移至該處理中的else塊中實際上可以節省任何時間,或者是更標准的處理方式。 我知道,由於Python是一種腳本語言,因此沒有自動執行的優化方法,就像它們會以一種編譯語言重新安排這種聲明一樣,因此,我正在尋找最有效的方法。

從性能的角度來看,是否在ifif之上創建data都沒有區別。 Python僅會執行一次,而dict將只創建一次。 但是出於設計原因,應將其移至if之上。

首先, 不要重復自己 -如果您可以在一個地方合理地實現一些代碼,請不要將其散布在代碼周圍。 假設您以后決定使用defaultdict更好,則只需在一個地方進行更改即可。

其次,安置意味着意圖。 如果您已聲明要計划在所有地方使用該數據結構, if放在上面。 在您當前的代碼中,讀者會問您相同的問題...為什么不是if之上呢? 這有點瑣碎,但是閱讀代碼不應引起更多問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM