算术运算符:
算术运算符包含:
+加法运算、
-减法运算、
*乘法运算、
/精确除法运算、
//地板除法运算、
%求余运算、
**幂运算符
+加法运算:
>>> a=1 >>> b=2 >>> c=a+b >>> c 3
-减法运算:
>>> c=1000 >>> a=6000 >>> b=c-a >>> b -5000
*乘法运算:
>>> c=22 >>> a=33 >>> b=c*a >>> b 726
/精确除法运算、//地板除法运算:
python的除法是比较精确的,没有像其他一些语言一样(其他语言的得出20/6=3),例如:
>>> 20/6 3.3333333333333335 >>> 18/5 3.6 >>> 10/2 5.0
如果要使用“地板除法”(不保留小数),需要使用“//”,地板除法中如果其中一个操作数为负数,结果向负无穷取整
>>> 20//6 3 >>> 18//5 3 >>> 10//2 5
%求余运算:
返回除法中的余数结果
>>> 5%2 1
**幂运算符:指数(幂)
>>> 2**3 8 >>> 2**-1 0.5 >>> 3**3 27
逻辑运算符:
逻辑运算符包括:
and与运算,
or或运算,
not非运算
and与运算 :
如果x为False,x and y返回False,
如果x为True,返回y的计算值。本质是,z=True and y =y,如果x是真的话,最终结果取决于y
>>> 0 and 2 0 >>> 1 and 2 2 >>> 1 and 99 99 >>> -1 and 99 99
or 或运算:
如果x为False,返回y的值,
如果x为True,不再判断y,返回x的值。
not非运算:
“not 表达式” 返回表达式结果的“相反的值”。如果表达式结果为真,则返回false;如果表达式结果为假,则返回true。
>>> not 1 False >>> not 2 False >>> not 0 True >>> not True False >>> not False True
比较运算符(关系运算符):
比较运算符关系运算符包括:
<小于运算符,<=不大于运算符,>大于运算符,>=不小于运算符,==等于运算符,!=运算符
< :
如果左操作数的值小于右操作数的值,返回True,否则返回False
> :
如果左操作数的值大于右操作数的值,返回True,否则返回False
!= :
如果两个操作数的值不相等,返回True,否则返回False
<= :
如果左操作数的值小于或等于右操作数的值,返回True,否则返回False
>= :
如果左操作数的值大于或等于右操作数的值,返回True,否则返回False
== :
如果两个操作数的值相等,返回True,否则返回False 。【注意,只比较值是否相同,不计较内存地址是否相同】
赋值运算符:
=:将右侧操作数的值分配给左侧操作数
c = a + b 将 a + b 的运算结果赋值为 c
+=:将右操作数相加到左操作数,并将结果分配给左操作数
c += a 等效于 c = c + a
-=:从左操作数中减去右操作数,并将结果分配给左操作数
c -= a 等效于 c = c - a
*=:将右操作数与左操作数相乘,并将结果分配给左操作数
c *= a 等效于 c = c * a
/=:将左操作数除以右操作数,并将结果分配给左操作数
c /= a 等效于 c = c / a
%=:将左操作数除以右操作数的模数,并将结果分配给左操作数
c %= a 等效于 c = c % a
**=:执行指数(幂)计算,并将值分配给左操作数
c **= a 等效于 c = c ** a
//:运算符执行地板除运算,并将值分配给左操作数
c //= a 等效于 c = c // a
位运算符:
&:
按位与操作
|:
按位或操作
<<:
二进制左移
>>:
二进制右移
^:
二进制异或
~:
~x,返回将x的二进制取反之后的值
成员运算符:
成员运算符包括:in运算符,not in运算符
in:
x in y ,如果在指定的序列y中找到x,则返回 true
,否则返回 false
。
not in :
x not in y ,如果在指定的序列y中找不到x,则返回 true
,否则返回 false
。
身份运算符:
身份运算符包括:is 运算符, is not运算符
身份运算符比较两个对象的内存位置
is :
内存位置相同返回True,否则返回False
>>> str1="apple" >>> str2=str1 >>> id(str1) 2590247801216 >>> id(str2) 2590247801216 >>> str2 is str1 True
is not :
内存位置不相同返回True,否则返回False
a=1 b=1 c=999999999 d=999999999 print(id(a),id(b),a is b) print(id(c),id(c),c is d) str1="apple" str2="apple" print(id(str1),id(str2),str1 is str2) l1=[‘a‘,‘b‘,‘c‘] l2=[‘a‘,‘b‘,‘c‘] print(id(l1),id(l2),l2 is l1)
上述代码结果:
另外的测试:
>>> a=1000000 >>> b=1000000 >>> id(a) 2590249791600 >>> id(b) 2590249791632 >>> a="str1" >>> b="str1" >>> id(a) 2590249830528 >>> id(b) 2590249830528
这个问题体现缓存技术的使用:为了节省内存空间,或者为了节省时间,对于数据是同一份不可变的对象的不同名变量,使用缓存技术可以节约空间,而对于可变对象,如即使初值相同的列表,后面的操作不同为了不互相干扰,所以不使用缓存技术来节约空间。
如何查看缓存设置:待补充。
is 与 == 区别:
引用对象是否为同一个, == 用于判断引用变量的值是否相等。
运算符优先级:
运算符的优先级:
运算符的次序,序号小的优先级大于序号大的:
建议使用小括号来指示运算优先级,避免繁杂记忆。
三元表达式(三元运算符):
格式:条件为真时的结果 if 判定条件 else 条件为假时的结果
>>> a=250 if True else 150 >>> a 250 >>> a=220 if 1<0 else 1 >>> a 1