python运算符

Python支持以下类型的运算符:

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符

真值表

算术运算符

表格内假设变量a为10、变量b为3

运算符 描述 实例
+ 加--两个对象相加 a+b输出结果为13
- 减--得到负数或一个数减去另一个数 a-b输出结果为7
* 乘--两个数相乘或返回一个被重复若干次的字符串 a*b输出结果为30
/ 除--两个数相除 a/b输出结果为3.3333333333333335
% 取模--返回除法的余数 a%b输出结果为1
** 幂--返回a的y次幂 a**b输出结果为a的b次方=1000
// 整除--返回除法的商 a//b输出结果为3

实例:

#!/usr/bin/env python
# coding=utf-8

a = 10
b = 3
c = 0

c = a + b
print("1 - c 的值为:", c)

c = a - b
print("2 - c 的值为:", c)

c = a * b
print("3 - c 的值为:", c)

c = a / b
print("4 - c 的值为:", c)

c = a % b
print("5 - c 的值为:", c)

c = a ** b
print("6 - c 的值为:", c)

c = a // b
print("7 - c 的值为:", c)

实例结果:

1 - c 的值为: 13
2 - c 的值为: 7
3 - c 的值为: 30
4 - c 的值为: 3.3333333333333335
5 - c 的值为: 1
6 - c 的值为: 1000
7 - c 的值为: 3

比较运算符

下表中的变量a为30、变量b为26

运算符 描述 实例
== 等于--比较对象是否相等 ( a == b )返回False
!= 不等于--比较两个对象是否不相等 ( a != b )返回True
> 大于--比较一个对象是否大于另一个对象 ( a > b )返回True
< 小于--比较一个对象是否小于另一个对象 ( a < b )返回False
>= 大于等于--比较一个对象是否大于或等于另一个对象 ( a >= b )返回True
<= 小于等于--比较一个对象是否小于或等于另一个对象 ( a <= b )返回False

实例:

#!/usr/bin/env python
# coding=utf-8

a = 30
b = 26

if a == b:
    print("1 - a 等于 b")
else:
    print("1 - a 不等于 b")

if a != b:
    print("2 - a 不等于 b")
else:
    print("2 - a 等于 b")

if a < b:
    print("3 - a 小于 b")
else:
    print("3 - a 大于等于 b")

if a > b:
    print("4 - a 大于 b")
else:
    print("4 - a 小于等于 b")

if a <= b:
    print("5 - a 小于等于 b")
else:
    print("5 - a 大于  b")

if b >= a:
    print("6 - b 大于等于 b")
else:
    print("6 - b 小于 b")

实例结果:

1 - a 不等于 b
2 - a 不等于 b
3 - a 大于等于 b
4 - a 大于 b
5 - a 大于  b
6 - b 小于 b

赋值运算符

下表中的变量a为10、变量b为3

运算符 描述 实例
= 赋值运算符 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 ** a
//= 取商赋值运算符 c //= a :等效于c = c // a

实例:

#!/usr/bin/env python
# coding=utf-8

a = 3
b = 10

c = a + b
print("1 - c 的值为:", c)

c = 20

c += a
print("2 - c 的值为:", c)

c = 20

c *= a
print("3 - c 的值为:", c)

c = 20

c /= a
print("4 - c 的值为:", c)

c = 20

c %= a
print("5 - c 的值为:", c)

c = 20

c **= a
print("6 - c 的值为:", c)

c = 20

c //= a
print("7 - c 的值为:", c)

实例结果:

1 - c 的值为: 13
2 - c 的值为: 23
3 - c 的值为: 60
4 - c 的值为: 6.666666666666667
5 - c 的值为: 2
6 - c 的值为: 8000
7 - c 的值为: 6

位运算符

位运算符是把数字看做二进制来进行计算的

下表中的变量a为60、变量b为13

运算符 描述 实例
& 按位与运算符--参加运算的两个值,如果两个相应为都为1,则该位的结果为1,否则为0 ( a & b )输出结果为12
| 按位或运算符--只要两个对应的二进制位有一个为1时,结果位就为1 ( a | b )输出结果为61
^ 按位异或运算符--当两个对应的二进制位相异时,结果位为1 ( a ^ b )输出结果位49
~ 按位取反运算符--将二进制数+1之后乘以-1 ( ~ a )输出记过为-61、( ~ b )输出结果位-14
<< 按位左移运算符--运算数的各个二进制位向左移动若干位,由“<<”右边的数字指定移动的位数,高位丢弃,低位补0 ( a << 2 )输出结果为240
( b << 2 )输出结果为52
>> 按位右移运算符--运算数的各个二进制位向右移动若干位,由“>>”右边的数字指定移动的位数, ( a >> 2 )输出结果为15
( b >> 2 )输出结果为3

实例:

#!/usr/bin/env python
# coding=utf-8

a = 60  # 60 = 0011 1100
b = 13  # 13 = 0000 1101

c = a & b
# 60 = 0011 1100
# 13 = 0000 1101
# 按位与运算得到:0000 1100,换算为十进制:2**2 + 2**3=12
print("1 - c 的值为:", c)

