【问题标题】:What does "if condition" mean, when the condition is not a statement? [duplicate]当条件不是语句时,“if 条件”是什么意思? [复制]
【发布时间】:2016-11-19 18:29:53
【问题描述】:

我现在正在学习函数,以这个为例:

def a(x, y, z):
     if x:
         return y
     else:
         return z

不过,我不确定if x 的真正含义。 x只是一个参数,不是语句,怎么可能是真假?

【问题讨论】:

  • 条件是从不语句。语句是诸如y = 0 之类的操作。条件是一个表达式,例如len(my_list) > 1,有一定的价值。 x 也是一个表达式。

标签: python


【解决方案1】:

它检查 x 是否“真实”,这意味着它不应该是:

  • 错误

举个例子:

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!

【讨论】:

  • 为什么,如果我输入2 == True,控制台会输出False
  • 2 不是True,它只是“真实”:bool(2)==True
  • @SteveSmith:因为True 在计算为整数时表示1,而12 不同。整数和逻辑值(布尔)之间的运算通常被视为整数之间的运算。要将2 等整数转换为逻辑值,请使用bool(2),其计算结果为True,而bool(0)False
【解决方案2】:

在 python 中,每件事都有一个与之相关的真值。例如,除0 之外的所有数字都是(在条件语句中计算为True),而0(在条件语句中计算为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

类似地,空集合(列表、集合、字典、字符串、元组等)是虚假的,而非空集合是真实的。

【讨论】:

    【解决方案3】:

    如果在if 语句中仅给出一个变量作为条件,则该条件将通过 Python 的标准真值测试程序进行评估。您可以使用直接映射到它的bool 方法在控制台中亲自尝试该方法。下面是一些例子:

    >>> bool(1)
    True
    >>> bool(0)
    False
    >>> bool([])
    False
    >>> bool([1,2,3])
    True
    

    【讨论】:

      【解决方案4】:

      在 Python 中,任何非零值、非空字符串/列表/集合等都被视为True,其中None、空字符串/列表/集合等和0 被视为@ 987654325@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() 值。

      【讨论】:

      • 还有空列表、集合、字典...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      • 2015-01-04
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      相关资源
      最近更新 更多