我正在学习目前的功能,并以此为例:
def a(x, y, z):
if x:
return y
else:
return z
但是,我不确定if x
究竟是什么意思。 x
只是一个参数,而不是一个陈述,那么它怎么可能是真的还是假的?
答案 0 :(得分:6)
它检查x是否为“truthy”,这意味着它不应该是:
举个例子:
if 1 and True and "string" and ["list"] and {'key' : 'value'} and\
not None and not 0 and not False and not "" and not [] and not {}:
print "I understood truthiness!"
# => I understood truthiness!
答案 1 :(得分:3)
在python中,一切都有与之相关的真值。例如,除0
之外的所有数字都是 truthy (在条件语句中评估为True
),而0
是 falsey (在条件语句中求值为False
。这是因为每个类中都有__bool__
方法。
例如:
In [140]: def f(x,y,z):
.....: if x:
.....: return y+z
.....: else:
.....: return y-z
.....:
In [141]: f(True, 3, 4)
Out[141]: 7
In [142]: f(False, 3, 4)
Out[142]: -1
In [143]: f(1, 3, 4)
Out[143]: 7
In [144]: f(2, 3, 4)
Out[144]: 7
In [145]: f(863, 3, 4)
Out[145]: 7
In [146]: f(-24, 3, 4)
Out[146]: 7
In [147]: f(0, 3, 4)
Out[147]: -1
同样,空集合(列表,集合,字典,字符串,元组等)都是假的,而非空集合则是真实的。
答案 2 :(得分:2)
如果在if
语句中只给出一个变量作为条件,则该条件将由Python的标准真值测试程序进行评估。您可以使用bool
方法在控制台中自行尝试该方法,该方法直接映射到它。以下是一些例子:
>>> bool(1)
True
>>> bool(0)
False
>>> bool([])
False
>>> bool([1,2,3])
True
答案 3 :(得分:1)
在Python中,任何非零值,非空字符串/列表/集等都被视为True
,其中None
,空字符串/列表/集等等{{1 } 0
被False
视为if
。此评估由bool()
完成。下面是插图。
my_list = ['a', 100, None, '', 0, {}, {'a': 1}, [], ['a']]
for item in my_list: # Iterate over each value and checks the condition
if item:
print item, ": True", ", Bool value: ", bool(item)
else:
print item, ": False", ", Bool value: ", bool(item)
打印(显式格式化以便于阅读):
a : True , Bool value: True
100 : True , Bool value: True
None : False , Bool value: False
: False , Bool value: False
0 : False , Bool value: False
{} : False , Bool value: False
{'a': 1} : True , Bool value: True
[] : False , Bool value: False
['a'] : True , Bool value: True
如您所见,if
的执行被映射到bool()
值。