本文档目标:掌握变量的赋值操作,变量的存储原理及变量的输入输出
变量赋值
变量可以理解为在内存中开辟一个空间,用于临时保存程序需要用到的信息。
变量包括名称、值、变量类型、内存地址等信息
a_int = 1
#变量名称可以包含数字、字母、_,但是不能以数字开始
#变量名称建议使用多个小写单词并以_相连,方便理解
#变量名称不能与方法、关键字重复。比如不能命名为int,否则将导致使用int()时报错
print(a_int,type(a_int),id(a_int))
#打印变量的值,变量类型,变量的内存地址
除了通用赋值之外,python还支持平行赋值
>>> a,b,c=1,2,3
>>> print(a,b,c)
1 2 3
#python可以同时给多个变量赋值
>>> a,b,c=c,b,a
>>> print(a,b,c)
3 2 1
#也可能用更简单的方法进行值的交换
>>> a=b=c=1
>>> print(a,b,c)
1 1 1
#此外还支持将一个值同时赋值给多个变量
变量存储原理
python中变量存储有点类似重命名,python会根据变量定义从左往右依次创建内存空间保存相关信息,然后再内存中通过字典来将二者关联起来
变量存储方式与数据类型有关,可以分为两类:1、数值型;2、序列型
1 数值型
>>> a_int =123
>>> print(id(a_int))
140726292971072#python会从右往左在内存中创建并保存;如上所示,将先创建一个内存空间保存123,在创建一个内存空间保存a_int,二者通过字典的键值对来关联(key为a_int,value为123的内存地址)
>>> b_int = a_int
>>> print(id(a_int),id(b_int))
140726292971072 140726292971072#当变量a_int赋值给b_int时,会先检查变量a_int是否已创建,若a_int已创建将创建一个内存空间保存b_int;之后在添加键值对时,key为b_int,value为123的内存地址(由于a_int是另一个键值对的key,将直接获取到该键值对的value做为新键值对的value)
>>> a_int = 456
>>> print(id(a_int),id(b_int))
2588965357456 140726292971072#此时若是a_int被赋予新值456,那么将在新创建内存空间用于保存456之后,将断开a_int与123的联系之后,重新创建a_int与456的键值对信息。这个过程中a_int与b_int已没有关联,不互相影响
>>> b_int = 789
>>> c_int = 123
>>> print(id(a_int),id(b_int),id(c_int))
2588965357456 2588995755792 140726292971072#在这过程中,若变量a_int、b_int都断开与123的关联,那么已经创建的用于保存123的内存空间不会马上释放(会根据python的回收机制定期回收),此时若创建新变量c_int=123将指向同一个内存地址
2 序列型
序列型相较于数值型,在内存中多开辟了一个空间用于保存序列中各元素的地址信息。
序列型包括list、tuple、dict、set、str;其中str和tuple比较特殊,不可修改。
>>> a_list = [1,2]
>>> print(id(a_list))
2588997411912
>>> print(id(a_list[0]),id(1))
140726292967168 140726292967168
>>> print(id(a_list[1]),id(2))
140726292967200 140726292967200#相较于数值型,序列型有单独的内存结构,用于保存序列型中元素位置与元素内存地址的映射关系
>>> b_list = a_list
>>> print(id(a_list),id(b_list))
2588997411912 2588997411912
>>> print(id(a_list[0]),id(b_list[0]),id(1))
140726292967168 140726292967168 140726292967168
>>> print(id(a_list[1]),id(b_list[1]),id(2))
140726292967200 140726292967200 140726292967200#当将变量a_list赋值给b_list时,产生映射关系的也是b_list与映射关系(图中a区域)
>>> a_list[0]=3
>>> print(b_list)
[3, 2]#由于a_list与b_list指向同一个映射关系,所以针对a_list的修改也会影响到b_list
变量输入输出
为实现人机交互,需要从控制台输入参数并赋值给变量;在完成操作之后还需要将结果输出到控制台
>>> a=input("input a number:")
input a number:123
#用input()函数获取输入的变量,可以可添加输入提醒
>>> print(a,type(a))
123 <class 'str'>
#输出使用print()
#所有的输入都是str,若程序需要的是其他类型的则需要进行转换
为了展示效果,需要对输出结果进行格式化操作,主要是针对数字型变量
>>> a="my name is python"
>>> b=123
>>> c=12.1
>>> print("字符串:%s,整数:%06d,浮点型:%.02f" %(a,b,c))
字符串:my name is python,整数:000123,浮点型:12.10
#输出格式化
#%s用于格式化字符串
#%d用于格式化整数,%06d表示格式化为长度为6,不足6位前面用0补足;而%6d则用空格补足
#%f用于格式化浮点型。%.02f表示小数点后保留2位,不足两位右边用0补足;%07.02f则表示小数点后保留2位,不足用0补足,总长度7位(小数点算一位),不足左边用0补足
#%%用于显示%











