运算符种类
赋值运算符
算术运算符
关系运算符(比较运算符)
逻辑运算符
位运算符
成员运算符
身份运算符
PS:这里我觉得菜鸟教程说的对。
赋值运算符
主要用来给变量赋值。
#常见的赋值运算符
= 赋值运算符
+= 加法赋值运算符,x+=y相当于x=x+y
-= 减法赋值运算符,x-=y相当于x=x-y
*= 乘法赋值运算符,x*=y相当于x=x*y
/= 除法赋值运算符,x/=y相当于x=x/y
%= 取余数赋值运算符,x%=y相当于x=x%y
**= 幂赋值运算符,x**=y相当于x=x**y
//= 整除赋值运算符,x//=y相当于x=x//y
Python3.8新增海象运算符,该运算符把计算语句的结果赋值给变量,让变量可以在代码块里执行运用。
参考资料:海象运算符
案例1
name = 'admin'
name1 = name
name3 = 'admin'
print(id(name),name)
print(id(name1),name1)
print(id(name3),name3)
'''
out:
1591358799688 admin
1591358799688 admin
1591358799688 admin
'''
#赋值并未改变变量的内存地址
案例2
num = 8
num += 5 #num = num + 5
print(num) #out:13
a='abc'
a +='df' #此时的+是连接符
print(a) #out:abcdf
#除了+运算符可以支持连接运算,其余扩展运算符只支持数学运算
算术运算符
常见的算术运算符
+ 加
- 减
* 乘
/ 除
% 求余,返回除法的余数
// 整除,返回商的整数部分
** 幂,x的y次方
*运算符可以用于字符串,使字符串重复指定次数
print('='*8+'游戏开始'+'='*8)
print('='*8,'游戏开始','='*8)
'''
out:
========游戏开始========
======== 游戏开始 ========
'''
#+跟,的区别是,输出有空格
比较运算符
又称关系运算符,用于对变量或表达式的结果进行大小、真假的比较,如果为真,则为true,为假,则为false。
> 大于
< 小于
== 等于
!= 不等于(<>在python3中废弃而改用!=)
>= 大于或等于
<= 小于或等于
逻辑运算符
python中的逻辑运算符主要包括
and #逻辑与 ,运算方向 从左到右
or #逻辑或 ,运算方向 从左到右
not #逻辑非 ,运算方向 从右到左
and
true and true = true
true and false = false
false and false = false
or
true or true = true
true or false = true
false or false = false
not取反
not true = false
not false = true
三元运算符
也叫三目运算符,在B站视频的P27,书中的P128页。
语法格式
'''
'结果1' if '表达式' else '结果2'
如果表达式为true,则运行结果1
如果表达式为false,则运行结果2
'''
案例
a=6
b=5
result = (a+b) if a
print(result) #out: -1
成员运算符
in 在指定序列中找到值返回True,否则False。
not in 在指定序列中没有找到值返回True,否则返回False。
案例
a = 2
b = 6
list1 = [1,2,3,4,5]
if (a in list1):
print('变量a的值存在于list1中')
if (b not in list1):
print('变量b的值在list1中不存在')
身份运算符
is 用作地址的比较,是否为同一地址;同时也可以用作对象的比较,是否为同一对象。
is not 两个对象地址是否不同,也就是不是引用的同一对象。
age = 20
age1 = 20
print(age is age1) #out:True
print(id(age),age) #out:1711173232 20
print(id(age1),age1) #out:1711173232 20
print(age is not age1) #out:False
补充知识:
Python对小范围整数[-5,256]对象是提前在内存里建立好的,不会被垃圾回收。
大整数使用IDLE源文件整体执行结果,跟交互式执行结果是不一样的(面试会考到),如下
#在sublime中执行
money=2000000
salary=2000000
print(money is salary) #输出为True
print('money的id是',id(money)) #输出为money的id是 2662158806768
print('salary的id是',id(salary)) #输出为salary的id是 2662158806768
#在交互式模式下执行
'''
>>> money=2000000
>>> print(id(money))
1390614979696
>>> salary=2000000
>>> print(id(salary))
1390614982384
'''
#可以看到两者的结果是不相等的
补充:
小整数对象池
Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。
Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。所以所有位于这个范围内的整数使用的都是同一个对象。
大整数对象池:
终端是每次执行一次,所以每次的大整数都重新创建,而在pycharm等IDLE中,每次运行是所有代码都加载都内存中,属于一个整体,所以这个时候是同一个对象。
在终端CMD中,每个大整数都是单独创建的,所以他们的内存地址不一样。
运算符的优先级
小括号内的优先执行。
其次优先级高的先执行,低的后执行。
同一优先级从左到右一次执行。
运算符
描述
**
幂运算符
~ + -
位取反运算符,正号,负号
* / % //
乘,除,求余和整除
+ -
加法减法
>> <<
右移,左移运算符
&
位运算符(位与运算符)
^ |
位运算符(位异或运算符,位或运算符)
<= < > >=
比较运算符
== !=
等于运算符
= %= /= //= -= += *= **=
赋值运算符
is is not
身份运算符
in not in
成员运算符
not and or
逻辑运算符
学习来自:B站课程 P19-27,
菜鸟教程,《python从入门到项目实践》明日科技 第五章 第八章(三目运算符)