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

为什么Python决定反对常量引用?

Python决定反对常量引用主要是为了保持语言的一致性和简单性。在Python中,常量是可以修改的,这可能会导致出现一些不稳定的行为,例如在程序运行过程中常量被修改。因此,为了维护语言的一致性和简单性,Python决定反对常量引用。

此外,反对常量引用还可以避免一些潜在的错误。例如,如果一个常量被引用,但是没有被及时更新,那么可能会导致程序中出现错误的结果。反对常量引用还可以帮助开发人员更好地控制变量的生命周期,从而提高程序的可靠性。

对于需要使用常量的场景,Python提供了另一种方式来定义常量,即使用const关键字定义常量。使用const关键字定义的常量是只读的,不能在程序运行过程中被修改,从而保证了常量的稳定性和一致性。同时,使用const关键字定义常量还可以避免一些潜在的错误,提高程序的可靠性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 为什么要在 18 年前引入布尔类型?且与 C、C++ 和 Java 都不同?

花下猫语:在上一篇《Python 为什么能支持任意的真值判断? 》文章中,我们分析了 Python 在真值判断时的底层实现,可以看出 Python 在对待布尔值时,采用了比较宽泛的态度。...有很多反对本 PEP 的观点。其中多数是出于误解。我已尝试在下面的 PEP 正文中澄清一些最常见的误解。...“and”和“or”运算符被设计来返回第一个决定了结果的参数,这点不会改变;特别地,它们不强制要求结果为布尔类型。当然,如果两个参数都是布尔值,那么结果肯定是一个布尔值。...解决这个问题很容易(无需显式引用 bool 类型),并且预计这只会影响非常少量的可以轻松修复的代码。 其它语言(C99、C ++、Java)均以小写形式命名常量“false”和“true”。...对于Python,我更喜欢遵照现有内置常量的惯例,这些内置常量全部使用驼峰式命名:None 、Ellipsis、NotImplemented (以及所有的内置异常)。

1K20

python - one day

2008 年出现 python 2.7 与 python 3.0 两个版本,后来 吉多·范罗苏姆 大叔决定停用 python 2.7,但因用户反对,于是决定于 2020 年停止 python 2.7 的更新... 宏观上: python2 与 python3 区别:python2 源码不标准,混乱,重复代码太多,python3 统一 标准,去除重复代码 2. python的环境  编译型:一次性将所有程序编译成二进制文件...,php,等等 3. python种类 运行第一个py文件:   python3x :python 文件路径 回车     python2x :python2 文件路径 回车     python2 python3...常量 常量:一直不变的量 ,如:圆周率 π     BIR_OF_CHINA = 1949 ,python中没有常量,约定俗成的大写为常量 6....注释 注释: 方便自己方便他人理解代码   单行注释:#   多行注释:'''被注释内容'''  """被注释内容""" 当引用换行的语句时应该用 3 个单引号或双引号进行引用 """ 我今天写了一首小诗

56710

C#系列之编程语言好坏撕逼大战

基本上我的很多朋友也在转其他语言,理由很简单,因为很多公司不用.NET,那为什么不用呢?因为领导觉得.NET不行,所以要换,问题来了,为什么是“觉得.NET不行"?有数据能说话吗?还是拍脑袋的?...我觉得Java、Python语言的高薪资只是暂时的,任何语言都有兴衰,Java自从被Oracle收购后一蹶不振;Python刚刚兴起,正值壮年,关键看谁能熬到最后。...C# 支持(0)反对(0) 回复引用 #254楼 2015-04-29 19:11 HolleHuang @李宏 引用@HolleHuang 单纯的说一句,您知道JAVA8里的LAMBDA式和C...支持(0)反对(0) 回复引用 #257楼 2015-04-29 19:20 HolleHuang @李宏 引用@HolleHuang PS:如果你说C#抄JAVA,C++和C可能会表示很不服。...对象,类概念java抄C++ 函数,逻辑语法概念java抄c 变量,常量概念java抄汇编的寄存器概念 所以编程语言都是相互借鉴,不断改进的过程 支持(0)反对(0) 回复引用 #270楼 2015

2.3K70

php中各种定义变量的方法小结

GLOBALS 数组: 如:$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; 在一个函数域内用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用...global $obj; 注:对于变量的 static 和 global 定义是以 应用 的方式实现的 6.给变量赋值:传地址赋值(简单引用): $bar = &$foo; //加&符号到将要赋值的变量前.../【技术点,其实还需要更多地实践】/改变了) 7.PHP 超全局变量$GLOBALS : 包含一个引用指向每个当前脚本的全局范围内有效的变量。...类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用)。 $_GET : 经由 HTTP GET 方法提交至脚本的变量。...参见手册中为什么 $w3sky[bar] 是错误的(除非事先用 define() 将 bar 定义为一个常量)。如果只想检查是否定义了某常量,用 defined() 函数。

