基础·常量

Python基础教程

一、常量

变量是变化的量,常量则是不变的量。python中没有使用语法强制定义常量,也就是说,python中定义常量本质上就是变量。
如果是常量,那就没必要更改,所以python就只制定了一个规范,而没指定常量的语法,因此常量也是可以修改的,但不建议。

二、内置常量

内置常量
有少数的常量存在于内置命名空间中。 它们是:
False
bool 类型的假值。 给 False 赋值是非法的并会引发 SyntaxError。
True
bool 类型的真值。 给 True 赋值是非法的并会引发 SyntaxError。
None
NoneType 类型的唯一值。 None 经常用于表示缺少值,当因为默认参数未传递给函数时。 给 None 赋值是非法的并会引发 SyntaxError。
NotImplemented
二进制特殊方法应返回的特殊值(例如,__eq__()、__lt__()、__add __()、__rsub__() 等)表示操作没有针对其他类型实现;为了相同的目的,可以通过就地二进制特殊方法
Ellipsis
与省略号文字字面 “…” 相同。 特殊值主要与用户定义的容器数据类型的扩展切片语法结合使用。

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

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语言基础教程

一,基础  ·关键字  ·变量定义  ·字符串  ·(1)数据集合-列表&元组  (2)数据集合-字典  ·常量的定义和使用  · …

json数据操作

Python基础教程 python中操作json的api也非常的方便,我们来看一下。 我们需要用到一个库 import json 然后我们来看一 …

一些使用技巧

直接把数据库查询的查询结果中的某个字段转为集合 daily_cursor = DB_CONN.daily.find( {‘code’: ‘xxxx’, ‘date’: {‘$g …

线程

Python基础教程 在python中有两种线程的操作方式:函数或者用类来包装线程对象 用函数 import _thread import time def …

微信扫一扫,分享到朋友圈

基础·常量