if语句没有条件

时间:2017-03-28 07:32:06

标签: python

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

#我想了解这个表达,这是什么意思?什么"如果x:"手段?通常在if语句之后总是有一个条件,但是这个没有。我怎么理解这个?在这个功能中它做了什么?

3 个答案:

答案 0 :(得分:7)

检查x是真还是假(二进制)。

if x:

当x值不等于0(当x是数字时),

返回true,如果它至少有一个字符(当x是字符串时),则返回true。如果x等于'0'或''或'无'

,则返回false

例如:

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。

答案 1 :(得分:2)

条件是x是否是truthy value

答案 2 :(得分:0)

您的if语句相当于if bool(x): ...,其中Python首先尝试在__nonzero__(在Python 3中为x)中查找__bool__方法,如果它无法找到每个默认返回True,除非<{em> xNoneFalse,有__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