004 变量
1.什么是变量?
变量: 可以改变的量,实际具体指的是内存中的一块存储空间
# 变量就是可以变化的量,量指的是事物的状态,比如人的年龄、性别,游戏角色的等级、金钱等等
Variables are used to store information to be referenced and manipulated in a computer program. They also provide a way of labeling data with a descriptive name, so our programs can be understood more clearly by the reader and ourselves. It is helpful to think of variables as containers that hold information. Their sole purpose is to label and store data in memory. This data can then be used throughout your program.
变量用于存储在计算机程序中被引用和操作的信息。它们还提供了一种用描述性名称标记数据的方法,因此我们的程序可以更清楚地理解读者和我们自己。将变量看作保存信息的容器是很有帮助的。它们的唯一目的是在内存中标记和存储数据。然后可以在整个程序中使用这些数据。
2. 为什么要有变量?
# 为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的
# 详细地说:
# 程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态,以及状态的变化。
3.声明变量
变量的定义由三部分组成,如下图
-
如果一个值,没有对应的变量指向,将自动释放,节省内存
定义变量示范如下
#!/usr/bin/env python
#*_* coding:utf-8 *_*
name = "张三" #声明变量
上述代码声明了一个变量,变量名为: name,变量name的值为:"张三" .
解释器执行到变量定义的代码时会申请内存空间存放变量值,然后将变量值的内存地址绑定给变量名,
4.变量定义的规则
#字母数字下划线 ,开头不能是数字;
#严格区分大小写 ,不能使用关键字;
#变量命名有意义 ,拒绝使用中文名;
· Python 关键词:
import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class',
'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from',
'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass',
'raise', 'return', 'try', 'while', 'with', 'yield']
变量命名推荐定义方式:
-
驼峰体
-
下划线
5.变量的赋值
1.单个变量定义
a = 5
print(a)
2.多个变量
a,b = 2,3
print(a,b)
3.多个变量取同一个值
a = b = 100
print(a)
print(b)
4.变量交换
a = 13
b = 14
print(a,b)
结果:
13
14
------------------------------------
tmep = a
a = b #a=14
b = tmep #b=13
print(a,b)
结果:
14
13
-----------------------------------
a,b = b,a
print(a,b)
结果:
14
13
*#!/usr/bin/env python
#_*_ conding:utf-8 _*_
name = "wangjingang"
name2= name
print (name,name2)
name = "jack"
print(name2) #这时name2的值为:wangjingang
6.变量的三大特征
#1、id
反应的是变量在内存中的唯一编号,内存地址不同id肯定不同
id不同,对用的值也有可能相同;
id相同,对应的值一定相同;
#2、type
变量值的类型
name = "王金刚"
print(type(name))
#3、value
变量值
查看变量值三大特性的方式如下,我们将会在运算符中用到变量值的三大特性
Name = "张三"
Age = 18
Name = "张三"
print(Name, Age)
print(id(Name)) # 查看"张三"的内存地址
print(type(Name))
结果
王金刚 18
2431338541296
<class 'str'>
7.is 与== 的区别
is :比较左右两个值的身份id 是否相等;
== :比较左右两个变量对应的值是否相等;
在不同文件(模块)中,当变量的值是字符串(有限范围内)或是数字(-5, 256)时 不管是is 还是== 结果都为True,否则为False
#在小数池范围内
>>> x = 123
>>> y = 123
>>> x == y
True
>>> x is y
True
#超出了小数池范围
>>> x = -8
>>> y = -8
>>> x == y
True
>>> x is y
False
####################################################################################################
#字符串
#范围内为True
>>> x = "wangjingang"
>>> y = "wangjingang"
>>> x == y
True
>>> x is y
True
>>>
#范围外为False
>>> x = "张三"
>>> y = "张三"
>>> x == y
True
>>> x is y
False
>>>
####################################################################################################
#列表
>>> x = [1,2,5,123,25]
>>> y = [1,2,5,123,25]
>>> x == y
True
>>> x is y
False
>>>
####################################################################################################
#元组
>>> x = (1,2,55,25)
>>> y = (1,2,55,25)
>>> x == y
True
>>> x is y
False
>>>
####################################################################################################
>>> x = {'a':23, 'b':26}
>>> y = {'a':23, 'b':26}
>>> x == y
True
>>> x is y
False
>>>
8.变量的缓存机制(Python3.6 环境)
(1)在同一个文件中(模块)中的缓存机制
-
对int 数据类型来说, -5~~正无穷,值相同,id一致;
num01 = -6
num02 = 16
num03 = 255
num04 = 255
print(id(num01),id(num02)) #2092895728464 140727094112992
print(id(num03),id(num04)) #140727094120640 140727094120640 -
对float数据类型 来说,非负数范围内,值相同,id一致;
-
在python3.7 中,负数值相同,id也一致;
flvar01 = 5.3
flvar02 = 5.3
flvar03 = -1000.25
flvar04 = -1000.25
print(id(flvar01),id(flvar02)) #2232235073968 2232235073968
print(id(flvar03), id(flvar04)) #2232235074112 2232235074184 -
对于bool 数据类型来说,值相同,id 一致;
bovar01 = True
bovar02 = True
print(id(bovar01),id(bovar02)) #1585760688 1585760688 -
对于complex 数据类型来说(实数 + 虚数),永远不同;在只有虚数的情况下,值相同,id相同;
comvar01 = 5-2j
comvar02 = 5-2j
comvar03 = 3j
comvar04 = 3j
print(id(comvar01),id(comvar02)) #2572095495984 2572095496016
print(id(comvar03),id(comvar04)) #2572095494928 2572095494928
-
str 值相同的情况下,id 相同
mes01 = '王'
mes02 = '王'
print(id(mes01),id(mes02)) #1746386335184 1746386335184
-
空元素,id相同
tupvar01 = ()
tupvar02 = ()
tupvar03 = (1,2)
tupvar04 = (1,2)
print(id(tupvar01),id(tupvar02))# 2548958822472 2548958822472
print(id(tupvar03),id(tupvar04)) #1651533370312 1651533370376
-
list、set、dict 任何情况id都不相同
livar01 = []
livar02 = []
print(id(livar01),id(livar02)) #1928772567368 1928772567560
9.常量
常量:不变的量为常量
注意:python 环境中没有常量的概念,但在程序开发中会涉及到常量的概念
注意:一般全部大写代表常量,一种规范,约定俗称;
NAME = "张三"
NAME = "李世民"