运算优先级

运算符

1. 赋值
a = 3
2. 赋值运算符
x = 1
x += 3    # x = x + 3
x *= 3   # x = x * 3
print(x)
3. 算术运算
加法运算
a = + 2
a = '6' + '6'  # str 拼字符串
print(a)
66
减法运算
a = 1 - 2
a = '66' # 减法不能用于字符串拼串
print(a)
TypeError: unsupported operand type(s) for -: 'str' and 'str'
乘法运算
a = 2 * 3
a = '6' * 2
print(a)
66
除法运算
a = 6 / 2
print(a)
3
整除
a = 6 // 4
print(a)
1
取余
#a = 6 % 4
print(a)
2
幂运算
a = 2 ** 3
print(a)
8
开平方
a = 4 ** 0.5
print(a)
2
4. 比较运算符
ASCII 码的大小规则:0~9 < A~Z < a~z同个字母的大写比小写小32.如A<a ,A 为 65,a为97大小比较,成立则为True, 不成立则为False
a = 3 > 2
print(a)
True
#特殊比较
result = '1' > '2' #单引号表示字符串
print(result)
False
result = '2' > '1'
print(result)
True
result = '2' > "21" # 先比较第一位,第一位相等,再比第2位,如无第二位,第2位为零。
print(result)
False
result = 'a' >"b" # 先比较第一位,第一位相等,再比第2位,如无第二位,第2位为零,字母大小顺序为 z~a
print(result)
False
result = 'a' >"1111123456789" # 字母大数字小
print(result)
True
result = 'a' >"ab" # 先比较第一位,第一位相等,再比第2位,如无第二位,第2位为零,字母大小顺序为 z~a。
print(result)
False
#result = 'a' >"A" # 先比较第一位,第一位相等,再比第2位,如无第二位,第2位为零,字母大小顺序为 z~a。
print(result)
False
result = 'C' > "b" # 先比较第一位,第一位相等,再比第2位,如无第二位,第2位为零,字母大小顺序为 z~a(所的小写字母都双任何大写字母大,)
print(result)
False
result = 'ab' < 'ac'# 先比较第一位,第一位相等,再比第2位,如无第二位,第2位为零,字母大小顺序为 z~a,所的小写字母都双任何大写字母大
print(result)
True
#== 和 != 比较的是值是否相等
result = 2 == 2 # 整数或浮点数比较时等于号必须为“==”。
print(result)
True
result = 'python' == 'python'
print(result)
True
result = 'python' != 'python'  # '!= ' 表示不等于
print(result)
False
result = 'abc' == 'abd'#先比较第一位,第一位相等,再比第2位,如无第二位,第2位为零,依此类推,字母大小顺序为 z~a(所的小写字母都双任何大写字母大,)
print(result)
False
#is 和is not 比较的是两个对象是否是同一个对象 比较的是地址(id) id地址 value值 type类型
result = 0 is False # 0 是int type , False是 布尔 type ,不同类型id不同,所以不相等
print(result)
False
result = 0 ==  False # "==" 是比较数值,
print(result)
#
5. 逻辑运算符
逻辑非  : 0 # None整数 不可变类型
空串  None  还有一些表示空性的值会转换为False,其余的全部都是True  not 可以对符号右侧的值进行逻辑非运算,对于布尔值逻辑非运算会对其进行取反向值操作,True变成False,False变成True。
a = 1
a = not a
print(a)
False # 如不取反向值为True, 实际取了反向值,所以为False
a = 0
a = not a
print(a)
True # 如不取反向值为False, 实际取了反向值,所以为True
a = None
a = not a
print(a)
True
a = '' #空值
a = not a
print(a)
False
a = [] #空性值
a = not a
print(A)
False
#逻辑与(找False值)
result = True and True
result = True and False
result = False and False
print(result)
#逻辑或(找True值 )
result = True or True
result = True or False
result = False or False
print(result)
6. 非布尔值的与运算
#与运算规则是找False, 如果第一个值是False,那么不看第二个值,直接返回第一个值,如果第一个值是True,那么直接输出第二个值
result = 1 and 2
print(result)
2
result = 1 and 0
print(result)
0
result = 0 and 1
print(result)
0
result = None and 0
print(result)
None
7. 非布尔值的或运算
#或运算规则是找True, 如果第一个值是True,则不看第二个值,直接返回第一个值,如果第一个值为False,则直接输出第二个值
result = 1 or 2
print(result)
1
result = 0 or 2
print(result)
2
result = 0 or None
p rint(result)
None
8. 变量在内存中原理
#整数,不可变类型
a = 10
b = 10
b = a
print(id(a), id(b))
1504537904 1504537904#整数,不可变类型id 地址不变
#字符串 不可变类型 当值强制性改变的时候 id会改变
str1 = 'abcdefg'
str2 = 'abcdefg'
print(id(str1), id(str2))
1719196632544 1719196632544 #字符串 不可变类型 
#字符串 不可变类型 当值强制性改变的时候 id会改变
#列表 可变类型 当值发生改变的时候 id不会变
list1 = [1, 2, 3]
list2 = list1
print(id(list1), id(list2))
1623004356168 1623004356168#
import copy
#浅拷贝: 只能拷贝数据类型的第一层数据
a = 'abc'
list1 = [1, 2, 3, a]
list2 = list1.copy()
print(id(list1), id(list2))
3006840577608 3006840577736 #值相等但在内存中id不同
print(id(list1[3]), id(list2[3]))
3006840488040 3006840488040 #内存id相等

本文地址:https://blog.csdn.net/weixin_50587406/article/details/109955508