《编写高质量代码–改善python程序的91个建议》这本书,第7个建议:"将常量集中到一个文件"时,印象深刻,觉得很有意义。推荐有机会的话阅读下此书。

此文:Python版本为3.6.9

1.常量统一放到一个文档里面
2.常量必须用大写字母
3.常量在文档里设置后不可再修改

__setattr__的参考链接:https://blog.csdn.net/sinat_24354307/article/details/109881341

步骤1:验证阶段,编写const.py文件和test.py文件

const.py

import sys
class _Const(object):class ConstError(TypeError):passclass ConstCaseError(ConstError):passdef __setattr__(self, key, value):if self.__dict__.get(key) is not None:  # 判断有没有该常量raise self.ConstError('%s 常量已存在' % key)elif not key.isupper():   # isupper判断常量是不是全是大写,可包含阿拉伯数字和下划线raise self.ConstCaseError('%s 常量需要全部大写' % key)else:self.__dict__[key] = value  # 初次设置该常量时会执行这里sys.modules[__name__] = _Const()

test.py

import const
const.AGE = 10
print(const.AGE)
const.AGE = 10   #会报错,常量只能设置一次,同样的值设置2次当然也不行了。#用小写字母也会报错,小编就不再试了

步骤2:实际的情况,编写const.py脚本,配置完所有的常量。用到的地方直接import即可,下方有举例

const.py

import sysclass _Const(object):class ConstError(TypeError):passclass ConstCaseError(ConstError):passdef __setattr__(self, key, value):if self.__dict__.get(key) is not None:  # 判断有没有该常量raise self.ConstError('%s 常量已存在' % key)elif not key.isupper():   # isupper判断常量是不是全是大写,可包含阿拉伯数字和下划线raise self.ConstCaseError('%s 常量需要全部大写' % key)else:self.__dict__[key] = value  # 初次设置该常量时会执行这里sys.modules[__name__] = _Const()
import const
# 请在下方设置用到的所有常量,如果常量用小写字母会立即报错
const.AGE = 10
const.YEAR = 2020
const.NAME = "dachui"

测试脚本test.py如下

import const
print(const.AGE)
const.AGE = 12       #该行会报错

Python设置常量不可修改的办法相关推荐

  1. python设置路径_Python探索之修改Python搜索路径

    当Python执行import语句时,它会在一些路径中搜索Python模块和扩展模块.可以通过sys.path查看这些路径,比如: >>> import sys >>&g ...

  2. python中的常量可以修改吗_python实现不可修改的常量

    因为种种原因,Python并未提供如C/C++/Java一样的const修饰符,换言之,python中没有常量,至少截止2015年年末,还没有这个打算.Python程序一般通过约定俗成的变量名全大写的 ...

  3. python设置横坐标的值_python中画图如何修改横坐标大小?

    原标题:python中画图如何修改横坐标大小? 用matplotlib画二维图像时,默认情况下的横坐标和纵坐标显示的值有时达不到自己的需求,需要借助xticks()和yticks()分别对横坐标x-a ...

  4. python中文版界面-python设置中文界面实例方法

    下面,小编将通过一组实例演示,让大家更直观,更清楚明白的了解要设置中文这一内容的操作步骤. 首先展示实例代码: import pygame from pygame.locals import * de ...

  5. ubuntu查看默认python版本_ubuntu中修改默认Python版本号

    一.背景 ubuntu中默认的Python版本是Python2.X,但是现在Python的最新版本是Python3.X. 那么怎么修改ubutun系统默认的Python解释器呢? 二.查看系统中是否安 ...

  6. 被流氓360设置浏览器主页的解决办法(如果你也遇到了跟我一样的问题,不妨看一下是不是这个原因)...

    最近电脑罢工,重装了系统:很多常用软件都不得不重新安装,其实这都不是事儿,现在基本上都是百兆光纤了,下载安装都很顺溜. 浏览器也在安装之列,因为搞开发所以谷歌火狐浏览器都是必装的:平时基本上都是用谷歌 ...

  7. python的常量_如何给python中设定常量

    操作步骤:在一个.py文件中写好一个const的文件.然后将这个文件放在安装python的lib路径下(具体const文件如截图) python实现不可修改的常量 因为种种原因,Python并未提供如 ...

  8. python设置二维列表_Python设置为列表

    python设置二维列表 Python设置为列表 (Python Set to List) Sometimes we have to create a list from the set object ...

  9. python设置环境变量_Python设置环境变量

    python设置环境变量 We can set an environment variable in Python using os module. Python os module environ ...

最新文章

  1. 只要7天 传统便利店就能免费升级无人超市
  2. 【Keras】The added layer must be an instance of class Layer.
  3. CNN已老,GNN来了:重磅论文讲述深度学习的因果推理
  4. linux退出 putty_使用putty远程连接linux防止关闭putty程序就停止
  5. C++ TR1、TR2与boost的关系
  6. Android开发者指南(29) —— USB Host and Accessory
  7. helm安装mysql_helm安装配置
  8. 深入理解javascript之原型和原型链
  9. wpf中左侧导航的实现
  10. C#:Interval Helper
  11. 原生JS实现简易转盘抽奖
  12. 在后台Service中直接启动Activity
  13. 自动翻转html,css--图片翻转二:自动翻转
  14. Skyline软件二次开发初级——5如何在WEB页面中的三维地图上使用事件函数
  15. 从零开始学电脑知识,一步一步到成为电脑知识高手
  16. 计算机艺术未来发展趋势,数字媒体艺术未来的发展趋势探讨
  17. 唯有志存高远,方能风行天下
  18. 游戏开发之Unity2021智能导航地图烘焙
  19. 知识分享-博客公众号推荐
  20. 基于JAVAWEB技术的网上珠宝系统的设计与实现

热门文章

  1. python规定浮点数类型可以不带小数部分吗_Python标准数据类型-数字
  2. blender2.8与2.7X的一些不同点
  3. python io密集型应用案例-Python中单线程、多线程和多进程的效率对比实验实例
  4. RabbitMQ集群并处理失败
  5. 因特尔计算棒(Intel Movidius Necural Compute)
  6. linux打开文件异常
  7. 9-4push方式整合Spark streaming.
  8. [Matlab] 传入 dsolve 的方程组必须是行向量才能求解
  9. YOLOv1深刻解读
  10. yolo数据集txt标注转voc数据集xml标注格式