【问题标题】:How to check if a variable is empty in python?如何检查python中的变量是否为空?
【发布时间】:2012-05-11 04:18:15
【问题描述】:

我想知道 python 是否有任何函数,例如 php 空函数 (http://php.net/manual/en/function.empty.php),它使用以下条件检查变量是否为空

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)

【问题讨论】:

    标签: python


    【解决方案1】:

    另请参阅推荐not关键字的上一个答案

    How to check if a list is empty in Python?

    它不仅仅推广到列表:

    >>> a = ""
    >>> not a
    True
    
    >>> a = []
    >>> not a
    True
    
    >>> a = 0
    >>> not a
    True
    
    >>> a = 0.0
    >>> not a
    True
    
    >>> a = numpy.array([])
    >>> not a
    True
    

    值得注意的是,它不适用于作为字符串的“0”,因为该字符串实际上包含一些东西——一个包含“0”的字符。为此,您必须将其转换为 int:

    >>> a = "0"
    >>> not a
    False
    
    >>> a = '0'
    >>> not int(a)
    True
    

    【讨论】:

    • not 不是命令,而是关键字。它也不是一个函数,所以你不需要(也不应该使用)括号。 not 也隐式转换为布尔然后反转;你并不总是想为了得到一个布尔值而反转。
    • 谢谢@agf。已在帖子中更正。
    【解决方案2】:

    是的,bool。这并不完全相同——'0'True,但 NoneFalse[]00.0"" 都是 False

    当您在ifwhile 语句、条件表达式或布尔运算符等条件中评估对象时,会隐式使用bool

    如果你想像 PHP 那样处理包含数字的字符串,你可以这样做:

    def empty(value):
        try:
            value = float(value)
        except ValueError:
            pass
        return bool(value)
    

    【讨论】:

      【解决方案3】:

      只需使用not:

      if not your_variable:
          print("your_variable is empty")
      

      并为您的0 as string 使用:

      if your_variable == "0":
          print("your_variable is 0 (string)")
      

      将它们组合起来:

      if not your_variable or your_variable == "0":
          print("your_variable is empty")
      

      Python 是关于简单的,这个答案也是如此:)

      【讨论】:

        【解决方案4】:

        参见第 5.1 节:

        http://docs.python.org/library/stdtypes.html

        可以测试任何对象的真值,用于 if 或 while 条件或作为以下布尔运算的操作数。以下值被认为是错误的:

        None

        False

        任何数字类型的零,例如,00L0.00j

        任何空序列,例如,''()[]

        任何空映射,例如{}

        用户定义类的实例,如果该类定义了__nonzero__()__len__() 方法,则该方法返回整数零或布尔值False。 [1]

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

        除非另有说明,否则具有布尔结果的操作和内置函数始终返回 0False 为假,1True 为真。 (重要的例外:布尔运算 orand 总是返回它们的一个操作数。)

        【讨论】:

        • 这并没有完全回答他的问题,“我想知道python是否有任何函数,例如php空函数”。这告诉他什么是“空”,但不告诉他如何找出任意对象是否为空。
        • 我想我的回答是暗示文档中有一个完整的部分解释了什么是“空”。我想说,在这个问题的 3 个答案之间,我们已经用尽了大部分用例。
        【解决方案5】:

        您可以使用 not 关键字。

        if not a
            print("a is empty")
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-20
          • 2012-02-05
          • 1970-01-01
          • 2018-07-03
          相关资源
          最近更新 更多