乐趣区

关于python:python常量

前言

在其余语言中,咱们能够定义一些常量,这些常量值在整个程序生命周期中不会扭转。例如 C /C++ 中有 const 关键字来申明常量,而后 python 却没有真正意义上的常量,python 中该如何应用常量呢?

1. 通过命名格调

咱们常以字母全大写,字母与字母之间用下划线连贯来约定这个变量是常量,例如 WINDOW_WIDTH, STUDENT_NAME。然而毛病就是这种只是约定,程序运行期间依然能够更改该变量所属值

2. 应用自定义类

新建文件名 const.py,内容如下

from typing import Any


class Const:


    class ConstCaseError(SyntaxError):
        pass


    class ConstError(SyntaxError):
        pass


    def __setattr__(self, name: str, value: Any) -> None:
        if self.__dict__.get(name):
            raise self.ConstError("Can't chang const.{name}".format(name=name))
        if not name.isupper():
            raise self.ConstCaseError("const name {name} is not uppercase".format(name=name))
        self.__dict__[name] = value


import sys
sys.modules[__name__] = Const()  # Const 单例作为 const 模块 

测试文件 test_const.py

import const  # 同级目录下

# const.name = "hello"  # const.constCaseError
const.NAME = "hello"

print(const.NAME)
const.NAME = "world"  # const.constError
退出移动版