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
prin
Your if statement is equivalent to if bool(x): ... where Python first tries to look for a __nonzero__ method on x (__bool__ in Python 3) and if it cannot find it returns True per default unless x is None, False, has a __len__ method that returns zero, is an empty mapping or a numeric type with value zero.
Some examples:
>>> 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