PYTHON NULL 语句

2024 年 8 月 29 日 | 阅读 6 分钟

在数学中,我们用 null 来表示“无”,在 C 和 Java 等一些编程语言中,NULL 也表示同样的意思,但在 Python 中,情况有所不同。通常,在其他编程语言中,当指针指向空时,或者当变量为空/为空时,会使用 null。它等同于零。在 Python 中,我们使用“None”代替 null。本文将通过示例讨论 None 的概念。

None 是 Python 中的一个关键字。它能执行 null 的所有功能,除此之外,None 还有全新的概念和功能。

在 C 等语言中,null 是一个内置常量,值为零。但在 Python 中,None 是一个对象。

  • 与 True 和 False 一样,在 Python 中,None 是一个在不同场景下具有意义的不可变关键字。

输出

<class 'NoneType'>

表示 None 是 NoneType 类的对象。对象的类型是它所属的类。

  • 在函数中:返回类型

通常,函数至少应返回一个值。如果函数不返回任何内容,则返回 None。

输出

None

理解:函数接受参数并执行加法,但不返回任何值。因此,当我们打印函数时,打印出 None。

  • 有趣的发现

我们知道 print() 是 Python 中的一个函数。但您是否注意到 print() 打印给定字符串,但不返回任何值?当我们尝试打印 print 语句本身时,可以看到打印出 None。

输出

Hello world!
None

理解

首先,在第一个语句中打印字符串,然后打印返回值 - None。

  • 作为函数中可选参数的默认值

当我们查看某些函数的语法时,我们会看到一些我们甚至不了解的参数。这些是可选参数。这些参数具有某些功能,但我们不会经常使用它们。只有在需要时,我们才为参数分配一个参数。其他所有时间,它们都持有 None。

示例

list.sort() 函数

通常,我们使用不带参数的列表来调用它,但函数中有两个参数。

输出

[1, 3, 5, 6]

sort 的实际语法

关于 method_descriptor 的帮助

sort(self, /, *, key=None, reverse=False)

将列表按升序排序并返回 None。

  • Null 变量

在 C 等静态类型语言中,程序员只能在使用前定义和声明变量,并且必须为其指定一个值。如果我们不为其指定值,它将采用一些垃圾值或 null。

Python 中的情况并非如此。我们可以将变量赋值为 None,使其成为 null 变量。但是,null 变量与未定义变量不同。

输出

Traceback (most recent call last):
  File "C:\Users\Jeevani\untitled0.py", line 7, in 
    print (var)
NameError: name 'var' is not defined

在这里,var 未定义,但在 print 语句中使用。Var 没有采用 None 作为默认值。因此,它引发了错误。

输出

None

在这里,我们将 None 赋值给了变量 var。当我们打印值时,您可以看到打印出了 None。

  • AttributeError 错误

如果您已经编程了一段时间,您可能会遇到这些错误。

AttributeError: 'NoneType' object has no attribute 'append'

当我们在未定义但为空的值上尝试执行操作时,就会发生此错误。这些情况可能由于代码中的某些错误而意外发生。我们认为它们是普通变量,但它们是 null 变量。

示例

输出

Traceback (most recent call last):
  File "C:\Users\Jeevani\untitled0.py", line 11, in 
    function(l). append('hey')
AttributeError: 'NoneType' object has no attribute 'append'

理解

在这里,我们创建了一个列表 [3, 4]。我们编写了一个函数来将值 8 添加到列表中。我们调用了该函数,但忘记返回列表。如上所述,如果函数没有 return 语句,它将返回 None,而我们在这里尝试将“hey”添加到 None 对象,这是不可能的。因此,引发了属性错误。

  • 比较和相等性

让我们通过一个例子来理解这一点。

输出

Enter a number to check it is even: 7
7 is not an odd number

Enter a number to check it is even: 4
4 is an even number

理解

我们从用户那里获取了一个整数输入。我们编写了一个函数来检查数字是偶数还是奇数。如果数字可被 2 整除,则返回 True。如果不能整除,则不返回任何内容,这意味着返回 None。我们用它来检查数字是否为奇数。

重要提示

要检查变量是否为 None,请勿使用比较运算符 == 和 !=。即使我们使用 ==,在上述情况下它也会给出相同的结果。但是,在某些情况下,使用 == 会导致错误。

如果我们使用“is”,当两个变量指向同一个对象时,它会返回 True,但 == 检查两个变量指向的对象是否相同。

让我们看一个例子。

输出

True 
False

理解

当我们说 obj is None 时,我们检查 obj 和 None 是否是同一个对象。Obj 是 class name 的一个对象,而 None 是一个预定义对象。它们不相同。当我们检查 obj == None 时,我们检查 obj 和 None 是否相等,即它们是否具有相同的值。Obj 和 None 都持有 None。因此,打印出 True。

  • if 语句中的 True 和 False

当我们说到 None 时,意味着“什么都没有”。通常,如果语句的条件中存在正整数或 True 值,则该语句将被执行。None 表示“无”,这意味着它表示 False。那么,not None 表示 True:

输出

She did not eat the food

理解

我们将 food 设置为 None,这意味着它是空的 - 它什么也没有。它表示 False。因此,执行了 else 语句。

  • 作为默认参数

让我们通过一个例子来理解这一点。

我们正在尝试创建一个函数,该函数将列表与给定元素一起追加。如果没有给出列表,我们希望有一个单元素列表,其中包含我们提供的元素。

输出

[3, 2, 3]
[4]
[4, 4]

理解

当我们在第一种情况下给出一个列表并对其进行追加时,函数工作正常。但是,当我们停止提供列表而只提供元素时,它就失败了。当我们不带列表调用函数时,该函数会更新列表并附加值,因为列表没有被重新定义为空列表。

解决方案

输出

[3, 3, 2]
[4]
[5]

在这里,我们将 None 指定为参数的默认值。每当调用函数时,我们都会包含一个条件来检查它是否为 None,然后将列表重新赋值为空列表。

这些是 None 在 Python 中的一些用法。当我们创建大型程序时,None 的重要性会更大。它提高了可读性并减少了程序的行数,使其成为 Python 中对每个程序员都美观且用户友好的功能。


下一个主题Python AND 运算符