Python内置常量详解:True、False、None及特殊常量行为

认真发呆
认真发呆
发布时间:2026-10-13 | 5人浏览过
原创

本文深入解析Python中仅有的6个内置常量:True、False、None、NotImplemented、Ellipsis和__debug__。详细阐述它们的类型、赋值限制及特殊行为,重点说明NotImplemented在运算符重载中的回退机制以及Ellipsis在表示循环数据结构时的应用,帮助开发者正确使用这些核心语言特性。

前言

Python语言中内置的常量数量极少,总共仅包含6个:True、False、None、NotImplemented、Ellipsis以及__debug__。接下来将逐一详细介绍这六个常量的具体特性与使用场景。

一. True

True是布尔类型(bool)中用于表示真值的常量。

>>> True
True
>>> type(True)
<class 'bool'>

尝试对常量True执行任何赋值操作,Python解释器均会抛出语法错误(SyntaxError)。

>>> True = 1
SyntaxError: can't assign to keyword

二. False

False是布尔类型(bool)中用于表示假值的常量。

>>> False
False
>>> type(False)
<class 'bool'>

尝试对常量False执行任何赋值操作,Python解释器同样会抛出语法错误(SyntaxError)。

>>> False = 0
SyntaxError: can't assign to keyword

三. None

None用于表示“无”或空值,它是NoneType类型唯一的实例值。

>>> None #表示无,没有内容输出
>>> type(None)
<class 'NoneType'>

尝试对常量None执行任何赋值操作,Python解释器会抛出语法错误(SyntaxError)。

>>> None = 2
SyntaxError: can't assign to keyword

在函数定义中,若未显式包含return语句或return后无返回值,该函数执行完毕后默认返回None。

>>> def sayHello(): #定义函数
 print('Hello')

 
>>> sayHello()
Hello
>>> result = sayHello()
Hello
>>> result
>>> type(result)
<class 'NoneType'>

四. NotImplemented

NotImplemented是NotImplementedType类型的常量。

>>> NotImplemented
NotImplemented
>>> type(NotImplemented)
<class 'NotImplementedType'>

通过bool()函数测试可知,NotImplemented在布尔上下文中被视为真值(True)。

>>> bool(NotImplemented)
True

NotImplemented并非绝对意义上的只读常量,对其赋值不会引发语法错误,但强烈建议不要对其进行赋值,否则可能导致程序逻辑异常。

>>> bool(NotImplemented)
True
>>> NotImplemented = False
>>> 
>>> bool(NotImplemented)
False

NotImplemented通常作为二元特殊方法(如__eq__、__lt__等)的返回值,用以表明当前操作未实现。当Python接收到NotImplemented返回值时,会智能地交换参数顺序,尝试调用另一个对象的对应方法。

>>> class A(object):
 def __init__(self,name,value):
  self.name = name
  self.value = value
 def __eq__(self,other):
  print('self:',self.name,self.value)
  print('other:',other.name,other.value)
  return self.value == other.value #判断2个对象的value值是否相等

>>> a1 = A('Tom',1)
>>> a2 = A('Jay',1)
>>> a1 == a2
self: Tom 1
other: Jay 1
True
>>> class A(object):
 def __init__(self,name,value):
  self.name = name
  self.value = value
 def __eq__(self,other):
  print('self:',self.name,self.value)
  print('other:',other.name,other.value)
  return NotImplemented

>>> a1 = A('Tom',1)
>>> a2 = A('Jay',1)
>>> a1 == a2
self: Tom 1
other: Jay 1
self: Jay 1
other: Tom 1
False

例如,当执行a1==a2(即调用__eq__(a1, a2))并返回NotImplemented时,Python会自动交换参数,再次调用__eq__(a2, a1)以获取最终结果。

五. Ellipsis

Ellipsis是ellipsis类型的常量,其字面量形式为三个点(...),两者等价。

>>> Ellipsis
Ellipsis
>>> type(Ellipsis)
<class 'ellipsis'>
>>> ...
Ellipsis
>>> ... == Ellipsis
True

通过bool()函数测试可知,Ellipsis在布尔上下文中被视为真值(True)。

>>> bool(Ellipsis)
True

Ellipsis并非绝对意义上的只读常量,对其赋值不会引发语法错误,但强烈建议不要对其进行赋值,否则可能导致程序逻辑异常。

>>> bool(Ellipsis)
True
>>> Ellipsis = False
>>> bool(Ellipsis)
False

Ellipsis常用于表示循环引用的数据结构,例如列表包含自身的情况。

>>> a = [1,2,3,4]
>>> a.append(a)
>>> a
[1, 2, 3, 4, [...]]
>>> a
[1, 2, 3, 4, [...]]
>>> len(a)
>>> a[4]
[1, 2, 3, 4, [...]]
>>>

六. __debug__

__debug__是一个布尔类型(bool)的常量。

>>> __debug__
True
>>> type(__debug__)
<class 'bool'>

尝试对常量__debug__执行任何赋值操作,Python解释器会抛出语法错误(SyntaxError)。

>>> __debug__ = False
SyntaxError: assignment to keyword

__debug__的值取决于Python的启动方式:若未使用-O选项启动Python解释器,该常量值为真(True);若使用了-O选项优化启动,则该常量值为假(False)。

总结

以上就是对Python内置常量的完整解析,希望这些内容能对您的学习或工作有所帮助。如有任何疑问,欢迎留言交流,感谢支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表