首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

构造Python中的常量

构建常量 Python中不存在像const那样的常量关键字,只是在内建空间中提供了一小部分常量,比如True、False、None等。那么在Python中如何使用常量呢?...一般来说有如下两种方法: 通过命名风格来提示使用者该变量代表的意义为常量,比如MAX_NUMBER、TOTAL。...然而这种方式并没有真正实现常量,其对应的值仍然可以被改变,这只是一种约定俗成的风格。 通过自定义实现常量功能。这要求符合“命名全部为大写”和“值一旦被绑定便不可再修改”这两个条件。...= value import sys sys.modules[__name__] = _const() 如果上面的代码对应的模块名为const,使用的时候只要import const,便可以直接定义常量了...---- 将常量集中到一个文件 无论采用那种方式实现常量,都建议将常量集中到一个文件中,因为这样有利于维护,一旦修改常量的值,可以集中统一进行而不是逐个进行检查。

3.2K20

Python 定义自己的常量

在很多高级语言中都会提供常量的关键字来定义常量,如 C++ 中的 const , Java 中的 final 等,但是 Python 语言因为变量无类型,所以也就不存在这样的修饰符,其本身并未提供任何机制来进行常量的定义...因此我们只能通过自己定义的方法来定义一个符合常量规则的,使得该类定义的成员属性满足常量的属性。...由于常量的值一旦绑定则不可再修改,所以也就是说对常量二次赋值时需要抛出异常。因此我们显然需要改写自定义的常量的赋值方法。...在 Python 中,当我们对的属性进行赋值时,会自动调用 object 的 __setattr__() 函数,该函数的定义如下: object....异常处理的定义方式请参看:Python 错误和异常 定义常量: constant.py import sys class _const: # 自定义异常处理 class ConstError

3.6K50
您找到你想要的搜索结果了吗?
是的
没有找到

常量接口 vs 常量 vs 枚举区别

