2014-03-27 25 views

回答

8

號默認參數在函數定義的時間進行評估,並在函數定義的時候,我們還沒有一個x呢。明確檢查標記值是我們可以做的最好的。

0
def f(x,y=None): 
z = x + (x if y is None else y) 
return z 

更簡潔...

def f(x,y=None): 
    return x + (x if y is None else y) 

更是簡潔

f = lambda x,y=None:x + (x if y is None else y) 

大概是儘量精簡你可以把它...

+1

這太可怕了。你採取了一些簡單的措施,使其變得不必要的複雜。 – dstromberg

+1

忘了提及'lambda x,y = None:x + [y,x] [y是None]'。 – Hyperboreus

-2

雖然沒有明確的更好,這裏有一種方法:

def f(x, **kwargs): 
    y = kwargs.get('y', x) 
    z = x + y 
    return z 

print f(1)  # -> 2 
print f(1, y=2) # -> 3 
相關問題