Python入门学习(三)
第5章 变量与运算符
""" 下述代码注释是自己的理解 规范的解释如下: int/float为值类型的,是不可变的,不可变类型还有str/tuple等 list/set/dict是引用类型,是可变的 简单说就是引用类型是可变的,值类型是不可变的 """ a = 1.1 #创建常量1的内存空间,使得变量a指向该地址 b = a #使b也指向该地址 a = 3.2 #再创建常量3的内存空间,使变量a指向该新内存地址 print(a, b) #a变成3,b仍然为1 a = [1, 2, 3, 4, 5] #创建存储列表信息的一块内存空间,使a指向该地址 b = a #使b也指向该地址 a[0] = "abc" #使得原存储列表信息的第一个元素改变 #上述这句代码是创建一处新内存空间,使得列表第一个元素指向该地址 #但变量a,b的指向仍为原列表的存储地址 print(a, b) #b也就跟着变化了 #再看下例 a = [1, 2, 3, 4, 5] #创建存储列表信息的一块内存空间,使a指向该地址 b = a #使b也指向该地址 a = [1, 2, 3, 4] #创建一处新内存空间,使得变量a指向该新地址 print(a, b) #a变了,b不变
#灵活理解可变与不可变类型 a = "hello" a = a + " python" #创建一处新内存空间存储相加后的新字符串,并让a指向该新字符串地址 print(a) #a变了,但最初始的hello字符串仍然储存在内存中,可以用id()函数查看地址 a = "hello" #a[0] = "s" 这里会报错,这就是不可变性 print(a) t1 = (1, 2, 3, 4) #t1[0] = "s" 同样会报错 print(t1[2]) t1 = ([1,2], 10, 11, 12, [20, 30]) print(id(t1[0])) t1[0][1] = 1 #这里却不会报错 print(id(t1[0])) #因为第一个元素的内存地址没有变化 print(t1) #t1的第一个元素值变化了,但t1各元素的指向没有变化
#列表的可变与元组的不可变
#列表的可变和元组的不可变 a = [1, 2, 3] print(id(a)) a[0] = "1" b = a print(id(a), id(b)) a.append(4) #列表追加元素,a内容改变,指向不变 print(a, id(a)) #元组是不可变的,所以不能通过索引修改元素,也无法append()追加 ta = (1, 2, 3, [1, 2, 4]) print(ta[3][2]) y = ta[1] print(id(y), id(ta[1])) #ta[1] = 10 这里会报错,元组的各个元素内容/指引是不可变的 #这里创建一个新内存区域,让ta[1]指向该地址,但元组元素的指向是不可变的 print(ta, id(ta), id(ta[3])) ta[3][2] = 18 #上面这句可以执行,因为ta[3]的指向没有变 #虽然元组第四个元素中的第三个元素内容变了,但元组第四个元素的指向并没有改变 print(ta, id(ta),id(ta[3])) #地址与上面一致
#运算符
#运算符 #成员运算符in / not in print("s" in "system") print(" " in "hello World!") print(18 in (9, 18, 27)) print(1 not in [1, 2, 3]) print(2 in range(3)) print(20 in range(1, 20)) print("A" in {"A":1, "B":2, "C":4}) #字典的成员判断是看key值 print("D" not in {"A":1, "B":2, "C":4}) #身份运算符 is /is not #可以理解为两个变量是否是同一内存指向 a = 1 b = 1 #b依然指向常量1的空间 print(a is b) print(id(a), id(b)) #相同 a = [1, 2, 3] b = [1, 2, 3] #新开辟空间,让b指向该处 print(a is b) print(id(a), id(b)) #不同 #判断变量是否为某一或某几种数据类型 print(isinstance(1, int)) a = [1, 2, 3] print(isinstance(a, (int, list))) print(isinstance(a, (int, float, str))) #位运算符:把数值转为二进制进行位运算操作 #&按位与 |按位或 ^按位异或 ~按位取反 <</>>按位左/右移动 a = 2 #10 b = 7 #111 print(a&b) #输出010,即十进制2 print(a|b) #输出111,即十进制7 print(a^b) #输出101,即十进制5
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架