当条件不是陈述时,“条件”是什么意思?

时间:2016-11-19 18:29:53

标签: python

我正在学习目前的功能,并以此为例:

def a(x, y, z):
     if x:
         return y
     else:
         return z
但是,我不确定if x究竟是什么意思。 x只是一个参数,而不是一个陈述,那么它怎么可能是真的还是假的?

4 个答案:

答案 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 } 0False视为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()值。