变量的命名规则由数字、字母、下划线组成。数字不能以系统关键字开头,也不能用于变量名(保留关键字)。Python是区分大小写的#variablea=[1,2,3,4]#定义一个变量type=1print(type)type(1)#此时的类型是1,相当于1(1)所以intisnotcallable#输出结果1TypeError:'int'objectisnotcallablevaluetypeandreferencetypecommonvaluetype:intstrtuplecannotbechangedcommonreferencetype:listsetdictcanbechanged#valuetypea=1b=aa=3print(a)print(b)#引用类型list1=[1,2,3,4]list2=list1list1[1]='2'print(list1)print(list2)#输出结果31[1,'2',3,4][1,'2',3,4]需要区分上面的值类型和引用类型。值类型通常会存放在一个新的内存空间中,而引用类型只是一个指针,指向同一个内存区域string='hello'id(string)#id方法可以显示一个变量在内存中的地址string=string+'python'id(string)#可以发现string发生了变化,指向新的内存区域string[0]='a'#一旦定义了strUnchangeable#输出结果5770550412109688'str'objectdoes不支持项赋值tuplelist类型区别list是可变对象,tuple是不可变对象,因为tuple是不可变的,所以使用tuple可以让代码更安全作为dict的键,或者放入set中,但list不能。Tuple放弃了元素的增删改查(内存结构设计变得更精简),换取性能提升:创建tuple比list快,比list占用存储空间少。所以有“能用tuple的地方,不用list”的说法。多线程并发时,tuple不需要加锁,不用担心安全问题,写起来也简单很多。#不可修改的值a=[1,2,3]print(id(a))print(hex(id(a)))a[0]='1'print(id(a))a=(1,2,3)a[0]='1'#错误#追加操作b=[1,2,3]b.append(4)print(b)c=(1,2,3)c.append(4)#tuple类型没有append方法#输出结果692494160x420a98869249416'tuple'对象不支持项赋值[1,2,3,4]'tuple'对象没有属性'append'python运算符符号算术运算符+-*/所有除法都是float//整数除法和向下取整%余数**次方2**32的三次赋值运算符=+=*=/=//=%=**=#注意python没有++--运算符关系运算符==#对于number类型,==判断是否相等!=>>=<=#Returnsabooltyped=1d+=d>=1print(d)#2#==a的特殊性=0b=Falseprint(a==b)#Truelogicoperatorandornotreturnsbooltype'''逻辑短路原理,第一个为真则返回第二个;如果第一个为假,则返回第一个或第一个为假,则返回第二个;如果第一个为真,则返回第一个同时注意基本类型和TrueFalse'''成员运算符的转换判断一个元素是否在另一组元素中innotin#成员运算符即可应用于string、list、tuple、collection、dictionary,返回结果为布尔类型b='c'print(bin{'c':1})#OutputresultTrue#字典判断key是否在字典中Identityoperatorisnot#如果两个变量的值相等,则is返回Truea=1b=2aisb#Falseb=1aisb#True#isand=='''==表示值是否相等areequal表示指向的内存地址是否相等'''a=1b=1.0a==b#Trueaisb#False#思考题目a={1,2,3}b={2,1,3}a==b#True集合是无序的aisb#False表示是因为是引用typearetwosetscanbetestedwithid()c=(1,2,3)d=(2,1,3)c==d#Falsetuples属于序列,它是无序的cisd#FalsethoughValuetype因为值类型是两个值,所以内存地址也不一样。展开:三种判断是判断id是否相同,即判断同一性,判断两个变量对应的内存地址是否相等==判断值是否相同,注意对于数字类型,0和False的值是同类型判断,判断两个变量的类型是否相同#判断方法1a=1type(a)==int#True不推荐使用并不能判断变量的子类是否为This类型#判断方法2isinstance(a,str)#Falseisinstance(a,(int,str,float))#该方法第二个参数可以接受一个元组,则判断a是否是元组A中的任意一个True#注:对象的三个特征:idvaluetype位运算符都是对数进行二进制&位与|运算反<<左移运算符>>右移运算符
