簡體   English   中英

python函數中可選參數的命名實踐

[英]Naming practice for optional argument in python function

將python函數中的可選參數賦予與外部變量相同的名稱是否可以? 由於下面定義的函數f和g給出相同的輸出,因此似乎工作正常。 但是,這是否被認為是不好的做法,並且在某些情況下會失敗嗎?

a = 1
def f(x,A=a): return x*A
def g(x,a=a): return x*a

print g(2)
>> 2
print g(2,a=2)
>> 4

它將起作用,盡管它可能很容易讓人感到困惑,但這是完全有效的。 這是由於以下事實:函數和對函數的調用發生在不同的名稱空間中。 因此,如果您寫:

def some_function(var1,var2=somevalue):  #var1 & var2 of functions namespace
    some things happening here

var1 = somevalue #mainspace var1
var2 = somevalue #mainspace var2
some_function(var1,var2=var2) 
#upper line: first var2 = from function, second var2 = from mainspace 

它將起作用,因為主命名空間中的var1與函數命名空間中的var1是完全不同的變量。 而且,即使您似乎在一行中兩次使用了var2,對某些函數的調用也將按所示工作。 但是正如您在解釋困難時所看到的那樣,這樣做會引起一些混亂,因此,如果可以的話,最好跳過這樣的事情。 與其他某些語言相比,Python的主要優點之一是它的可讀性,您應該通過自己的編碼風格來支持它。

命名變量a和其他變量A也應該避免。 在此處閱讀有關pyhton中的命名約定的信息:www.python.org/doc/essays/styleguide.html,並在此處閱讀有關名稱空間的信息: http ://bytebaker.com/2008/07/30/python-namespaces/

它會起作用,但我認為許多人會阻止它,因為它很容易造成混淆。

編程的一半工作是獲取有效的代碼。 另一半正在編寫清晰明了的代碼,以便您(或其他人)在一年后可以理解它。

停止在Python中使用“變量”一詞!

沒有“值可以改變的內存塊”意義上的變量

並且使用“變量”作為“標識符”或“名稱”的同義詞令人困惑;

高興!

如果要將變量傳遞給它,它將失敗。

但是最好的命名方法是不將函數和變量稱為a,f,g,x。 那么您就不太可能發生碰撞。

暫無
暫無

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

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