为什么字符串类型变量在Python中被视为布尔值?

1 投票
3 回答
733 浏览
提问于 2025-04-16 17:34

在下面的代码中:

def modify_note(self):
    id = input("Enter a note id: ")
    memo = input("Enter a memo: ")
    tags = input("Enter tags: ")
    if memo:
       self.notebook.modify_memo(id, memo)
    if tags:
       self.notebook.modify_tags(id, tags)

memotags 是字符串类型的变量。那么在 if 语句后面写它们时,Python 会把它们当作布尔值来处理吗?

3 个回答

8

在Python中,每个对象都有一个真假值。简单来说,如果字符串不是空的,那么它的真假值就是True

6

if memoif tags 这两个语句是在检查 memotags 这两个变量的“真假值”。

任何对象都可以用来判断真假值,这可以在 ifwhile 条件中使用,或者作为下面布尔运算的操作数。以下这些值被认为是假的:

  • None(表示没有值)
  • False(表示假)
  • 任何数字类型的零,比如 00L0.00j
  • 任何空的序列,比如 ''(空字符串)、()(空元组)、[](空列表)。
  • 任何空的映射,比如 {}(空字典)。
  • 用户自定义类的实例,如果这个类定义了 __nonzero__()__len__() 方法,并且这些方法返回整数零或 boolFalse

其他所有值都被认为是真的——所以很多类型的对象总是被认为是真的。

撰写回答