4、变量与运算符
变量:可以仅仅当作是一个“名字”
赋值变量A赋值符:=
命名要有意义,不能仅仅是A,B,X这类的。这是优质代码的必要条件。
变量命名规则:只能使用数字,字母,下划线。首字母不能是数字。
系统的保留关键字,不能用在变量名中。方法名如果被设置为变量名也会导致方法不可用。
变量名本身无类型,可以被赋值任何的数据类型。
值类型的传值,不会因原来的变量变化而变化 引用类型的传值,两个变量都会指向同一个地址空间int,str,tuple是值类型(不可变类型),list,set,dict是引用类型(引用类型)
字符串不可改变,一旦设置便分配一个固定的地址id():显示变量在内存中的地址。
值类型在申请内存空间之后,便不再改变。若字符串发生改变,只能重新申请新的地址空间。
值类型的不可改变性 引用类型不会因变化而改变内存地址 list的append()函数 值类型的不可变性不可变性本质上讲其实是地址的不变性,尽管元组里的列表发生了改变。但从上面的例子知道列表的地址并没有发生改变,所以元组内没有任何元素地址发生了改变。元组的不可变性依旧成立。
运算符:
算术运算符:四则运算:+,-,*,/,取整://,取余:%,次方:**
赋值运算符:赋值符:=,算术赋值符(先做运算再赋值):+=,*=,/=,%=,**=,//=
python不存在自增运算符关系(比较)运算符:相等:==,不等:!=,大于:>,小于:<,大于等于:>=,小于等于:<=
同级运算符运算顺序:从右往左str类型运用关系运算符的规则:从左至右一位一位的比较ASCII码。(list,set类型同理)
逻辑运算符:且:and,与:or,非:not
逻辑运算符可叠加使用逻辑运算符一般使用在bool类型上,但对于其他类型其实也可以使用。只不过在使用前系统把其他类型默认转换成了bool类型。
int float类型:0被视为False,非0为True。
str类型:空字符串被视为False,其他字符串为True(list,tuple同理)。
逻辑运算符的特殊用法当结果为A,两个元素X,Y都表示为A时,and 返回后一个元素,or 返回前一个元素。
(or和and这里是短路逻辑)
当结果为A,两个元素X,Y不都表示为A时,and和or都返回和结果相同的元素。
非返回与元素X不相同的bool值成员运算符:是否在组内:in,是否不在组内:not in
返回值为bool类型。
成员运算符的使用方法str,list,tuple,set,dict都可以使用成员运算符。
字典的特殊用法( 字典的成员关系在key上 )身份运算符:是否是:is,是否不是:is not
身份运算符比较的是两个对象在内存中的地址,关系运算符(==)比较的是两个对象的数值。
身份运算符的深入理解 集合无序,==为True。id 不同,is为False 元组有序,==为False。id同样不同,is为False对象的三特征:值,身份(id),类型(type),Python中一切皆为对象。
判断数据类型其他判断类型的方法:isinstance(变量,类型)
isinstance的特殊用法(判断变量类型是否在类型元组内)type不能判断对象的子类属于哪个类型,而isinstance可以。
位运算符:按位与:&,按位或:|,按位异或:^,按位取反:~,左移动:<<,右移动:>>
用法:把数字当作二进制数进行运算。
a的二进制10,b的二进制11,按位与后为10。按位或,按位异或同理。
按位取反原理:计算机中是用补码存储的,详细计算方法请自行百度。
左移和右移的基本用法