python中字符串的真值

时间:2013-08-28 15:11:37

标签: python

if <boolean> :
   # do this

布尔值必须为True或False。

那么为什么

if "poi":
   print "yes"

输出: 是

我不知道为什么是打印,因为“poi”是虚假的错误。

3 个答案:

答案 0 :(得分:21)

当需要从该表达式中获取布尔值时,Python将尽力评估表达式的“真实性”。

字符串规则是将空字符串视为False,将非空字符串视为True。对其他容器施加相同的规则,因此空字典或列表被视为False,具有一个或多个条目的字典或列表被视为True

None对象也被视为false。

0的数值被视为false(尽管字符串值'0'被视为true)。

所有其他表达式都被视为True

详细信息(包括用户定义类型如何指定真实性)可在此处找到:http://docs.python.org/release/2.5.2/lib/truth.html

答案 1 :(得分:8)

在python中,除空字符串外的任何字符串都默认为True

if "MyString":
    # this will print foo
    print("foo")

if "":
    # this will NOT print foo
    print("foo")

答案 2 :(得分:7)

这里发生的事情是bool()之后的Python'隐式if构造函数的补充,因为if后面的任何内容都应该被解析为boolean。在这种情况下,您的代码等同于

if bool("hello"):
   print "yes"

根据Python bool(x)构造函数接受任何内容并根据以下情况决定真实性

  • 如果x是整数,则只有0False,其他一切都为True
  • 如果x为float,则只有0.0False,其他一切都为True`
  • 如果x是列表,则只有[]False,其他所有内容均为True
  • 如果设置了x / dict,则只有{}False,其他所有内容都为True
  • 如果x是元组,则只有()False,其他所有内容都为True
  • 如果x是字符串,则只有“"False,其他所有内容都为True。请注意,bool(“False”)将返回True

以下是我在上面列出的案例的日志

Python 3.4.3 (default, Feb 25 2015, 21:28:45) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True
>>> bool(0.0)
False
>>> bool(0.02)
True
>>> bool(-0.10)
True
>>> bool([])
False
>>> bool([1,2])
True
>>> bool(())
False
>>> bool(("Hello","World"))
True
>>> bool({})
False
>>> bool({1,2,3})
True
>>> bool({1:"One", 2:"Two"})
True
>>> bool("")
False
>>> bool("Hello")
True
>>> bool("False")
True