python中的内置常量(供参考)
本帖最后由 asky533 于 2022-9-3 21:53 编辑什么是常量?
有些新手可能看到标题上来就问:
什么是常量呀?常量和变量有什么区别?
变量之所以叫做变量是因为变量是可变的,而常量叫做常量是因为它不可改变吗?
NoNoNo,不是这样的,我们之所以叫它"常量"是因为这一个变量不怎么改变他的数据。而在制作 Python 项目的时候,有些程序员为了区分变量和常量,就把变量小写,常量大写。
其实, Python 里面就有一些内置的常量,其中还包括 True 和 False 两个布尔类型的值呢!
内容已结束,点击上方目录切换内容^_^
True 与 False
True 和 False就是“真”与“假”的意思,在 Python 里,这两位变成了一个单独的类型,叫做“布尔类型”
在 Python IDLE 的交互模式里面,输入一个算式,例如"1 + 1 = 2"啦,"1 + 2 = 5"啦,甚至还可以输入"1234567 + 7654321 = 8888888"这种难的算式,Python IDLE 会返回一个就像下面一样的布尔类型值:
>>> 1 + 1 = 2
True
>>> 1 + 2 = 2 #试着输入一下错误的算式
False
>>> #可以看到,要是我们输入一个正确的算式,Python 就会返回 True ,而要是输入的算式不成立,Python 就会返回 False
>>> #除此之外,我们还可以用 True 和 False 代表"1"和"0"来做加减乘除运算(但是不建议这么做,因为会引起代码的混乱)
>>> True + False
1
>>> True - False
1
>>> True = 0#现在再来试着给 True 赋值
SyntaxError: cannot assign to True
>>> #看见了吧,你不能为 True 或 False 赋值,在为变量命名时要避开它们
内容已结束,点击上方目录切换内容^_^
None 常量
None 常量通常用于表示一个空的值,特别是在给某个函数的参数赋值的时候,常用 None 表示啥都没有。
所以这样写的话:
print("Oh my God!!!", sep=None, end=None)
就相当于这样写:
print("Oh my God!!!")
注意:给 None 赋值也是会触发 SynyaxError,不能给 Python 内置常量赋值,这点要多加注意。
内容已结束,点击上方目录切换内容^_^
NotImplemented 常量
NotImplemented 常量,光名字听着就觉得很复杂,更不知道它的内部有多复杂呢!
咳咳,听着,听不懂也没关系,我会在本段末尾附上常见问题解答:
应当由双目运算特殊方法(如 __eq__(), __lt__(), __add__(), __rsub__() 等)返回的特殊值,用于表明运算没有针对其他类型的实现;也可由原地双目运算特殊方法(如 __imul__(), __iand__() 等)出于同样的目的而返回。 它不应在布尔运算中被求值。 NotImplemented 是 types.NotImplementedType 类型的唯一实例。
注解:当二进制(或就地)方法返回 "NotImplemented" 时,解释器将尝试对另一种类型(或其他一些回滚操作,取决于运算符)的反射操作。 如果所有尝试都返回 ""NotImplemented",则解释器将引发适当的异常。
错误返回的 ""NotImplemented"" 将导致误导性错误消息或返回到 Python 代码中的 "NotImplemented" 值。NotImplementedError 和 NotImplemented 不可互换,即使它们有相似的名称和用途。
你学废了吗?
怎么样,听得一头雾水吧{:10_245:} ,下面迎来救星——问题解答!
Q :什么是双目运算特殊方法?
A :要知道双目运算特殊方法,首先就要知道双目运算:根据操作数的个数,运算符可以分为单目,双目,三目运算符,也成为一元,二元,三元运算符等。若完成一个操作需要两个操作数,则称该运算符为双目运算符;若完成一个操作需要一个操作数,则称该运算符为单目运算符。
那么双目运算特殊方法就是专门做双目运算的特殊方法罗?
没错!!!
Q :type.NotImplementedType是什么?
A :就是 NotImplemented 呀!
再说一遍:
NotImplemented (也就是type.NotImplementedType) 应当由双目运算特殊方法(如 __eq__(), __lt__(), __add__(), __rsub__() 等)返回的特殊值,用于表明运算没有针对其他类型的实现;也可由原地双目运算特殊方法(如 __imul__(), __iand__() 等)出于同样的目的而返回。
温馨提示:想要使用 type.NotImplementedType 时要导入 type 模块(import type)哦~~~
Q :什么是回滚操作?
A :回滚指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。回滚包括程序回滚和数据回滚等类型。删除由一个或多个部分完成的事务执行的更新。为保证应用程序、数据库或系统错误后还原数据库的完整性,需要使用回滚。回滚泛指程序更新失败, 返回上一次正确状态的行为。回滚对程序员意味着非常严重的失误。所以回滚次数往往与程序员的薪金直接联系。主流互联网公司通常都将回滚定位为最严重的事故。
注意:回滚与恢复有本质的区别。
Q :什么是 NotImplementedError?
A :NotImplementedError 异常派生自 RuntimeError。在用户自定义的基类中,抽象方法应当在其要求所派生类重载该方法,或是在其要求所开发的类提示具体实现尚待添加时引发此异常。
那什么又是 RuntimeError 呢?
RuntimeError 当检测到一个不归属于任何其他类别的错误时将被引发。 关联的值是一个指明究竟发生了什么问题的字符串。
Ellipsis 常量
Ellipsis 常量与省略号字面值"……"一样,Ellipsis 常量主要是与用户定义的容器数据类型的扩展切片语法结合使用。 Ellipsis 是 types.EllipsisType 类型的唯一实例。
天哪,是不是感觉一股巨大的压力向你袭来?这是啥?那是啥?!@#¥!@……
由于这篇帖子是供鱼油们参考的,所以我们要关注一下那些不太懂的鱼油,接下来的解答环节听懂的鱼油可以跳过^_^
Q: 什么是字面值?
A: 字面值是指在程序中无需变量保存,可直接表示为一个具体的数字或字符串的值。比如在a = b * 2这个语句中,2就是一个字面值,它本身就是一个具体的值.
Q: 什么是容器数据类型?
A: 容器数据类型就是能像容器那样存储不同的元素的数据类型。列表list、元组tuple、字符串str、字典dict、集合set都是属于容器类型。
Q: 什么是切片?
A: 切片就是在序列对象(数组、字符串、元组或列表等)中选择某个范围内的项。比如 一个字符串 是 “I love FishC.com”,截取第2个到第5个字符,这个过程就是切片.
内容已结束,请点击上方目录页切换内容^_^
__debug__ 常量
__debug__常量用于判断如果 Python 没有以 -O 选项启动,则此常量为真值。
注解:变量名 None,False,True 和 __ debug__ 无法重新赋值(赋值给它们,即使是属性名,也将引发 SyntaxError ),所以它们可以被认为是“真正的”常量。
解答环节:
Q: 什么是 -O 选项?
A: 在命令提示符中可以用 -O 选项更改存储位置,正常情况下__debug__常量为 True。
内容已结束,请点击上方目录切换内容^_^ 感谢楼主的分享
页:
[1]