常量

一、常量

变量是变化的量,常量则是不变的量。python中没有使用语法强制定义常量,也就是说,python中定义常量本质上就是变量。如果非要定义常量,变量名必须全大写。

AGE_OF_NICK = 19

print(AGE_OF_NICK)

19

AGE_OF_NICK = AGE_OF_NICK + 1

print(AGE_OF_NICK)

20

如果是常量,那就没必要更改,所以python就只制定了一个规范,而没指定常量的语法,因此常量也是可以修改的,但不建议。

在c语言中有专门的常量定义语法,const int age = 19;,一旦定义age为常量,更改age即会报错 。

二、内置常量

内置常量

有少数的常量存在于内置命名空间中。 它们是:

False

bool 类型的假值。 给 False 赋值是非法的并会引发 SyntaxError。

True

bool 类型的真值。 给 True 赋值是非法的并会引发 SyntaxError。

None

NoneType 类型的唯一值。 None 经常用于表示缺少值,当因为默认参数未传递给函数时。 给 None 赋值是非法的并会引发 SyntaxError。

NotImplemented

二进制特殊方法应返回的特殊值(例如,__eq__()、__lt__()、__add __()、__rsub__() 等)表示操作没有针对其他类型实现;为了相同的目的,可以通过就地二进制特殊方法(例如,__imul __()、__ rightnd__() 等)返回。 它的逻辑值为真。

注解 当二进制(或就地)方法返回``NotImplemented``时,解释器将尝试对另一种类型(或其他一些回滚操作,取决于运算符)的反射操作。 如果所有尝试都返回``NotImplemented``,则解释器将引发适当的异常。 错误返回的``NotImplemented``将导致误导性错误消息或返回到Python代码中的``NotImplemented``值。

参见 实现算数运算 为例。

注解 NotImplementedError 和 NotImplemented 不可互换,即使它们有相似的名称和用途。 有关何时使用它的详细信息,请参阅 NotImplementedError。

Ellipsis

与省略号文字字面 “...” 相同。 特殊值主要与用户定义的容器数据类型的扩展切片语法结合使用。

__debug__

如果 Python 没有以 -O 选项启动,则此常量为真值。 另请参见 assert 语句。

注解 变量名 None,False,True 和 __ debug__ 无法重新赋值(赋值给它们,即使是属性名,将引发 SyntaxError ),所以它们可以被认为是“真正的”常数。

由 site 模块添加的常量

site 模块(在启动期间自动导入,除非给出 -S 命令行选项)将几个常量添加到内置命名空间。 它们对交互式解释器 shell 很有用,并且不应在程序中使用。

quit(code=None)

exit(code=None)

当打印此对象时,会打印出一条消息,例如“Use quit() or Ctrl-D (i.e. EOF) to exit”,当调用此对象时,将使用指定的退出代码来引发 SystemExit。

copyright

credits

打印或调用的对象分别打印版权或作者的文本。

license

当打印此对象时,会打印出一条消息“Type license() to see the full license text”,当调用此对象时,将以分页形式显示完整的许可证文本(每次显示一屏)。

三、用模块和类实现真正的常量

const.py

class _const:

class ConstError(TypeError) : pass

def __setattr__(self, key, value):

# self.__dict__

if key in self.__dict__:

data="Can't rebind const (%s)" % key

raise self.ConstError(data)

self.__dict__[key] = value

import sys

sys.modules[__name__] = _const()

test.py

import const

const.c=1

print(const.c) # 1

const.c=2 #const.ConstError: Can't rebind const (c)

sys.modules[key] =value : 返回系统导入的模块字段,key是模块名,value是模块

Python中所有加载到 内存的模块都放在sys.modules。sys.modules是一个全局字典,字典sys.modules对于加载模块起到了缓冲的作用,当import一个模块时首先会在这个列表中查找是否已经加载了此模块,如果加载了则只是将模块的名字加入到正在调用import的模块的Local名字空间中。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。件,模块文件可以是py、pyc、pyd,找到后将模块载入内存,并加入到sys.modules中,并将名称导入到当前的Local名字空间。