c = a | b
# 60 = 0011 1100
# 13 = 0000 1101
# 按位或运算得到:0011 1101,换算为十进制:2**0 + 2**2 + 2**3 + 2**4 + 2**5 = 61
print("2 - c 的值为:", c)

c = a ^ b  # 49 = 0011 0001
# 60 = 0011 1100
# 13 = 0000 1101
# 按位异或运算得到:0011 0001,换算位为十进制:2**0 + 2**4 + 2**5 = 49
print("3 - c 的值为:", c)

c = ~a
# 60 = 0011 1100
# 按位取反运算得到:-0011 1101,换算为十进制:-(2**0 = 2**2 + 2**3 + 2**4 + 2**5)= -61
print("4 - c 的值为:", c)

c = a << 2
# 60 = 0011 1100
# 按位左移运算得到:1111 0000,换算为十进制:2**4 + 2**5 + 2**6 + 2**7 = 240
print("5 - c 的值为:", c)

c = a >> 2
# 60 = 0011 1100
# 按位左移运算得到:0000 1111,换算为十进制:2**0 + 2**1 + 2**2 + 2**3 = 15
print("6 - c 的值为:", c)

c = b>> 2
# 13 = 0000 1101
# 按位左移运算得到:0000 0011,换算为十进制:2**0 + 2**1 = 3
print("7 - c 的值为:", c)

实例结果:

1 - c 的值为: 12
2 - c 的值为: 61
3 - c 的值为: 49
4 - c 的值为: -61
5 - c 的值为: 240
6 - c 的值为: 15
7 - c 的值为: 3

逻辑运算符

运算符 逻辑表达式 描述
and x and y 逻辑“与”运算符--如果x、y都为真,则返回True,否则返回False
or x or y 逻辑“或”运算符—如果x、y有一个为真,则返回True,否则返回False
not not x 逻辑“非”运算符--如果x为真,则返回False,否则返回True

实例:

#!/usr/bin/env python
# coding=utf-8

a = True
b = False


print(a and b)
print(a or b)
print(not a)
print(not b)

实例结果:

False
True
False
True

成员运算符

运算符 描述
in 判断在值是否指定的序列中,是则返回True,否则返回False
not in 判断在值是否不在指定的序列中,是则返回True,否则返回False

实例:

#!/usr/bin/env python
# coding=utf-8

a = 10
b = 4
list1 = [1, 2, 3, 4, 5]

if a in list1:
    print("1 - 变量 a 在给定的列表中 list 中")
else:
    print("1 - 变量 a 不在给定的列表中 list 中")

if b not in list1:
    print("2 - 变量 b 不在给定的列表中 list 中")
else:
    print("2 - 变量 b 在给定的列表中 list 中")

# 修改变量 a 的值
a = 2
if a in list1:
    print("3 - 变量 a 在给定的列表中 list 中")
else:
    print("3 - 变量 a 不在给定的列表中 list 中")

实例结果:

1 - 变量 a 不在给定的列表中 list 中
2 - 变量 b 在给定的列表中 list 中
3 - 变量 a 在给定的列表中 list 中

身份运算符

运算符 描述
is is--判断两个标识符是不是引用自同一个对象
is not is not--判断两个标识符是不是引用自不同的对象

实例:

#!/usr/bin/env python
# coding=utf-8

a = 20
b = 20

if a is b:
    print("1 - a 和 b 有相同的标识")
else:
    print("1 - a 和 b 没有相同的标识")

if id(a) == id(b):
    print("2 - a 和 b 有相同的标识")
else:
    print("2 - a 和 b 没有相同的标识")

# 修改变量 b 的值
b = 30
if a is b:
    print("3 - a 和 b 有相同的标识")
else:
    print("3 - a 和 b 没有相同的标识")

if a is not b:
    print("4 - a 和 b 没有相同的标识")
else:
    print("4 - a 和 b 有相同的标识")

实例结果:

1 - a 和 b 有相同的标识
2 - a 和 b 有相同的标识
3 - a 和 b 没有相同的标识
4 - a 和 b 没有相同的标识

运算符优先级

下表中从上到下的优先级为从高到低

运算符 描述
'string'
字符串转换
{key:value,…} 字典
[string1,string2,…] 列表
(string1,string2,…) 元组
function(string,…) 函数调用
x[index:index] 切片
x[index] 下表索引取值
x.attribute 属性引用
x**y
~x 按位翻转
+x、-x 正、负
*、/、%、// 乘、除、取余、取商
+ 、- 加号、减号
>>、<< 按位右移、按位左移
& 按位与
^、| 按位异或、按位或
>、<、>=、<=、!=、== 大于、小于、大于等于、小于等于、不等于、等于
=、+=、-=、*=、**=、/=、%=、//= 赋值运算符
is、is not 身份运算符
in、not in 成员运算符
not、or、and 逻辑运算符
lambda Lambda表达式

真值表

对象/常量
""
'string'
0
>=1
<=-1
()空元组
[]空列表
{}空字典
None
posted @ 2016-07-15 10:12  付建功  阅读(347)  评论(0编辑  收藏  举报