python运算符
2018-09-09 本文已影响0人
tomtiddler
运算符的定义
运算符用于执行代码运算,会针对一个以上操作数项目来进行运算。
运算符类型
1.算数运算符
2.比较运算符
3.赋值运算符
4.位运算符
5.逻辑运算符
6.成员运算符
7.身份运算符
详情介绍
算数运算
以下假设变量a为10,b为20:
运算符 | 描述 | 实例 |
---|---|---|
+ | 加-两个对象相加 | a+b输出结果30 |
- | 减-得到负数或者是一个数减去另一个数 | a-b输出结果-10 |
* | 乘-两个数相乘或者是返回一个被重复若干次的字符串 | a*b输出结果200 |
/ | 除-x除以y | a/b输出结果2 |
% | 取模-返回除法的余数 | b%a输出结果0 |
** | 幂-返回x的y次幂 | a**b输出结果... |
// | 取整除-返回商的整数部分 | 9//2=4 9.0//2.0=4.0 |
比较运算
赋值运算
以下假设变量a为10,b为20:
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c=a+b将a+b的运算结果赋值给c |
+= | 加法赋值运算符 | c+=a等效于c=c+a |
-= | 减法赋值运算符 | c-=a等效于c=c-a |
*= | 乘法赋值运算符 | c=a等效于c=ca |
/= | 除法赋值运算符 | c/=a等效于c=c/a |
**= | 幂赋值运算符 | c**=a等效于c=c**a |
//= | 取整除赋值运算符 | c//=a等效于c=c//a |
位运算
下表中变量a为60,b为13
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与计算的两个值,如果两个相应位都是1,则该位的结果为1.否则为0 | (a&b)输出结果为12,二进制解释:0000 1100 |
| | 按位或运算符:参与计算的两个值,只要有一个相应位是1,则该位的结果为1.否则为0 | (a|b)输出结果为61,二进制解释:0011 1101 |
^ | 按位异或运算符:参与计算的两个值,只要对应位相异,则该位的结果为1.否则为0 | (a^b)输出结果为49,二进制解释:0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,把1变成0,0变成1 | (~a)输出结果为-61,二进制解释:1100 0011,在一个有符号二进制数的补码形式 |
<< | 左移动运算符:运算数的各二进位全部左移若干位。由"<<"右边的数指定移动 | |
的位数,高位丢弃,低位补0. | a<<2输出结果为240,二进制解释为: 1111 0000 | |
>> | 右移动运算符:运算数的各二进位全部右移若干位。由">>"右边的数指定移动的位数,高位补0,低位丢弃. | a>>2输出结果为15,二进制解释为: 0000 1111 |
逻辑运算
python语言支持逻辑运算符,以下假设变量a为10,b为20
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔与运算-如果x为false,x and y 返回false,否则返回y的计算值 | (a and y) 返回20 |
or | x or y | 布尔或运算-如果x为非0,返回x的计算值,否则返回y的计算值 | (a or y) 返回10 |
not | not x | 布尔非运算-如果x为true,返回false,否则返回true | not x 返回False |
note:
and注解:
1.在python中,and和or执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一
2.在布尔上下文中从左到右演算表达式的值,如果布尔上下文的所有值都为真,那么and返回最后一个值
3.如果布尔上下文中的某个值为假,则and返回第一个假值
or注解:
1.使用or时,在布尔上下文中从左到右演算值,就像and一样。如果有一个值为真,or立刻返回该值
2.如果所有值都为假,or返回最后一个假值
3.注意or在布尔上下文中会一致进行表示式演算直到找到一个真值,然后就会忽略剩余的比较值。
and-or结合使用
1.结合前两种语法,推理即可
2.为了加强程序可读性,最好与括号连用,例如:(1 and x) or y
成员运算
除了以上的一些运算符之外,python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在自定的序列中找到值返回true,否则返回false | x in y 如果x在y序列中返回true |
not in | 如果在自定的序列中没有找到值返回true,否则返回false | x not in y 如果x不在y序列中返回true |
身份运算
身份元酸符用于比较两个对象的存储单元:
运算符 | 描述 | 实例 |
---|---|---|
is | is是判断两个标识符是不是引用自同一个对象 | x is y 如果id(x)=id(y),返回结果为1 |
is not | is not是判断两个标识符是不是引用自不同对象 | x is not y 如果id(x)!=id(y),返回结果为1 |
运算符的先后顺序
先运算比较运算符再运算逻辑运算符
即:先计算> < >= <=,再计算 not and or 先后顺序和优先级就是这样不可变。
示例:
2<4 and 2==4
先运算2<4 和2==4 2<4为true 2==4为false
运算优先等级:自上而下,优先级从高到低。
运算符 | 描述 |
---|---|
指数(最高优先级) | |
按位翻转,一元加号和减号(最后两个方法名为+@和-@) | |
乘除法,取模和取整除 | |
加法减法 | |
右移左移 | |
位 and | |
位运算符 | |
比较运算符 | |
等于运算符 | |
赋值运算符 | |
身份运算符 | |
成员运算符 | |
逻辑运算符 |
标准数据类型总结:
按存值个数区分
标量/原子类型 | 容器类型 |
---|---|
数字,字符串 | 列表,元组,字典 |
按可变不可变区分
可变 | 不可变 |
---|---|
列表,字典 | 数字,字符串,元组 |
按访问顺序区分
直接访问 | 不顺序访问 | k-v访问 |
---|---|---|
数字 | 字符串,列表,元组 |