深入理解变量与常量变量其实就是计算机内存里面的一块区域, 这个区域是可以用来存放一些值, 并且这些值都必须在规定的范围以内, 同时这个值还是允许变动的。至于解释器到底会给变量分配多大的内存空间, 以及究竟能存放什么样的数据, 那就得看变量的数据类型是什么了, 它是根据类型来决定分配哪一块指定的内存的。和变量不同, 常量是那种只读的内存区域, 一旦常量完成了初始化操作, 它的内容就彻底固定下来了, 再也不能进行改变了。变量名称仅由字母、数字以及下划线构成, 并且严禁使用数字进行开头, 至于这一点的详细情况, 在前文中已经有过提及, 因此此处不再做出重复的说明。变量赋值其中的变量是不需要进行声明的, 当你去进行一个变量的赋值操作的时候, 这个过程就同时也包含了变量的声明还有定义。每一个变量在内存里面创建出来的时候它都是要包括变量的标识、名称以及数据这些信息的。进行一次新的赋值操作的时候, 就会产生一个全新的变量存在。哪怕这些变量的名字是彼此相同的, 但是它们的内在标识却并不是彼此一样的。变量x的赋值是指定义一个名称为x、初始值为1的变量。print(id(x)) #打印变量x的标识print(x5) #使用变量先执行打印操作, 具体内容是输出一系列等号与文本信息, 其中包含“华丽的分割线”这几个字。将数值2分配给变量x, 以此来为这个变量完成初始化的动作。执行打印ID地址的操作, 这个时候的变量X其实已经是另外一个新的变量了。在输出的时候, 打印那个表达式的内容, 也就是x和5相加的结果。这里的解释是名字是一模一样的, 但是它用的是全新的另一个变量, 那个变量也叫作x。请继续将数据赋值过去。x hello print(id(x))对变量x的值进行输出。在这个时候, x又会被当作一个新的变量来看待并且因为所赋值的那一种数据类型的不同, 这个变量的具体类型也会跟着发生改变。在这里, id()这个词语所代表的是系统当中内置的那个函数。假如说, 这个变量它没有被给定一个值的话, 那么就会去认为这个变量它是不存在于那里的。支持对多个变量同时进行赋值操作的情况。例如变量a会被赋值为一个包含数字1、数字2和数字3的序列, 这属于对序列的定义操作。将序列里的数值分别赋值给x、y和z, 这一步通过把a里面的元素拆分出来实现。print(a : %d, b: %d, z:%d%(x,y,z)) #打印结果变量a的值是1, 变量b的值是2, 变量c的值是字符串john。变量作用域咱们得知道, 局部变量这个东西, 它只能被用在函数里面或者是代码块里头去, 一旦这个函数或者是代码块结束了之后, 那么属于那个局部变量的生命周期也就跟着到头了, 所以说, 局部变量只有在它被创建出来的那个函数内部, 才是有效的。比如说, 如果在文件 1当中的fun()这个函数里面定义了一个局部的变量, 那么这样子的局部变量就仅仅只能被fun()去访问。在文件 1当中所定义的fun2()是不可以进行访问的, 并且它也同样不能够被文件 2去访问。#:file1定义一个名为fun的函数。设置成数字一百, 这是定义一个局域变量。print()def fun2():设置变量zero的值为负一百, 这是在fun2函数里面使用了局部变量, 这种做法是不可以的。执行输出操作, 打印出字符串信息“get zero :”, 后面紧跟着使用数字格式化方式显示的变量zero所对应的数值。fun()#fun2()输出显示结果, 具体为一个空格、一个减号、一个等号和一个百分号d格式的数值负一, 此代码位于文件1中, 其意图在于展示局部变量的使用情况, 然而在当前环境下该做法是不被允许的。################################在大多数的调用序列里面, 最后的错误发生点在。# File E://file1.py, line 10, in# 请打印, 负一等于, 使用符号格式输出, 并且用括号把负一包裹起来。那个名字是空着的, 这样是不对的。################################# (most call last):# File E://file1.py, line 9, in# fun2()这个文件的路径是斜杠E盘下根目录中的file1这个文件, 在第六行代码那里的位置, 有一个名字叫fun2的东西。# zero - 100#: name is not请用户提供需要改写的句子, 我将根据要求对其进行改写。##########:file2file1函数file1.fun()被调用了。print()请提供您需要改写的文本内容。#####运行结果#100# (most call last):错误信息所指向的文件位于 E 盘下的 file2\.py 路径之中, 并且问题出现在第 4 行代码的位置。# print()#: name is not########################在fun()这个函数当中去进行定义的那些属于局部范围的变量, 它们就仅仅是只有fun这一个函数才能够进行访问与操作。全局变量就是那些能够被不同的函数、类或者是文件给共享的变量, 具体来说呢, 就是在函数的外面定义出来的变量, 它们都被称为是全局变量, 然后这类全局变量是可以被当前这个文件里面的任何函数去访问到了的, 同时它也能够被外部的其他文件给访问到的。#:file1将变量设置为等于1, 以此来对它进行全局的定义操作。这串代码的内容被设定成了数字二, 这一操作意在创建一个全局范围内的变量。def ():#引用全局变量这一步操作把那个全局变量的值给改成了3。 1执行打印指令, 将占位符替换为整型变量的值。def (): 5 - 3print( : %d%)()()print(:%d %)print(:%d %)在编程领域, 数字4通常被用来作为识别码指向一个局部变量。# : 2#:3 在去执行那个叫做()的函数的阶段, 全局变量是被改变的。全局变量在执行该函数的过程当中, 是被发生了改变的。保留字是用来引用全局变量的, 如果不使用这个关键字, 那么在函数中进行赋值操作的时候, 就会被解释为定义了一个新的局部变量。请把这个操作添加到那个函数的定义后面, 并且要在调用那个函数之前去完成。现在这个函数的作用是其他的函数。等于加上二, 直接使用全局变量而不改变全局变量的值, 这一操作是可行的。print( : %d%)other()######################## : 3# : 4# : 2#:3#:5########################添加到()函数定义之后()函数调用之前def other(): 10 2print( : %d%)other()##################### : 12# : 4# : 2#:3#:5####################你应当去访问那个所谓的文件2里面的全局变量。#:file2file1file1.() #被改变test file1. 1print(test :%d%test)我们得尽着最大劲儿去避免用那个叫全局变量的东西。你要知道, 各个不同的模块都能够自由地去访问这个全局变量, 这么一来的话, 就会导致全局变量变得非常不可预知, 让人摸不着头脑。全局变量的存在, 实际上会降低函数之间或者模块之间的通用性程度, 因为不同功能的函数或者是不同种类的模块, 它们都必须去依赖那些全局变量。另一方面, 全局变量的设置也会让代码本身的 也就是可读性降低, 那些进行阅读操作的人, 可能根本不知道他们正在调用的那个特定的变量, 究竟是一个全局变量, 从而导致理解上的困难。常量所谓常量, 是指那些在完成初始化的环节以后, 就无法再被修改的、保持固定状态的数值。打个比方来说, 比如说是像数字5或者是字符串abc这样的存在, 它们都是属于常量的范畴内的。在这款编程语言的具体规定范围内, 并没有包含任何专门用来定义常量的保留字。它实际上是一门功能非常强大的语言, 开发者可以通过自行创建一个常量类的具体办法, 来有效实现关于常量操作的功能需求。#:const.pyclass :class ():pass就是给自己设定一个名字和一个对应的值。自从进入3.x版本之后, 这个方法就已经被废弃了。if name in self.:raise self.(Cant const(%s)%name)self. valuesys系统等于这个空的括号。#:.pyconstconst.name常量这个标识符的名称被规定为lisi。################################### (most call last):在文件路径为的这个文件里面, 代码的第4行这一行的位置, 出现了问题。代码段: 常量名被设置为“lisi”。# File E:/\const.py, line 7, in# raise self.(Cant const(%s)%name)#const..: Cant const(name)##################################因为变量name已经被赋值成了“”这种情况, 所以它没有办法继续再次被赋新值, 于是系统就抛出了异常错误信息。这里使用的raise这个关键字主要是用来触发和抛出异常的。大家现在所看到的, 就是关于深入去弄明白变量还有常量这个话题的全部内容。小编把这些东西分享出来, 就是希望, 能给到大家一点参考, 让大家在看的时候, 可以有借鉴的意思。
企业数字化 ERP 产品动态
相关推荐
Atlas 300V部署YOLOv5全攻略:CANN、ATC与推理调优实战 1. 先把硬件底细摸清楚:Atlas 300V是什么卡、能干什么1.1 为什么它会被当成"小主机":从产品定位说起"atlas 300v 24g 是运算加速卡吗"——这个问题我最近在好几个技术群里都看到有人在问。问法五花八门,有的问它是不是显… · 2026/9/26 12:34:31
从OpenReef到多Agent舰队:一次真实踩坑实录与TaoToken配置复盘 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 12:34:31
自研CRM实践:从沟通归集到权限设计,打造销售愿意用的客户管理系统 团队从Excel客户表切换到自研的DeskcommCRM,已经稳定运行一年多。这个系统解决了我们最痛的问题:客户信息散落在销售个人微信、邮件、通话记录里,管理者无法掌握真实跟进进度。写这篇东西,是想把DeskcommCRM从需求分析、数据建模、… · 2026/9/26 13:16:42
PHP微信支付v2封装:签名、回调验签与退款避坑指南 简介:面向PHP开发者的微信支付与退款功能示例包,适用于电商及在线服务平台需要接入JSAPI支付、处理订单退款等场景。资源采用原生PHP编写,未依赖微信官方SDK,整体仅7KB、共3个PHP文件,涵盖支付调用主入口、核心类封装以… · 2026/9/26 13:16:36
企微外部群自动化:用RPA封装API的架构设计与稳定性实践 做企微外部群自动化,绕不开一个很现实的问题:官方API给得不够。很多运营侧想做的事,比如给外部群批量发通知、定时提醒、统计群成员、自动拉人建群,要么没有对应接口,要么接口只覆盖“客户群”而覆盖不了普通外部群。既… · 2026/9/26 13:16:35
H5条形码识别实战:getUserMedia权限链路与html5-qrcode调优指南 简介:资源面向Web前端开发者与移动端H5应用开发者,主要解决在手机浏览器中借助摄像头实时识别条形码的落地问题。内容涵盖HTML5视频流处理、getUserMedia权限调用以及QuaggaJS扫码库集成等关键环节,可适用于电商、物流、库存管理等移动扫码场… · 2026/9/26 13:16:35
Docker Desktop启动失败?WSL2深度排障与优化指南 1. 项目概述:为什么你装不上 Docker Desktop,不是手速问题,而是系统在“装睡” Docker Desktop 是 Windows 和 macOS 用户接触容器技术最平滑的入口——它把 Linux 内核级的 namespace、cgroup、overlayfs 这些底层黑科技,封装成… · 2026/9/26 13:16:35
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46