2017-03-28 144 views
3
def f1(x,y): 
     if x:  
      x = [1,2,3] 
      x.append(4) 
     else: 
      x = 2 
     return x + y 

L1 = [1,2,3] 
L2 = [55,66] 
L3 = [] 
y = 3 
print(f1(L3,y))   # Line 1 
print(L3)     # Line 2 
print(f1(L1,L2))   # Line 3 
print(L1)     # Line 4 

#我想了解這個表達,它是什麼意思? 「if x:」是什麼意思?通常情況下if語句後總是有一個條件,但是這個沒有。我如何理解這一點?它在這個功能中做了什麼?如果沒有條件聲明

+0

這可能是一個沒有*比較*的if語句,但它絕對*有條件。沒有條件的if語句看起來像這樣:'if:':-) – paxdiablo

+0

你是對的。我只是用了錯誤的話,但我想你理解我的問題。你能給我一個答案嗎? – DiMaria

回答

1

這是檢查x是否是真還是假(二進制)。當x值不等於

if x:

返回true 0(當x是一個數字),並且如果它具有至少一個字符(當x是一個字符串),則返回true。返回false如果x等於 '0' 或 '' 或 '無'

對於例如:

a = 10 
if a: 
    print a 

此打印 '10'

a = 'DaiMaria' 
if a: 
    print a 

此打印服務 'DaiMaria'

a = 0.1 
if a: 
    print a 

打印0.1

a = 0 
if a: 
    print a 

因爲返回False而不打印任何內容。

a = None 
if a: 
    print a 

因爲它返回False,所以什麼都不打印。

a = '' 
if a: 
    print a 

什麼也不打印,因爲它返回False。

0

if語句相當於if bool(x): ...,其中Python的首先嚐試尋找一個__nonzero__方法上x__bool__在Python 3),如果它不能找到它返回True默認除非xNone,False,有__len__方法返回零,是一個空的映射或值爲零的數值類型。

一些例子:

>>> class A(object): 
...  pass 
... 
>>> bool(A()) 
True 
>>> class B(object): 
...  def __nonzero__(self): return False 
... 
>>> bool(B()) 
False 
>>> class C(object): 
...  def __len__(self): return 0 
... 
>>> bool(C()) 
False 
>>> class D(object): 
...  def __len__(self): return 0 
...  def __nonzero__(self): return True 
... 
>>> bool(D()) 
True