3.6K30

Python 为什么会有个奇怪的“...”对象?

在写上一篇《Python 为什么要有 pass 语句?》时,我想到一种特别的写法,很多人会把它当成 pass 语句的替代。在文章发布后,果然有三条留言提及了它。...用它替换 pass,在语法上并不会报错,因为 Python 允许一个对象不被赋值引用。...3、为什么要使用“...”对象? 接下来,让我们回到标题的问题:Python 为什么要使用“...”对象?...可以被用作占位符,也就是我在《Python 为什么要有 pass 语句?》中提到 pass 的作用。前文中对此已有部分分析。...对于列表和字典这样的容器,如果其内部元素是可变对象的话,则存储的是对可变对象的引用。那么,当其内部元素又引用容器自身时,就会递归地出现无限循环引用

2K10

首先得声明一下,本文不是在黑 Python

的时候,Python 解释器会创建一个新对象,然后同时引用第二个变量(译:仅适用于3.7以下,详细情况请看这里)。如果你在不同的行上进行赋值操作,它就不会“知道”已经有一个 wtf!...常量折叠(constant folding) 是 Python 中的一种窥孔优化( peephole optimization)技术。...函数的返回值由最后执行的 return 语句决定。由于 finally 子句一定会执行,所以 finally 子句中的 return 将始终是最后执行的语句。 关于类的本质 ? 输出: ?...那为什么 is 操作的结果为 False 呢? 这是由对象销毁的顺序造成的. 你了解 Python 中的 for 循环语句吗 —— ? 输出: ?...因此 is 代表引用相同,== 代表值相等,还有一个例子可以用来说明这一点—— ?

48210

Python变量与常量

与变量相对的就是常量,在程序运行过程中,常量的值不会发生改变。...不同于其他语言,例如在C语言中,变量在被赋值前,必须先定义变量的类型,而Python不需要,可以不定义变量的类型直接赋值,Python解释器会根据语法和操作数决定对象的类型。 ?...引用计数 和 垃圾回收机制 引用计数 Python使用引用计数来追踪内存中的对象。.....objN]] 执行 del x 后的两个动作: 1)从现在的名称空间中删除x 2)x所指向的对象的引用计数减1 垃圾回收机制 Python的GC模块通过引用计数来跟踪和回收垃圾。...5、常量 常量指在程序运行过程中不会改变的量,c语言中有专门的常量定义语法:const int a = 60; 常量定义之后就不能更改,若更改就会报错,Python中没有类似const这样的修饰符,即没有专门用于定义常量的语法

1.1K10

Java岗大厂面试百日冲刺【Day53】— 基础篇4 (日积月累,每日三题)

面试题2:为什么 String 在 Java 中是不可变(final)的? 面试题3:为什么说 char[] 比 Java 中的 String 更适合存储密码?...,如果字符串常量池中没有,都在常量池中创建一个,如果有,前者直接引用,后者在堆内存中还需创建一个“abc”实例对象。...对于基础类型的变量和常量:变量和引用存储在栈中,常量存储在常量池中。...所以 value 也只是一个引用,它指向一个真正的数组对象。...应遵循 Java 团队的建议, 坚持标准而不是反对它。 3、使用 String 时,总是存在在日志文件或控制台中打印纯文本的风险,但如果使用 Array,则不会打印数组的内容而是打印其内存位置。

36820

P002PHP开发之变量定义

GLOBALS 数组: 如:$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; 在一个函数域内用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用...global $obj; 注:对于变量的 static 和 global 定义是以 应用 的方式实现的 6.给变量赋值:传地址赋值(简单引用): $bar = &$foo; //加&符号到将要赋值的变量前...改动新的变量将影响到原始变量,这种赋值操作更加快速 注意:只有命名变量才可以传地址赋值 注意:如果 $bar = &$a; $bar = &$foo; 改变$bar的值只能改变变量foo的值,而不改变a的值(引用改变了...) 7.PHP 超全局变量$GLOBALS : 包含一个引用指向每个当前脚本的全局范围内有效的变量。...类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用)。 $_GET : 经由 HTTP GET 方法提交至脚本的变量。

1.2K30

Python入门(4)

