【问题标题】:Howcome a string type variable is considered as boolean in Python?为什么字符串类型变量在 Python 中被视为布尔值?
【发布时间】:2011-08-24 23:21:46
【问题描述】:

在下面的代码中:

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 在这里把它们当作布尔值吗?

【问题讨论】:

  • 这是 Python 3.x 吗? input() 在 2.x 和 3.x 中有不同的含义。
  • 请注意:除非您使用的是 python 3,否则请小心使用 input()!它与 raw_input 不同,因为它评估您输入的任何输入,相当于 eval(raw_input())!
  • 是的,它是 python 3.x。 python 3 中的 raw_input 发生了什么?
  • "python 3 中的 raw_input 发生了什么?"这是一个无关的问题。首先,搜索堆栈溢出。然后阅读 Python 网站中的 Python 3 说明。这不是什么秘密。请阅读所有可用信息。

标签: python string boolean conditional-statements


【解决方案1】:

Python 中的每个对象都有一个truth value。如果字符串非空,则字符串为True

【讨论】:

    【解决方案2】:

    if memoif tags 语句正在检查 truthinessmemotags 变量。

    任何事物都可以被检验为真 值,用于ifwhile 条件或作为布尔值的操作数 下面的操作。以下值 被认为是错误的:

    • None
    • False
    • 任何数字类型的零,例如,00L0.00j
    • 任何空序列,例如''()[]
    • 任何空映射,例如{}
    • 用户定义类的实例,如果该类定义了__nonzero__()__len__() 方法,当那个 方法返回整数零或 boolFalse

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

    【讨论】:

    • 但在该代码中,无法为标签和备忘录变量输入空字符串。这意味着它们将永远是真实的。对吗?
    • @alwbtc:如果用户立即按回车,您会得到一个空字符串,因为返回值中不包含换行符。
    【解决方案3】:

    这一切都取决于Python's version of truthiness

    【讨论】:

      猜你喜欢
      • 2017-04-17
      • 2016-04-02
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      相关资源
      最近更新 更多