2017-03-28 13 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文の後には常に条件がありますが、これには条件がありません。どのように私はこれを意味するのですか?このfuctionで何をしていますか?if条件なしの文

+0

これは、*比較*のない 'if'ステートメントかもしれませんが、確かに条件を持っています。条件なしのif文は、次のようになります。 'if:' :-) – paxdiablo

+0

あなたが正しいです。私はちょうど間違った言葉を使いましたが、あなたは私の質問を理解したと思います。私に答えてくれますか? – DiMaria

答えて

1

これは、xが(バイナリ)真または偽であるかどうかを確認することです。

if x:

真返すx値が0に等しくない場合(xは数字である場合)、それは、少なくとも文字(xは文字列である)を有する場合には真を返します。 DaiMaria '

'

a = 'DaiMaria' 
if a: 
    print a 

この印刷': 'このプリント

a = 10 
if a: 
    print a 

ために、例えば

10' には、xは '0' または '' または' なしに等しい場合にfalseを返します

a = 0.1 
if a: 
    print a 

プリント0.1

a = 0 
if a: 
    print a 

返されたものは何も印刷しません。偽です。

a = None 
if a: 
    print a 

何も返されません。偽です。

a = '' 
if a: 
    print a 

返されるものは何も印刷されません。

0

あなたif文はPythonが最初に(Pythonの3中__bool__x__nonzero__方法を探すためにしようとif bool(x): ...に相当しているかどうかではなく、それが返されます見つけることができない場合TruexNone,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