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 = #创建存储列表信息的一块内存空间,使a指向该地址
b = a #使b也指向该地址
a = "abc"#使得原存储列表信息的第一个元素改变
#上述这句代码是创建一处新内存空间,使得列表第一个元素指向该地址
#但变量a,b的指向仍为原列表的存储地址
print(a, b)#b也就跟着变化了
#再看下例
a = #创建存储列表信息的一块内存空间,使a指向该地址
b = a #使b也指向该地址
a = #创建一处新内存空间,使得变量a指向该新地址
print(a, b)#a变了,b不变#灵活理解可变与不可变类型
a = "hello"
a = a + " python"#创建一处新内存空间存储相加后的新字符串,并让a指向该新字符串地址
print(a)#a变了,但最初始的hello字符串仍然储存在内存中,可以用id()函数查看地址
a = "hello"
#a = "s" 这里会报错,这就是不可变性
print(a)
t1 = (1, 2, 3, 4)
#t1 = "s" 同样会报错
print(t1)
t1 = (, 10, 11, 12, )
print(id(t1))
t1 = 1 #这里却不会报错
print(id(t1)) #因为第一个元素的内存地址没有变化
print(t1) #t1的第一个元素值变化了,但t1各元素的指向没有变化 #列表的可变与元组的不可变
#列表的可变和元组的不可变
a =
print(id(a))
a = "1"
b = a
print(id(a), id(b))
a.append(4) #列表追加元素,a内容改变,指向不变
print(a, id(a))
#元组是不可变的,所以不能通过索引修改元素,也无法append()追加
ta = (1, 2, 3, )
print(ta)
y = ta
print(id(y), id(ta))
#ta = 10这里会报错,元组的各个元素内容/指引是不可变的
#这里创建一个新内存区域,让ta指向该地址,但元组元素的指向是不可变的
print(ta, id(ta), id(ta))
ta = 18
#上面这句可以执行,因为ta的指向没有变
#虽然元组第四个元素中的第三个元素内容变了,但元组第四个元素的指向并没有改变
print(ta, id(ta),id(ta))#地址与上面一致#运算符
#运算符
#成员运算符in / not in
print("s" in "system")
print(" " in "hello World!")
print(18 in (9, 18, 27))
print(1 not in )
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 =
b = #新开辟空间,让b指向该处
print(a is b)
print(id(a), id(b))#不同
#判断变量是否为某一或某几种数据类型
print(isinstance(1, int))
a =
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
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]