常量定义在接口里与里都能通过编译,那2者到底有什么区别呢? 那个更合理?...开发人员在没有参考资料时, 不可能知道某个 int 型的参数到底应该赋什么内容 编译时, 是直接把常量的值编译到的二进制代码里, 常量的值在升级中变化后, 需要重新编译所有引用常量, 因为里面存的是旧值...String CONST_C = "cc"; private ConstClassA() { } } 常量可以设置构造函数为 private 从而限制继承, 也就没有继续添加常量的问题了...编译时, 没有把常量值编译到代码里, 即使常量的值发生变化也不会影响引用常量 enum 类型 public static enum Grade { A(4), B(3),...查看 enum 反编译后的代码与枚举常量的结构非常相似 这可能是因为 java 的设计者一开始觉得 enum 与 OO 思想不符 所以没有提供支持, 但是随着常量接口的滥用和枚举常量方案的出现 才在

14630

String 常量

String-Pool-Java String 类型的常量池比较特殊,它的主要使用方法有两种: 直接使用双引号声明出来的 String 对象,会直接存储在常量池中 如果不是用双引号声明的 String...String.intern() 是一个 Native 方法,它的作用是:如果运行常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用;如果没有,则在常量池中创建与此...String 内容相同的字符串,并返回常量池中创建的字符串的引用。...System.out.println(s1.equals(s2)); // 输出 true 8 种基本类型的包装常量池 Java 基本类型的包装的大部分都实现了常量池技术,即 Byte,Short...,Integer,Long,Character,Boolean;这 5 种包装默认创建了数值[-128,127] 的相应类型的缓存数据,而超出此范围的仍然会去创建新的对象 两种浮点数类型的包装 Float

51620

EasyC++62,常量枚举

这是EasyC++系列的第62篇,常量枚举。 常量 有的时候, 我们希望能给当中定义一些常量,可以给所有的对象使用。...比如说我们在当中定义一个数组,希望可以定义一个常量,用来初始化数组的长度。既然是用来初始化数组长度的,那么这个值自然也不会改变,我们定义成const是否可行呢?...这个常量会和其他静态变量存储在一起,而不是存储在对象里,这样的话也就被所有对象共享了。 对于像是Java、Python等其他语言来说,中的静态变量是可以通过名直接访问的,而C++中不行。...通过这种方式声明并不会创建数据成员,对于的对象来说,并不包含枚举,这里的N只是一个符号名称。在当中遇到它的时候,编译器会用15来代替。...也正是因为我们只是为了创建符号常量,而不是创建枚举类型的变量,所以不需要提供枚举名。有一些C++的库当中也用到了这种方法,比如ios_base::fixed等。

27630

PHP面向对象-常量

在 PHP 中,常量是指在定义中定义的固定值,一旦定义就不可改变。常量可以被的任何方法调用,也可以通过名直接访问。...与普通变量不同,常量在定义时必须被赋值,并且不能被重新赋值或取消定义。常量是通过 const 关键字定义的。...常量的访问方式有两种:通过名直接访问和通过对象访问。...通过名直接访问常量的语法格式如下:ClassName::CONSTANT_NAME通过对象访问常量的语法格式如下:$objectName::CONSTANT_NAME下面是一个使用常量的示例:class...我们还通过 Math::PI 直接访问 Math 常量 PI。常量也可以用于定义全局常量,这样可以确保这些常量在应用程序的所有部分中都是一致的。

82830

【说站】java常量是什么

java常量是什么 1、在Java中,经常希望某个常量可以在一个的多个方法中使用,通常将这些常量称为常量。 可以使用关键字 static final 设置一个常量。...2、常量的定义位于main方法的外部,因此,在同一个的其他方法中也可以使用这个常量。 而且,一个常量被声明为public,那么其他的方法也可以使用这个常量。... *********************************/ /**  * Common常量列表(存放公共的常量)  ***/ public static final class Common...*********************************/ /**  * User 存放和User相关的常量  ***/ public static final class User {  ...return USER_IN_SESSION; }   // public static String USER_NAME() { return USER_NAME; } }   } 以上就是java常量的介绍

25220

python常量和变量

1.1 常量 常量是内存中用于保存固定值的单元,在程序中常量的值不能发生改变;python并没有命名常量,也就是说不能像C语言那样给常量起一个名字。...python常量包括:数字、字符串、布尔值、空值; 一般所有字母大写 例子 1 PI =3.141592653 2 print(PI) 3 PI =3 4 print(PI) 1.2 变量 变量是内存中命名的存储位置...,与常量不同的是变量的值是可以动态变化的;python中变量的命名规则如下: 变量的名字的第1个字符必须是字母或下划线(_); 变量的名字的第1个字符后边可以使由字母、下划线(_)、或数字(0~9)组成...; 变量的名字是区分大小写的,也就是说Score和score是不同的; 在python中对变量进行赋值时,使用单引号和双引号的效果是完全一样的; python中已经被使用的一些关键字不能用于声明变量;...print((3+6)/5) print((3+6)/5+3) print(((3+6)/5+3)*2) 命名规范 1.用数字.字母.下划线组成 2.不能用数字开头.更不能是纯数字 3.不能使用python

73650

【小家java】java中维护常量使用常量?接口?还是枚举呢?

因为我在阅读《Effective Java》这本书中提到过: 如果某个实现了常量接口的被修改不再需要常量了,也会因为序列化兼容原因不得不保持该实现,而且非final实现常量接口会导致所有子类被污染...而应当用在与之相关的中。这样能保持很好的层级关系和隔离性,方便分包和扩展,具体请参考spring中对常量维护的原则。...当然,刚才说了不建议把一般的常量放在接口里,所以我们可以放在常量了,但建议常量是final的。 什么时候使用枚举呢?其实建议使用枚举。...此处个人不建议什么都使用枚举来代替常量。比如毫无规则归类可言的一些常量:如SUCCUSS字符串、密钥串、路径等等这些,可以放在一个常量里面糅在一起。...而常量可以收集管理一些比较杂的一些常量。而接口的中的常量,在遵循开闭原则的基础上,向上抽象管理自己的内聚的常量 4、最后 写代码也是一种艺术,结构层次好的代码可以少出bug,提高效率。

3.4K21

C++:09---静态成员、常量成员

但是建议在内定义、外初始化 可以直接通过名直接访问 class Cperson { private: static int age; static int getAge();...静态函数 因为静态函数不属于某一对象,所以函数内不存在this指针 静态成员函数不能被声明为const类型(“静态成员函数是属于的,而不是某个具体对象,在没有具体对象的时候静态成员就已经存在,静态成员函数不会访问到非静态成员...::age=18; void Cperson::setPerson() { age=20;//正确,可调用静态成员 height=178;//错误,不可调用普通成员 } 二、常量成员...const数据成员只能在构造函数的初始化列表进行初始化 const数据成员在初始化之后,不允许再次修改值 class Cperson { private: const int age;//常量数据成员...当对象为常量对象时,只允许访问常量函数成员 class Cperson { private: const int age;//常量数据成员 float height; public

1.5K40

Python优化机制:常量折叠

在本文中,我们深入探讨了什么是常量折叠,了解了它在 Python 世界中的适用范围,最后解读了 Python 的源代码(即 CPython),并分析出 Python 是如何优雅地实现它。...因此,上述表达式可以等效地被执行为: >>> day_sec = 86400 Python 中的常量折叠 在 Python 中,我们可以使用反汇编模块(Disassembler)获取 CPython...常量折叠的适应范围 Python 会尝试折叠每一个常量表达式,但在某些情况下,即使该表达式是常量,但是 Python 并不会对其进行折叠。.../) Python dis模块与常量折叠(https://yasoob.me/2019/02/26/python-dis-module-and-constant-folding/) CPython实现常量折叠的简单方法...(https://utcc.utoronto.ca/~cks/space/blog/python/CPythonConstantFolding) AST的常量折叠优化过程(https://bugs.python.org

71300

Python编程 变量与常量

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。   ...座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ ---- 目录 前言 一.变量与常量 1.变量与常量的定义 2.变量与常量的区别 3.变量的创建 4.变量的创建 重点 5.id...()函数 常量 ---- 前言 本章将会讲解在Python编程中的变量与常量,了解变量与常量的定义,和他们之间的区别,以及如何创建变量。...可以同时为多个变量赋值 总结: 在Python当中创建变量无需声明类型 每个变量在使用前都必须赋值,变量赋值以后才会被创建 “=”号这个赋值运算符是从右往左的计算顺序 Python允许同时为多个变量赋值...---- 常量 常量就是不变的量,或者说在程序运行过程中不会改变的量。在Python中使用全部大写来辨别常量。 注意:Python中没有保护常量的机制,所以也没有严格意义上的常量

39220
领券