粗鄙之语 2017-10-11
>>> a=15 >>> b=5 >>> a+b #加 20 >>> a-b #减 10 >>> a*b #乘 75 >>> a/b #除,为浮点数 3.0 >>> a%b #取模,余数 >>> a**b #取幂,a的b次方 759375 >>> a//b #取整除,返回商的整数部分 3
>>> 1==1 #等于 True >>> 1!=1 #不等于 False >>> 1!=2 True >>> 1>2 #大于 False >>> 2>1 True >>> 2<1 #小于 False >>> 1<2 True >>> 2>=1 #大于或等于 True >>> 2>=2 True >>> 2>=3 False >>> 2<=3 #小于或等于 True >>> 2<=2 True >>> 2<=1 False
>>> a=123 >>> a=b=c=123 #多变量赋值 >>> a,b,c=1,2,'python' #多变量按顺序赋值 >>> a,b=10,20 >>> c=>>> c+=a #等效于c=c+a >>> c 10 >>> c=30 >>> c-=a #等效于c=c-a >>> c 20 >>> c=5 >>> c*=a #等效于c=c*a >>> c 50 >>> c=30 >>> c/=a #等效于c=c/a >>> c 3.0 >>> c=36 >>> c%=a #等效于c=c%a >>> c 6 >>> c=2 >>> c**=a #等效于c=c**a >>> c 1024 >>> c=33 >>> c//=a #等效于c=c//a >>> c 3
按位运算符是把数字看作二进制来进行计算的。
&按位与运算符,参与运算的两个值,如果连个相对应位都为1则该位结果位1,否则为0
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^按位异或运算符:当两对应的二进位相异时,结果为1
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
>>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数
a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b #12 = 0000 1100 都为真即为1否则为0 print('c的&值:',c) c = a | b #61 = 0011 1101 只要有一个为真则为1否则为0 print('c的|值:',c) c = a ^ b #49 = 0011 0001 二进制结果位相异时为1否则为0 print('c的^值:',c) c = ~a #-256-195= 1100 0011 反方向取值即可以取256-(195)的值-61 print('c的~a值:',c) c = a << 2 #240= 1111 0000 对a二进制位向左位移2位,移动后面用0补齐 print('c的<<值:',c) c = a >> 2 #15 = 0000 1111 对a二进制位向右位移2位,移动后面用0补齐 print('c的>>值:',c) c的&值: 12 c的|值: 61 c的^值: 49 c的~a值: -61 c的<<值: 240 c的>>值: 15
andx and y布尔‘与’,如果x为false,x and y返回false,否则它返回y的计算值
orx or y布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值
notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True
>>> a = 10 >>> b = 20 >>> x =>>> a and b #当a和b都为真时才输出b的值 20 >>> a and x #a为true,x为false时输出为0 >>> x and a 0 >>> a or b #a和b有一个为真则输出第一个碰到为真的值 10 >>> a or x 10 >>> y =>>> x or y #两个都不满足时,才输出为0 >>> not a #取a的反值 False >>> not y #y本身为false,取反就为true了 True
Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
in如果在指定的序列中找到值返回 True,否则返回 False。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。
>>> l1 = [1,2,3,4,5] >>> tuple = ('a','b','c') >>> dict = {'k1':'python','k2':'java','k3':'php'} >>> 'a' in tuple #成员在元组其中则返回true True >>> 1 in l1 True >>> '' in l1 #注意这是字符串了,所以返回false False >>> 6 not in l1 #判断成员不在其中返回true True >>> 'd' not in tuple True >>> 'python' in dict.values() #判断‘python‘在字典的value中返回true True >>> 'k1' not in dict.values() #k1不是values的成员,所以返回true True >>> 'k5' not in dict.keys() True
身份运算符用于比较两个对象的存储单元
is判断两个标识符是不是引用自一个对象,如果是同一个对象则返回true否则返回false
is not判断两个标识符是不是引用自不同的对象,如果引用的不是同一个对象则返回true,否则返回false
>>> a = 11 >>> b = 'ab' >>> a is b #引用不同对象返回false False >>> a is not b #引用不同对象返回true True >>> c = 11 >>> a is c #应用自同一个内存地址对象返回true True >>> id(a) 8956800 >>> id(c) 8956800 >>> a is not c #是同一个地址对象返回false False
#is 与 == 的区别 #is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等 >>> a = [1,2,3,4] >>> b = a >>> id(a) 139653642018888 >>> id(b) 139653642018888 >>> a is b #内存地址相同则返回true True >>> a == b #值相同返回true True >>> b = a[:] #将a列表的值赋值给了b,此时b的内存地址发生了改变,但值同a相同 >>> id(b) 139653642018952 >>> b [1, 2, 3, 4] >>> b is a #内存地址不同了,则返回false False >>> b == a #值还是相同则返回true True
以下表格列出了从最高到最低优先级的所有运算符:
运算符 | 描述 |
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 'AND' |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |