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语句之后总是有一个条件,但是这个没有。我怎么理解这个?在这个功能中它做了什么?
答案 0 :(得分:7)
检查x是真还是假(二进制)。
if 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> x
为None
,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