第四节 常量和变量 大家好,今天开始正式学习Python语法。最基础的东西无外乎:常量和变量、数据类型和数据结构、流程控制语句等。...事实上,因为python是强对象类型的,python的任何对象都必须明确申明类型,而变量只是对对象的一个引用。...所以,变量本身没有类型,只有对象才有类型,但是一旦对象被变量引用成功,它便有了类型。所以,变量是动态类型。这就是为什么python中,定义变量无需声明类型的原因。...例如:x = 5 这个式子定义了一个变量,它看起来极其简单,但它明确地做了以下4件事: (1)、它声明了一个标识符 x; (2)、引用了一个对象:即字面常量(数字)5; (3)、为该变量 x 赋了一个值...小结 这一节,我们介绍了Python语言的两个最基本的语法概念:常量和变量。 1、常量(数字、字符串)是不可变的。 2、变量可以是任何类型,这依赖于它引用了什么样的对象,因此,它是动态类型。

41520

WeeklyPEP-3-PEP 318-函数装饰器-overview

决定为什么这么难 在 Python 2.2 之后就有两个装饰器(classmethod() 和 staticmethod())可以被使用。...差不多从这时起,大家便认为 Python 最终会在语言层面为它们添加语法上的支持。也许你会好奇,为什么达成最终的共识如此困难(从 Python 2.2 到 Python 2.4)。...在 2.4a3 版本中要求每行一个装饰器(在 2.4a2 版本中,可以在同一行指定多个装饰器),而 2.4final 的最终决定是每行一个装饰器。也有人抱怨说这种语法会是的在使用多个装饰器时变得笨重。...第二个更严重的反对意见是,在s使用多个装饰器的情况下语法会显得及其笨重。...为什么使用 @ 在 Java 的历史中,@ 最初在 Javadoc comments 中使用被作为标记,后来在 Java 1.5 中用于 annotations,类似于 Python 装饰器。

11510

java静态全局变量和全局变量的区别_java静态全局变量

许多编程语言都具有用于声明全局变量的特殊语法,例如,Python使我们可以使用global关键字: global a_variable = 5 C通过简单地在函数外部声明变量来创建全局变量。...Java为什么不使用全局变量? 这个问题的简短答案是:故意设计。Java被创建为纯粹的面向对象的编程语言,这就是为什么您创建的所有内容都包装在一个类中的原因。...对于在程序运行时不应更改的数据,使用常量而不是变量也是明智的。...另一个常见用法是在应用程序中定义一些常量,这些常量具有您经常使用的不可变值。...最终,使用它们的决定权在您或开发团队的高级成员身上。

4.4K40

Python】04、python基础数

1、常量和变量 2、基本数据类型 3、运算符 一、常量与变量 1、常量 常量:其值不变的量           一旦赋值,其值就不可再改变;           就是说不能再重新赋值,很像shell中的只读变量...,python中不存在常量 字面常量:一个单独出现的量,未赋值给任何变量或常量。...2、变量 变量:其值可变的量           是一个名字,在赋值符号的左边,这个名字可以指代复制符号右边的内容 python将所有数据存为内存对象,变量本质上是指内存对象的引用,变量名和内存对象是分开存放的...,就直接进行绑定;否则,则由“=”创建引用的对象 二、python的基本数据类型 1、数值类型 int:整型,整数 python中int原则上来说无限大,没有溢出;没有长度限制,只受制于内存的大小...14]: 56>>3 Out[14]: 7 7、运算符的优先级      算术运算 > 比较运算 > 逻辑运算      但可以通过括号类改变优先级      拿不准或表达式比较复杂的时候,使用括号来决定优先级

97210

AI 学习之路——轻松初探 Python 篇(二)

一些建议 今天在群里,有的小伙伴建议我使用一些类似 PyCharm 这样的智能编译器来入门 Python,实际上我何尝不想用编译器呢,我也是老早就下载了 PyCharm,但我还是决定在学习的过程中不使用任何智能编译器...为什么一再强调这样做呢,在上大学的时候,每次学一门新的语言,老师都会强调让我们用命令行来编译代码,这样做不仅能帮助我们更好的理解一门语言的编译过程,而且一行一行敲出来可以更好的培养我们对这门语言的「语感...a = 'ABC' b = a a = "XYZ" print(b) 这里的 b 打印出来是 'ABC',a 和 b 存储的是引用指针,b = a 的时候,b 存储了 a 的引用,当 a 的引用变化的时候...,b 的引用当然不会变化,而字符串又是一种常量池的实现方式,所以 b 就会打印出来 'ABC',大家是不是觉得和 Java 非常类似呢 常量Python 中用大写字母表示: PI = 3.141592653...只是约定俗成用这种方式来表示常量罢了。

928120

c++基础之变量和基本类型

