[英]Pythonic way to initialise function parameters
哪個更pythonic?
一種
def my_function(arg, p=0):
while arg:
# do something
value = arg.pop()
# save value with a name which uses p for indexing
p+=1
或B
def my_function(arg):
p = 0
while arg:
# do something
value = arg.pop()
# save value with a name which uses p for indexing
p+=1
我的一部分認為,如果有人將p設置為一個奇怪的值,將p作為函數的參數包括在內是很愚蠢的。 但是同時我不喜歡讓p = 0使已經很復雜的函數變得混亂。
不要用本地變量弄亂功能參數。 如果不是調用者應該使用的參數,請不要將其添加到函數簽名中。
換句話說,您不希望任何人使用help(my_function)
並對p
用途感到驚訝。
當然,這不是一個硬性規定。 使用局部變量可以使某些關鍵路徑功能更快,因此有時您會看到類似以下內容的信息:
some_global = expensive_function()
def foo(bar, baz, _some_local=some_global):
# code using _some_local instead of some_global
以使用更快的本地名稱查找。 然后,參數開頭的_
告訴您,該名稱實際上是您不應依賴的內部實現細節。
它取決於p
始終必須從0
開始。 如果是這樣,那么肯定要使用選項B。如果沒有必要,不要給用戶一個混亂您代碼的機會。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.