
深入理解变量与常量变量其实就是计算机内存里面的一块区域, 这个区域是可以用来存放一些值, 并且这些值都必须在规定的范围以内, 同时这个值还是允许变动的。至于解释器到底会给变量分配多大的内存空间, 以及究竟能存放什么样的数据, 那就得看变量的数据类型是什么了, 它是根据类型来决定分配哪一块指定的内存的。和变量不同, 常量是那种只读的内存区域, 一旦常量完成了初始化操作, 它的内容就彻底固定下来了, 再也不能进行改变了。变量名称仅由字母、数字以及下划线构成, 并且严禁使用数字进行开头, 至于这一点的详细情况, 在前文中已经有过提及, 因此此处不再做出重复的说明。变量赋值其中的变量是不需要进行声明的, 当你去进行一个变量的赋值操作的时候, 这个过程就同时也包含了变量的声明还有定义。每一个变量在内存里面创建出来的时候它都是要包括变量的标识、名称以及数据这些信息的。进行一次新的赋值操作的时候, 就会产生一个全新的变量存在。哪怕这些变量的名字是彼此相同的, 但是它们的内在标识却并不是彼此一样的。变量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这个关键字主要是用来触发和抛出异常的。大家现在所看到的, 就是关于深入去弄明白变量还有常量这个话题的全部内容。小编把这些东西分享出来, 就是希望, 能给到大家一点参考, 让大家在看的时候, 可以有借鉴的意思。