在python解释器中,有少量的常量存在于内置命名空间中
所谓常量就是指不变化的量,虽然在python中的常量有可以被重新赋值的常量,但是强烈建议不要对其重新赋值,否则会影响python解释器正确执行python程序
注意:这里顺便提醒大家不管你是为了python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目,还可以跟老司机交流讨教!
false:
- bool类型的假值
- 不可赋值
true
- bool类型的真值,给true或false赋值是非法的,会引发syntaxerror
- 不可赋值
none
-
nonetype
类型的唯一值.none
经常用于表示缺少值,当因为默认参数未传递给函数时.给none
赋值也是非法的,后引发syntaxerror - 不可赋值
notimplemented
- 二进制特殊方法应返回特殊值(例如,
__eq__()
,__lt__()
,__add__()
,__rsub__()
等)表示操作没有针对其他类型实现,为了相同的目的可以通过就地二进制特殊方法(例如__imul__()
,__rightnd__()
等)返回,它的逻辑为真. - 对其赋值不会抛错,但是不应该对其赋值,会影响解释器对程序正常的执行
注解:当二进制(或就地)方法返回
notimplemented
时,解释器将常识对另一种类型(或其他一些回滚操作,取决于运算符)的反射操作。 如果所有尝试都返回notimplemented
,则解释器将引发适当的异常。 错误返回的notimplemented
将导致误导性错误消息或返回到python代码中的notimplemented
值。
notimplemented是说明当前代码没有实现对调用方法的支持,不错产生错误.
它的布尔值为真:
>>> bool(notimplemented) true 复制代码
下面用代码展示这个常量的作用,定义两个类,实现了__eq__()
方法:
class a: def __init__(self, value): self.value = value def __eq__(self, other): """ 传进的other是a的实例或者b的实例,都调用此方法进行比较, 其他情况返回notimplemmented """ if isinstance(other, a): print(f'comparing an a with another a') return other.value == self.value if isinstance(other, b): print(f'comparing an a with a b') return other.value == self.value print('could not compare a with other class') return notimplemented class b: def __init__(self, value): self.value = value def __eq__(self, other): """ 只有other是b的实例时才调用这个方法进行比较,其他情况返回 notimplemented """ if isinstance(other, b): print(f'comparing an b with another b') return other.value == self.value print('could not compare b with other class') return notimplemented 复制代码
在代码中实例化两个类,分别进行比较,查看调用方法的不同:
>>> a1 = a(1) >>> b1 = b(1) >>> a1 == b1 comparing an a with a b true >>> a1 == a1 comparing an a with another a true 复制代码
如上例,运行a1 == b1
,首先调用a1
的__eq__()
方法,对前后两个值a1和b1比较,
同样a1 == a1
调用a的__eq__()
方法
>>> b1 == b1 comparing a b with another b true 复制代码
调用b1的__eq__()
方法.
>>> b1 == a1 could not compare b against the other class comparing an a with a b true 复制代码
如上面代码所示,b1和a1进行比较时,会首先调用b类中的__eq__()
方法,即b1.__eq__(a1)
,得到控制台信息could not compare b against the other class
,返回notimpletemented
,这个常量告诉解释器,对应的方法没有在该类中实现,让其尝试调用a1的__eq__()
方法,得到控制台信息comparing an a with a b
,结果为ture
.norimplemented
本身不会打断程序的运行.
如果两个对象的__eq__()
都不能正确得出结果,解释器会继续尝试调用两个对象的__ne__()
方法,知道获取正常结果或异常.
对比
notimplementederror
,notimplementederror
是一个异常类,表示类的抽象方法或者开发者定义的接口方法,没有被重写,而出现的异常,会打断程序的执行,可以被捕获.
class c: def interface(self): raise notimplementederror('you have to overwrite this method') 复制代码
ellipsis
- 和省略号文字字面"..."相同,特殊值主要与用户定义的容器数据类型的扩展切片语法结合使用
- 循环数据结构,一个符合对象包含只想自身的引用
- 对其赋值不会抛错
该对象的布尔值为真
>>> bool(ellipsis) true 复制代码
示例:
>>> def func(): ellipsis >>> func() >>> def func(): ... >>> func() # 函数的调用结果为空 复制代码
对自身的引用:
>>> array = [1, 2, 3] >>> array.append(array) >>> print(array) [1, 2, 3, [...]] 复制代码
在numpy中被用来模拟数据结果:
>>> import numpy as np >>> l = np.linspace(1, 100, num=10000) >>> print(l) array([ 1. , 1.00990099, 1.01980198, ..., 99.98019802, 99.99009901, 100. ]) 复制代码
__debug__
- 是一个bool类型的常量,对其赋值会抛出语法错误
>>> __debug__ = false syntaxerror: assignment to keyword 复制代码
- 如果python没有使用-o选项启动,此常量是真值,否则是假值。
site
模块添加的常量
模块(在启动期间自动导入,除非给出 -s
命令行选项)将几个常量添加到内置命名空间。 它们对交互式解释器 shell 很有用,并且不应在程序中使用。
-
quit
(code=none) -
exit
(code=none)quit()
和exit()
表示退出python解释器当打印此对象时,会打印出一条消息,例如“use quit() or ctrl-d (i.e. eof) to exit”,当调用此对象时,将使用指定的退出代码来引发
systemexit
。 -
copyright
-
credits
打印或调用的对象分别打印版权或作者的文本。
-
license
当打印此对象时,会打印出一条消息“type license() to see the full license text”,当调用此对象时,将以分页形式显示完整的许可证文本(每次显示一屏)。
最后总结 :不管你是为了python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目,还可以跟老司机交流讨教!
本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。