ZetCode

Python None 关键字

最后修改于 2025 年 2 月 25 日

Python 中的 None 关键字表示值的缺失。它是一个特殊的常量,用于表示空值或空状态。本教程涵盖 None 的行为、常见用例和比较技术。

NoneNoneType 类的唯一实例。它在布尔上下文中评估为 False,并且作为不明确返回任何值的函数的默认返回值。理解 None 对于处理可选值和缺失数据至关重要。

检查 None

此示例演示了使用 is 运算符检查 None 的正确方法。

check_none.py
value = None

if value is None:
    print("No value provided")  # Output: No value provided
else:
    print("Value exists")

在与 None 进行比较时,始终使用 isis not。这可确保您检查的是标识而不是相等性,因为 None 是单例。

函数返回值

此示例显示了在没有 return 语句的情况下,函数如何隐式返回 None。

implicit_return.py
def no_return():
    pass

result = no_return()
print(result)  # Output: None

Python 函数在未另行指定的情况下始终返回 None。pass 语句创建一个没有返回值的空函数体。

将 None 用作默认参数

此示例演示了如何将 None 用于可变默认参数,以避免意外行为。

default_parameter.py
def add_item(item, collection=None):
    if collection is None:
        collection = []
    collection.append(item)
    return collection

list1 = add_item(1)
list2 = add_item(2)
print(list1, list2)  # Output: [1] [2]

将 None 用作默认参数可防止函数调用之间共享状态。每次需要默认值时,都会创建一个新列表。

数据结构中的 None

此示例显示了如何在数据结构中使用 None 作为占位符。

data_structure.py
user_data = {
    "name": "Alice",
    "age": None,
    "email": "alice@example.com"
}

if user_data["age"] is None:
    print("Age not provided")  # Output: Age not provided

None 在字典和其他数据结构中可用作缺失或可选数据的占位符。

None 与布尔值检查

此示例演示了 None 与布尔值评估之间的区别。

boolean_check.py
value = None

if value:
    print("Truthy value")
else:
    print("Falsy value")  # Output: Falsy value

value = 0
print(value is None)  # Output: False

虽然 None 是 Falsy(假值),但 0 或空集合等其他值也是 Falsy。在测试值缺失时,始终使用显式的 None 检查。

类型检查 None

此示例显示了如何将对象的类型与 NoneType 进行比较。

type_check.py
from types import NoneType

value = None
print(isinstance(value, NoneType))  # Output: True

虽然直接的类型检查很少见,但这演示了 None 的唯一类型。在大多数实际情况下,请使用 is None

使用 None 的最佳实践

来源

Python None 文档

在本文中,我们探讨了 Python None 关键字及其在表示空值、函数返回和可选数据处理中的作用。

作者

我叫 Jan Bodnar,是一位热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。至今,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 Python 教程