簡體   English   中英

Python中的參數命名約定

[英]Parameter naming convention in Python

對於具有密切相關的形式參數的函數,例如

def add_two_numbers(n1, n2):
    return n1 + n2

def multiply_two_numbers(n1, n2):
    return n1 * n2

如上所示,給兩個函數中的參數賦予相同的名稱是一個好主意嗎?

另一種方法是重命名其中一個函數中的參數。 例如:

def add_two_numbers(num1, num2):
    return num1 + num2

在兩個函數中保持相同看起來更加一致,因為每個函數所采用的參數都是類似的,但更令人困惑的是?

同樣,對於下面的例子哪個更好?

def count(steps1, steps2):
    a = 0
    b = 0

    for i in range(steps1):
        a += 1

    for j in range(steps2):
        b += 1

    return a, b

def do_a_count(steps1, steps2):
    print "Counting first and second steps..."
    print count(steps1, steps2)

否則,更改第二個函數中的參數會給出:

def do_a_count(s1, s2):
    print "Counting first and second steps..."
    print count(s1, s2)

再說一遍,我不確定哪種方式最好。 保持相同的參數名稱使兩個函數之間的關系更清晰,而第二個意味着不可能在兩個函數中混淆參數。

我做了一些搜索(包括瀏覽PEP-8),但找不到明確的答案。 (我發現的類似問題包括: python函數中的可選參數的命名練習Python中,避免對__init__參數和實例變量使用相同名稱的最佳方法是什么?

我會保持名稱相同,除非你有充分的理由使用不同的名稱...請記住,甚至位置參數可以通過關鍵字調用,例如:

>>> def foo(a,b):
...     print a
...     print b
... 
>>> foo(b=2,a=1)

保持“關鍵字”相同有助於這個罕見但合法的角落案例......

一般來說,你應該給你的函數的參數名稱有意義,甚至在選擇這些名稱時甚至不考慮與其他函數有關。 兩個函數的參數名稱之間沒有任何關系,即使函數執行類似的操作也是如此。

雖然......如果功能確實做了類似的事情,也許這表明你錯過了重構? :)

這里重要的指導原則是你應該給他們一些合理的名字 - 理想情況下,當你一年后回到你的代碼時,你會猜到參數的名字。

每個程序員都有一套約定。 有些人喜歡將整數參數調用到二進制函數n1n2 ; 其他像nm ; 或者lhsrhs ; 或者是其他東西。 只要你選擇一個並堅持下去(只要它是合理的),其他任何人都可以在幾秒鍾后學習你的風格,閱讀你的代碼並理解它。 如果你在各處使用不同的名字,他們將不得不做更多的猜測。

正如mgilson指出的那樣,如果你願意,你可以使用關鍵字參數。 它還意味着具有自動完成功能的IDE更有用 - 當您看到(…n1…, …n2…)彈出時,您知道要傳遞兩個整數。 但主要是為了可讀性。

當然,如果有不同的含義,給他們不同的名稱。 在某些情況下,使用add_two_numbers(augend, addend)multiply_two_numbers(factor, multiplicand)可能是合理的。

暫無
暫無

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

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