Python基础-09-运算符

来源:《Python从小白到大牛》关东升

1、算术运算符

Python中的算数运算符用来组织整型和浮点数据的算数运算,按照参加运算的操作数的不同可以分为一元运算符和二元运算符。

1.1 一元运算符

Python中一元运算符有多个,但是算数运算符只有一个,即-,-是取反运算符。

1.2二元运算符

二元运算符包括+、-、*、/、%、**和//,这些运算符主要是对数字类型数据进行操作,而+和*可以用于字符串、元组和列表等
类型的数据操作。

其中 % 为取余,求a除以b的余数
    ** 为幂,求a的b次幂
    // 为地板除法,求小于a除以b商的最大整数

True被当作整数1参与运算,操作数中有浮点数字,表达式计算结果也是浮点类型。

字符串属于序列的一种,所以字符串可以使用 “+” 和 “*” 运算符。
“+”运算符会将两个字符串链接起来,但不能将字符串与其他类型数据连接起来。“*”运算符第一操作是字符串,第二操作数是整数,
表示重复字符串多次。

2、关系运算符

关系运算符是比较两个表达式大小关系的运算,他的结果是布尔类型的数据,即True或False。关系运算符有6种:==、!=、>、<、>=
和<=。
Python中关系运算符中用于比较序列或数字,整数、浮点数都是对象,可以使用关系运算符进行比较:字符串、列表和元组属于序列也可以
使用关系运算符进行比较。

3、逻辑运算符

逻辑运算符对布尔变量进行运算,其结果也是布尔型。
运算符             名称           例子            说明
not               逻辑非         not a           a为True时,值为False,a为False 时,值为True
and               逻辑与         a and b         a、b全为True时,计算结果为True,否则为False
or                逻辑或         a or b          a、b全为False时,计算结果为False,否则为True

Python中的“逻辑与”和“逻辑或”都采用“短路”设计,例如a and b,如果 a为False,则不计算b(因为无论b为何值,“与”操作的结果
都为False);而对于a or b,如果a 为True,则不计算b(因为不论b为何值,“或”操作的结果都为True).

4、位运算符

位运算符是以二进制(bit)为单位进行运算的,操作数和结果都是整型数据。
运算符        名称           例子            说明
~            位反           ~x              将x的值按位取反
&            位与           x&y             x与y位进行位与运算
|            位或           x|y             x与y位进行位或运算
^            位异或         x^y             x与y位进行位异或运算
>>           右移           x>>a            x右移a,高位采用符号位补位
<<           左移           x<<a            x左移a位,低位用0补位

位运算示例代码:
a=0b10110010
b=0b01011110

print("a|b={0}".format(a|b))    # 0b11111110   a和b按位进行或运算,只要有一个为1,计算结果就为1,否则为0.
print("a&b={0}".format(a&b))    # 0b00010010   a和b按位进行与运算,只有两位全部为1,这一位才为1,否则为0.
print("a^b={0}".format(a^b))    # 0b11101100   a和b按位进行异或计算,只有两位相反时这一位才为1,否则为0.
print("~a={0}".format(a^b))     # -179         这个过程需要进行补码运算
print("a>>2={0}".format(a>>2))  # 0b00101100   进行右移位2位计算,低位被移除,高位用0补位
print("a<<2={0}".format(a<<2))  # 0b11001000   进行左移位2位计算

c=-0b1100
print("c>>2={0}".format(c>>2))  # -0b00000011
print("c<<2={0}".format(c<<2))  # -0b00110000

输出结果如下:
a|b=254
a&b=18
a^b=236
~a=-179
a>>2=44
a<<2=712
c>>2=-3
c<<2=-48

上述代码中,第一行和第二行分别声明了整数变量a和b,采用二进制表示。第9行声明变量c,是采用二进制表示的负整数。
注:a和b位数是本机相关的,虽然只写出了8位,但笔者计算机是64位的,所以a和b都是64位数字,只是在本例中省略了前56个零。
位数多少并不会影响位反和位移运算。

对负数进行位运算,负数也涉及补码运算,如果对负数位移计算不理解可以先忽略负号当成正整数运行,然后运算出结果再加上负号。
右移n位,相当于操作数除以2^n.

5、赋值运算符

赋值运算符是一种简写,一般用于变量自身的变化,例如a与其操作数进行运算结果再赋值给a,
算术运算符和位运算符中的二元运算符都有对应的赋值运算符。
运算符       名称           例子               说明
+=          加赋值         a+=b               等价于a=a+b
-=          减赋值         a-=b               等价于a=a-b
*=          乘赋值         a*=b               等价于a=a*b
/=          除赋值         a/=b               等价于a=a/b
%=          取余赋值       a%=b               等价于a=a%b
**=         幂赋值         a**=b              等价于a=a**b
//=         地板除法赋值    a//=b              等价于a=a//b
&=          位与赋值       a&=b               等价于a=a&b
|=          位或赋值       a|=b               等价于a=a|b
^=          位异或赋值     a^=b               等价于a=a^b
<<=         左移赋值       a<<=b              等价于a=a<<b
>>=         右移赋值       a>>=b              等价于a=a>>b

6、其他运算符
6.1同一性测试运算符

同一性测试运算符就是测试两个对象是否同一个对象,类似于==运算符,不同之处是,==是测试两个对象的内容是否相同,
当然如果是同一对象==也返回True.
同一性测试运算符有两个:is和is not,is 是判断是同一对象,is not是判断不是同一对象。

6.2成员测试运算符

成员测试运算符可以测试在一个序列对象中是否包含某个元素。成员测试运算符有两个:
in 和not in,in是测试是否包含某一个元素,not in是测试是否不包含某一个元素。

7、运算符优先级

在一个表达式计算过程中,运算符的优先级非常重要。下面是从上到下优先级从高到低,同一行具有相同的优先级。
优先级            运算符                                       说明
1                ()                                        小括号
2                f(参数)                                     函数调用
3                [start:end],[start:end:step]               分片
4                [index]                                    下标
5                .                                          引用类成员
6                **                                         幂
7                ~                                          位反
8                +,-                                        正负号
9                *,/,%                                      乘法、除法、取余
10               +,-                                        加法、减法
11               <<,>>                                      位移
12               &                                          位与
13               ^                                          位异或
14               |                                          位或
15               in,not in,is,is not,<,<=,>,>=,<>,!=,==     比较
16               not                                        逻辑非
17               and                                        逻辑与
18               or                                         逻辑或
19               lambda                                     Lambda表达式

逻辑运算符优先级大体顺序从高到低是:算术运算符——>位运算符——>关系运算符——>逻辑运算符——>赋值运算符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值