对于这块内容,我觉得自己的知识还是有欠缺了,因此我决定近期重新翻一翻很早以前买的《c++ primer》 学习一下,并整理学习笔记 背景介绍 为什么会想到再次重新学习c++的基础内容呢?...而浮点数一般习惯上以科学计数法的形式给出 二进制以 0b开头,八进制以0开头,十六进制以0x开头 数值类型的字面值常量最终会以二进制的形式写入变量所在内存,如何解释由变量的类型决定,默认10进制是带符号的数值...一个表达式是否是常量表达式是根据它的类型和初始值共同决定。...例如在python中 s = 1; #此时s存储的是int类型 s = "hello" # 这个时候s存储的是字符串类型,同一个变量可以随意更改它所存储的数据的类型 auto i = 1; //根据表达式结果推断出...i应该是int i = "hello world"; //i是int,只能存储int类型的数据,不能存储字符串数据 当初教科书上说的是在编译期就决定类型的是静态语言,运行期就决定类型的是动态语言。

1.5K30

Python 缩进语法的起源:上世纪 60-70 年代的大胆创意!

》简单概括:当时在设计新的编程语言时,他们受到了一篇文章的强烈影响,决定仅采用缩进语法来控制代码块的分组。...我极为推崇 Python 的强制缩进语法,曾写过一篇《Python为什么使用缩进来划分代码块?》...介绍了这种设计的 8 个原因,但是,该文收到了大量的反对声,因此,我又补写了一篇《Python 的缩进是不是反人类的设计?》。...因此,我决定沿着前文的线索,继续挖掘它们设计缩进语法的起源。...最后,如果你对 Python 其它语法的起源、为什么这样设计、跟其它语言的区别等等话题感兴趣,欢迎关注“Python 为什么”系列(请在 Github 上给颗小星星吧,喵~)

33640

Google C++ 编程风格指南(五):其他 C++ 特性

引入异常使得 C++ 与 Python, Java 以及其它类 C++ 的语言更一脉相承。 有些第三方 C++ 库依赖异常,禁用异常就不好用了。 异常是处理构造函数失败的唯一途径。...我们并不是基于哲学或道德层面反对使用异常, 而是在实践的基础上....因此, 我们不希望用户来决定是使用流还是 printf + read/write. 相反, 我们应该决定到底用哪一种方式. 把日志作为特例是因为日志是一个非常独特的应用, 还有一些是历史原因....既然两种自增方式实现的功能一样, 为什么不总是使用前置自增呢? 缺点: 在 C 开发中, 当表达式的值未被使用时, 传统的做法是使用后置自增, 特别是在 for 循环中....用宏表示常量可被 const 变量代替. 用宏 “缩写” 长变量名可被引用代替. 用宏进行条件编译… 这个, 千万别这么做, 会令测试更加痛苦 (#define 防止头文件重包含当然是个特例).

1.1K30

从String的intern()到常量

System.out.println(str1 == str2); //true System.out.println(str3 == str4); //false 同样是创建字符串,两对等值的字符串进行比较为什么结果不一样...和常量池之间又有什么联系? 常量常量池是存放字面量、符号引用或直接引用的地方。而常量池又分为class常量池和运行时常量池。 class常量池 class常量池是存放编译期类中的字面量和符号引用。...而第二种方式创建的字符串,会在字符串池中查找是否有与构造参数等值的字符串,以此决定是否需要在常量池新建字符串,然后拷贝常量池中字符串在Heap创建一个新的字符串。...从上面的代码中也得出结论:intern()可以将堆中创建的且字符串池没有等值引用的字符串引用放入字符串池。 同时,这也能说明String为什么不可变这个问题。...在常量池创建了"string"并将其引用放入字符串池,str1调用intern()返回的是常量池中的引用,而str1指向的是堆中的引用,所以输出为false。

26220

Google内部掀起风波,员工抗议与军方合作有关人工智能的项目

请愿书引用了Google避免军事工作的历史和著名的“不要做恶”的口号。Alphabet的AI研究实验室之一甚至已经远离了该项目。反对这项交易的员工认为,它是朝向杀人机器人迈出的第一步。...Google称,该软件不用于识别目标或做出任何攻击性决定。 许多员工认为她的理性化说法不具说服力。即使AI团队的成员也表示反对,他们担心与五角大楼合作会损害与消费者的关系以及Google招聘的能力。...数字权利基金会(Digital Rights Foundation)主任Nighat Dad引用两名半岛电视台记者的案例,他们提起了法律上的投诉,称他们被美国政府的天网监视系统错误地置于无人机“杀人名单...如果Google希望从事为军队做分类的事情,那么公众有权关心Google会成为什么样的公司,”Google的云部门没有通过分类项目的认证。Google发言人拒绝透露该公司是否会获得该认证。...几位高管私下说,他们信任Pichaik能做出适当的决定。这笔交易也没有出现在人工智能大会上。

37040
领券