美文网首页
基础·常量

基础·常量

作者: 三米板 | 来源:发表于2020-03-14 18:52 被阅读0次

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名字空间。

相关文章

  • java

    语法基础1.1 java初体验(语法基础)1.2 变量和常量(语法基础)1.2 变量和常量(语法基础)1.4 流程...

  • tensoflow基础-常量

    tensoflow基础-常量

  • Swift 2.0 学习笔记 1_基础部分

    //: 基础部分 //: 常量和变量 //: 声明常量和变量 // let: 常量 var: 变量 let max...

  • 基础·常量

    Python基础教程 一、常量 变量是变化的量,常量则是不变的量。python中没有使用语法强制定义常量,也就是说...

  • 2018-11-08 JavaScript 基础回顾

    JavaScript 基础回顾 常量(字面量) 比如:100,“abc”alert(123)//整数常量;aler...

  • 我的swift开发之路-01(swift语言学习)

    一、基础部分 1>常量、变量声明 常量:let propertyName : type = value 变量:v...

  • Go基础——常量

    定义 关键字 const 被用于表示常量,常量用于存储不会改变的数据,常量中的数据类型只可以是布尔型、数字型(整数...

  • Java基础-常量

    常量在程序运行时是不能被修改的。 在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似: 虽然常...

  • 变量和常量在内存中的分配

    对于基础类型的变量和常量,变量和引用存储在栈中,常量存储在常量池中。 其实这里很好理解,常量池就是不会变化的量嘛,...

  • golang reflect 反射包

    基础类型描述 Type Kindtype Kind uint 基础类型常量const ( Invalid K...

网友评论

      本文标题:基础·常量

      本文链接:https://www.haomeiwen.com/subject/mkngshtx.html