为什么字符串类型变量在Python中被视为布尔值?
在下面的代码中:
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)
memo
和 tags
是字符串类型的变量。那么在 if 语句后面写它们时,Python 会把它们当作布尔值来处理吗?
3 个回答
0
这完全取决于Python中关于“真值”的定义
8
在Python中,每个对象都有一个真假值。简单来说,如果字符串不是空的,那么它的真假值就是True
。
6
if memo
和 if tags
这两个语句是在检查 memo
和 tags
这两个变量的“真假值”。
任何对象都可以用来判断真假值,这可以在
if
或while
条件中使用,或者作为下面布尔运算的操作数。以下这些值被认为是假的:
None
(表示没有值)False
(表示假)- 任何数字类型的零,比如
0
、0L
、0.0
、0j
。- 任何空的序列,比如
''
(空字符串)、()
(空元组)、[]
(空列表)。- 任何空的映射,比如
{}
(空字典)。- 用户自定义类的实例,如果这个类定义了
__nonzero__()
或__len__()
方法,并且这些方法返回整数零或bool
值False
。其他所有值都被认为是真的——所以很多类型的对象总是被认为是真的。