暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python基础_变量

lin在路上 2020-03-22
279

本文档目标:掌握变量的赋值操作,变量的存储原理及变量的输入输出

变量赋值

变量可以理解为在内存中开辟一个空间,用于临时保存程序需要用到的信息。

变量包括名称、值、变量类型、内存地址等信息

 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补足
 #%%用于显示%


文章转载自lin在路上,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论