2.1 python常量与变量
变量:在程序运行过程中,值会发生变化的量
常量:在程序运行过程中,值不会发生变化的量
无论是变量还是常量,在创建时都会在内存中开辟一块空间,用于保存它的值。
1. 变量不需要声明类型
python 的变量和常量不需要事先声明类型,这是根据python的动态语言特性而来。
例如下面的 age 和 name 两个变量,在使用前没有进行任何的诸如 age int 和 name string 的类型声明,而这在一些静态语言中,比如 java 和 golang 中是必须的。
>>> age = 18>>> name = 王炳明>>> 2. 赋值与比较
python 中 用 = 号来给变量赋值,比如下面这个表达式,age 这个变量的值就是 18
>>> age = 18 与之相似的,新手会容易混淆的是 两个等号 == ,它表示的是比较两个值是否相等,如果相等返回 true,如果不相等返回 false
>>> age = 18>>> age == 18true>>> age == 17false 3. 先创建再使用
每个变量在使用前都必须赋值,变量赋值以后才会被创建。
新的变量通过赋值的动作,创建并开辟内存空间,保存值。
如果没有赋值而直接使用,会抛出变量未定义的异常。例如:
>>> agetraceback (most recent call last): file , line 1, in nameerror: name 'age' is not defined>>>>>> age = 18>>> age18 4. 赋值的方式
赋值的两种方式
第一种:单个直接赋值
>>> age = 18>>> age18 第二种:多个批量赋值
>>> a = b = c = 1>>> a1>>> b1>>> c1 第三种:先计算再赋值
# 先计算 17+1,再把结果赋值给age>>> age = 17+1>>> age18 第四种:分别赋值
>>> a, b, c = 1, 2, 3>>> a1>>> b2>>> c3 第三种:先计算再赋值
5. 理解赋值的背后
理解变量在计算机内存中的表示也非常重要。
当我们写:a = jack 时,python解释器干了两件事情:
在内存中创建了一个'jack'的字符串对象;
在内存中创建了一个名为a的变量,并把它指向 'jack'。
而当你把一个变量a赋值给另一个变量b,这个操作实际上是将变量b指向变量a所指向的数据,例如下面的代码:
>>> a = jack>>> a'jack'>>> b = a>>> b'jack'>>> id(a)4332916664>>> id(b)4332916664 通过id() 可以查看变量值的内存地址,打印出来的 a 和 b的内存地址是一样的,因此二者其实是一个数据。
但如果继续对 a 进行赋值其他值, 会发现 a 的内存地址变了,而 b 的并没有变
>>> a = tom>>> a'tom'>>> id(a)4332974128>>> id(b)4332916664 请牢记:python中的一切都是对象,变量是对象的引用!:
执行a = ‘jack’,解释器创建字符串‘jack’对象和变量a,并把a指向‘jack’对象;
执行b = a,解释器创建变量b,并且将其指向变量a指向的字符串‘jack’对象;
执行a = ‘tom’,解释器创建字符串‘tom’对象,并把a改为指向‘tom’对象,与b无关。
6. 简单介绍常量
说完变量,还要说下常量。
常量就是不变的变量,比如常用的数学常数圆周率就是一个常量。在python中,通常用全部大写的变量名表示常量:
>>> pi = 3.14159265359>>> pi3.14159265359 但事实上,从python语法角度看,pi仍然是一个变量,因为python根本没有任何机制保证pi不会被改变。你完全可以给pi赋值为10,不会弹出任何错误。所以,用全部大写的变量名表示常量只是一个习惯上的用法。
常量通常放置在代码的最上部,并作为全局使用。
粤芯半导体首条生产线进入最后的调试阶段 即将投片量产
纯电动汽车电机啸叫噪声优化方案
PCB板扭曲原因及解决方法
小米集团股价跳水下跌逾6%
2018年AI的根枝已经触及到各行各业 可以说是枝繁叶茂
深入了解python常量与变量
ADI推出ADIS16210 MEMS iSensor数字倾角计系统
贴片电容的损坏现象和检测方法
农药残留快速检测仪的使用方法
防空警报器工作原理及构造
科创板交控科技副总经理刘波介绍、履历信息
美国在全球3D打印市场中持续靠前
PCB设计方法与技巧,PCB Design Methods and Techniques
网易游戏与华为达成鸿蒙合作
特斯拉纯电动皮卡车2020年投产 续航里程尚不清楚
极致轻薄!歌尔光学发布新一代小型化高性能AR显示模组
STM32 RTC实时时钟(一)
深亚微米 BiCMOS[B] 芯片与制程剖面结构
跟随德索工厂的步伐认识Fakra连接器发展历程
三星手机中国市场份额不足1%,转型迫在眉睫