Python运算符

运算符种类

  1. 赋值运算符
  2. 算术运算符
  3. 关系运算符(比较运算符)
  4. 逻辑运算符
  5. 位运算符
  6. 成员运算符
  7. 身份运算符

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<b else (b-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从入门到项目实践》明日科技 第五章 第八章(三目运算符)
posted @ 2020-12-12 16:07  努力吧阿团  阅读(120)  评论(0编辑  收藏  举报