python的常量_python常量 (最全常量解析)相关推荐

  1. python 录屏_python实现录制全屏和选择区域录屏功能代码

    本篇文章小编给大家分享一下python实现录制全屏和选择区域录屏功能代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 代码如下: import cv ...

  2. python发送文件_Python发送邮件(最全)

    简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件. Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听 ...

  3. python argparse模块_Python argparse模块应用实例解析

    这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...

  4. python动态映射_Python Django框架url反向解析实现动态生成对应的url链接示例

    本文实例讲述了Python Django框架url反向解析实现动态生成对应的url链接.分享给大家供大家参考,具体如下: url反向解析:根据url路由规则,动态生成对应的url链接 (防止硬编码). ...

  5. python模块实例化_python中zipfile模块实例化解析

    文章内容由--"脚本之家"--提供,在此感谢脚本之家的贡献,该网站网址为:https://www.jb51.net/ 简介: zipfile是python里用来做zip格式编码的压 ...

  6. python切片迭代_Python高级特性 切片 迭代解析

    切片:方便截取list.tuple.字符串部分索引的内容 正序切片 语法:dlist = doList[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3.即索引0,1,2,正好是3个元素 ...

  7. python递归函数特点_Python递归函数特点及原理解析

    1 递归函数的特点 特点 一个函数 内部 调用自己 函数内部可以调用其他函数,当然在函数内部也可以调用自己 代码特点 函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同 当 参数满足一个 ...

  8. python rtsp推流_python处理RSTP视频流过程解析

    python处理RSTP视频流过程解析 这篇文章主要介绍了python处理RSTP视频流过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 py ...

  9. python成语填空_python一步一步解析成语

    做NLPproject时需要一个成语库,我需要的是纯成语,网上找的都是有详细解释的.于是自己写了一个爬成语的python程序. 1.首先找到一个在线成语网站 我选的网站是http://chengyu. ...

  10. python算法口诀_Python 经典算法100及解析(小结)

    1:找出字符串s="aaabbbccceeefff111144444"中,字符出现次数最多的字符 (1)考虑去重,首先将字符串进行过滤去重,这样在根据这些字符进行循环查询时,将会减 ...

最新文章

  1. java鉴权_一个开箱即用的高效认证鉴权框架,专注于restful api的认证鉴权动态保护...
  2. .net下WinDbg使用说明
  3. sql service 从创建访问用户到数据库访问 【SQL】
  4. Leaflet中使用Leaflet-MiniMap插件实现小地图效果
  5. 雅思作文模板.html,雅思小作文常用模板万能句大全
  6. python面向对象教程_Python入门系列教程3-面向对象
  7. 细究STP根端口和指定端口的选举过程
  8. MyBitis(iBitis)系列随笔之四:多表(多对一查询操作)
  9. 关于解决百度网盘盘符无法删除的问题
  10. 人们说程序员很高大上,程序员是做编程的,编程又是做什么呢?
  11. 操作系统实验:系统内存使用统计
  12. 金融学习资料 | 数学篇
  13. 美团脱颖而出的经验_使用条件格式使重要的Outlook邮件脱颖而出
  14. Dom获取 属性操作
  15. vim编辑修改二进制文件以及对于二进制文件中幻数测试
  16. 分布式系统设计和开发_计划,设计和开发设计系统
  17. Unity通过刚体组件和C#脚本,施加力实现物体下落并滚离平面 及相机跟随物体
  18. java-调用阿里身份证验证接口
  19. 天龙八部一键端提取服务器文件夹,TLBB服务端目录文件作用
  20. RGB与Lab颜色空间互相转换 持续更新中

热门文章

  1. 互联网+正在颠覆行车记录仪市场
  2. OpenStack icehouse系列之问题处理
  3. Tcmalloc优化Mysql内存管理
  4. 企业***网的规划及组建
  5. Android的Intent系统调用
  6. SQLite数据库的使用——利用命令行或Navicat Premium创建数据库
  7. 北大计算机QS排名,2019最新QS世界大学排名:清华北大获历史最高名次
  8. 输出表格csv_自动提取生成excel表格!推荐一款开源工具
  9. uni-app 中通过 async + await + Promise 实现 request 请求同步化
  10. 如何验证 nginx.conf 是否配置正确