[英]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)
保持“關鍵字”相同有助於這個罕見但合法的角落案例......
一般來說,你應該給你的函數的參數名稱有意義,甚至在選擇這些名稱時甚至不考慮與其他函數有關。 兩個函數的參數名稱之間沒有任何關系,即使函數執行類似的操作也是如此。
雖然......如果功能確實做了類似的事情,也許這表明你錯過了重構? :)
這里重要的指導原則是你應該給他們一些合理的名字 - 理想情況下,當你一年后回到你的代碼時,你會猜到參數的名字。
每個程序員都有一套約定。 有些人喜歡將整數參數調用到二進制函數n1
和n2
; 其他像n
, m
; 或者lhs
, rhs
; 或者是其他東西。 只要你選擇一個並堅持下去(只要它是合理的),其他任何人都可以在幾秒鍾后學習你的風格,閱讀你的代碼並理解它。 如果你在各處使用不同的名字,他們將不得不做更多的猜測。
正如mgilson指出的那樣,如果你願意,你可以使用關鍵字參數。 它還意味着具有自動完成功能的IDE更有用 - 當您看到(…n1…, …n2…)
彈出時,您知道要傳遞兩個整數。 但主要是為了可讀性。
當然,如果有不同的含義,給他們不同的名稱。 在某些情況下,使用add_two_numbers(augend, addend)
和multiply_two_numbers(factor, multiplicand)
可能是合理的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.