寻找 的等价物 ?你找不到它。但是,Python 有 None Null Null 。让我们探索 Python 的 None 对象。
如果您熟悉其他编程语言,如 Java、JavaScript 或 PHP,您可能想知道 Python 是否具有 Null 相同的 Null 。
简而言之, there is no 相同的用途 in Python, but there is the None object Python 程序员可以使用 None 对象来定义空对象和变量。不过,重要的是要明白,虽然 None Null Null 您可能习惯的 Null 仍然有很大不同
特殊 相同的用途 值表示空指针、未知值或尚未初始化的变量。在这些语言中, Null 被定义为 0。在 Python 中, None Null Null ,但它不被定义为 0 或任何其他值。Python None 是一个对象,也是 一等公民 .
在本文中,我将讨论这意味着什么以及如何有效地使用 Python 的 None 。然后,您可以立即开始使用我们的 Python 基础知识第 1 部分 课程练习 Python,该课程涵盖了关键的入门级概念和 95 个交互式练习。
None :深入探究
首先,让我们来了解一下 None 不是 不同 False ,尽管 None 对象是假的(例如, 在布尔运算中 假 None 不是零或空字符串。与 None 对象的任何比较都会返回 False ,除了将 None 与其自身进行比较。
为了帮助您了解 Python None 对象 是 ,我们将介绍几个用例,包括:
- 将 None 分配给变量。
- 正在测试无。
- 获取 None 作为函数输出。
- 使用 None 作为默认参数。
赋值 None 给变量
一些编程语言允许通过声明引入新变量,而无需明确分配初始值。在这种情况下,默认初始值通常为 Null .
在 Python 中,情况则大不相同。要引入新变量,您需要为其分配一个特定值,该值可以是
None
对象。如果您没有为变量分配任何值,则该变量将被视为未定义,并且在引用它时您将得到一个
NameError
。
例如,让我们尝试打印未定义的变量与被分配了 None 对象的变量。
print (employees)
输出:
NameError Traceback (most recent call last)
in ()
----> 1 print (employees)
NameError: name 'employees' is not defined
employees = None
print (employees)
输出:
None
但是,
引用
在这种情况下
None
None
TypeError
。例如:
employees = None
print(employees + 1)
输出:
TypeError Traceback (most recent call last)
in ()
----> 1 print(employees + 1)
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
正如您在回溯中看到的那样,该错误是由于引用 None 对象而导致的。
检查变量是否为 None
使用
和
符检查变量是否被分配了
is None
None
is not None
。
employees = None
if employees is None:
print("It is a None object.")
else:
print("It is not a None object ")
输出:
It is a None object.
对
is 和
None
is not None
使用恒等运算符(如
None
而不是等价运算符(如
==
和
!=
覆盖
的用户定义对象时,等价运算符可能会输出错误的结果
。以下是示例:
class EquityVsIdentity():
def __eq__ (self, other):
return True
check = EquityVsIdentity()
print(check == None)
print(check is None)
输出:
True
False
这里,相等运算符(
==
“”)返回错误答案,因为它被用户定义的对象覆盖,而恒等运算符(
is
)返回正确结果,因为它不能被覆盖。
另一件有趣的事情是,由于 None 对象是假的,您可以简单地使用 if 语句来检查变量是否为 None 。
employees = None
if employees:
print("It is not a None object.")
else:
print("It is a None object.")
输出:
It is a None object.
None 作为函数输出
首先,None 是
return
函数中没有语句时返回的值。让我们创建一个不返回任何值的函数并检查其输出:
def no_return():
pass
print(no_return())
输出:
None
如您所见,上面的函数没有明确返回值。Python 提供了一个隐式返回语句,返回值为 None。查看有关 在 Python 中定义函数的 ,以了解有关您可能希望函数执行某些操作而不返回任何值的情况的更多信息。
有些函数在有实际结果时返回实际对象, 在没有结果时返回 None。Python
进行比较来检查函数是否返回值
None
re 包的函数在没有匹配时
search()
的输出
import re
languages = "She speaks English, French, German, and Norwegian."
match = re.search("Spanish", languages)
if match is None:
print("She doesn't speak this language.")
else:
print("She speaks this language.")
输出:
这里,西班牙语不在该人使用的语言之列。因此,当搜索“西班牙语”时,我们得到的
None
对象。我们已检查并确认,在这种情况下,函数的输出
search()
为
None
。
None 作为可选参数的默认值
最后, None 经常用作函数可选参数的默认值,尤其是当您需要处理可变数据类型(例如列表)时。如果您将参数的默认值设置为列表,则此列表将在所有未指定相应可选参数的后续函数调用中更新 - 而您通常每次都希望有一个新的空列表。
看完一个例子就会更清楚了。我们首先创建一个使用列表作为可选参数默认值的函数:
def function_with_list (element, start=[]):
start.insert(0, element)
return start
employees = ['employee A', 'employee B', 'employee C']
function_with_list('employee D', employees)
输出:
['employee D', 'employee A', 'employee B', 'employee C']
如您所见,我们创建了一个函数,用于将新元素放置在列表的第 1 位。当我们提供 start 参数时,它表现良好。但是,如果我们不提供这个可选参数,每次调用该函数时,我们都会开始看到不正确的行为:
function_with_list('employee D')
输出:
['employee D']
function_with_list('employee E')
输出:
['employee E', 'employee D']
function_with_list('employee F')
输出:
['employee F', 'employee E', 'employee D']
由于列表是可变的对象类型,当我们不传递现有列表时,我们会在每次函数调用后获得一个更新的列表。
如果希望每次调用时都有一个新列表,请考虑使用 None 对象作为默认参数:
def function_with_none(element, start=None):
if start is None:
start = []
start.insert(0, element)
return start
employees = ['employee A', 'employee B', 'employee C']
function_with_none('employee D', employees)
输出:
['employee D',
'employee A',
'employee B',
'employee C']
在此函数中,我们检查起始列表是否为 None;如果是,则启动一个新列表。这确保了当我们不向函数提供起始列表时,我们得到正确的行为。
function_with_none('employee D')
输出:
['employee D']
function_with_none('employee E')
输出:
['employee E']
function_with_none('employee F')
输出:
['employee F']
现在,无论调用该函数多少次,我们都会得到正确的输出。这只是一个如何 None 对象用作可选参数的默认值的示例。
让我们在 Python 中练习 None 吧 !
尽管 Python 没有 你可能习惯的 Null 不到一个月 。关键是采取结构化的方法进行学习并 进行大量编码 .
如果您刚接触 Python,我建议您从 Python 基础第 1 部分 课程开始。在 95 个交互式练习中,您将学习如何接受用户的输入、在 Python 中使用变量和数学以及编写 if 语句、循环和函数。您还将更好地理解 None 概述文章 中阅读有关本课程的更多信息 .
当您准备好进一步学习时,请查看 “学习使用 Python 编程” 课程。它包括五门互动课程,包含数百个编码挑战。完成此学习课程后,您将对 Python 数据结构有很好的了解,包括列表、集合、字典和元组。您还将熟练使用关键的内置算法和函数,例如用于在 Python 中进行搜索和排序的算法和函数。
感谢阅读,祝您学习愉快!
发表评论 取消回复