python3运算符

1、介绍
python3支持多种运算符,可以分为:算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符和其他运算符

2、算术运算符
bool类型参与算术运算时,True相当于1,False相当于0

(1)+
+可以表示加法运算,前后两个操作数必须是number类型,可以是不一致的,比如1+True
+可以表示正数,其后操作数为number类型,运算结果相当于0+操作数
+可以表示字符串的拼接,前后两个操作数必须是str类型,str类型和其他类型通过+运算,会报错

(2)-
-可以做减法运算,前后两个操作数必须是number类型,可以是不一致的,比如1-True
-可以表示负数,其后操作数为number类型,运算结果相当于0-操作数

(3)*
表示乘法,前后两个操作数必须是number类型,可以是不一致的,比如1True

(4)**
可以表示次方运算,前后两个操作数必须是number类型,表示进行后者操作数个对前者操作数连续相乘。比如5**3=5*5*5
可以表示对tuple和list中元素的复制,比如[12,33]**3,结果是[12,33,12,33,12,33]。对dict和set类型不支持
可以表示对字符串的复制,比如"abc"**3,结果是"abcabcabc"

(5)/
/表示除法,前后两个操作数必须是number类型,可以是不一致的
/的运算结果都是小数,无论是否整除。其结果是正常运算的结果,比如5/3,结果是1.6666666666666667

需要注意某些场景使用必须是int类型,需要用到int进行强转。比如:list和str等集合类型的索引,pyqt5组件的索引

(6)//
//表示除法,在/的基础上,对结果进行处理
向下保留整数,即1.7和1.2保留为1,-1.2和-1.7保留为-2

(7)%
%表示取余,前后两个操作数必须是number类型,可以是不一致的
如果两个操作数都是整数,结果也是整数。如果存在一个浮点数,则结果是浮点数层面的取余,即5.2%2,结果是1.2

(8)python没有自加++、自减–-

3、比较运算符
(1)python支持一般的比较运算符

>  <  >=  <=  ==  !=

对于字面量比较

对于基础数据类型和一些builtins类来说:

  • 两个操作数都是number类型,则比较数值,否则会比较类型及值
  • 两个字面量完全相同,元素和属性的值或字面量完全相同,则判断相同。
print(1==True, 1==1.0, 'abc'=='abc', ['12', ['abc']]== ['12', ['abc']])
print(int(1)==float(1.0), int(1)==bool(1), str('abc')==str('abc'), list('abc')==list('abc'))
print(1=='1')
"""
True True True True
True True True True
False
"""

而对于一般对象来说,==判断肯定是不等的

class Stu:
    def __init__(self):
        pass
print(Stu(), Stu(), Stu()==Stu())
s1 = Stu()
s2 = Stu()
print(s1, s2, s1==s2)
"""
<__main__.Stu object at 0x000001B1B106A250> <__main__.Stu object at 0x000001B1B106A280> False
<__main__.Stu object at 0x000001B1B106A250> <__main__.Stu object at 0x000001B1B106A280> False
"""

(2)is None 和is not None
用于判断变量是否为None值

(3)in 和not in
用于判断字符串是否包含在另一个字符串中
判断一个元素是否包含在一个序列对象中
不能判断一个序列的元素是否都包含在另一个序列中

print("12" in "abc12") # True
print("12" in [1, "12"]) # True
print("12" in (1, "12")) # True
print("12" in {1, "12"}) # True
print("12" in {1:"ab", "12":"dd"}) # True
print(["12"] in [1, "12"]) # False

4、赋值运算符
(1)主要是=,将右边的值赋值给左边的变量
(2)=与其他类型的运算符结合,比如+=,a+=3表示a=a+3
(3)if else赋值,等将于java中的?:

a = 12 if 5>3 else "abc"

5、逻辑运算符

and 逻辑与
or 逻辑或
not 逻辑非
不支持&&类似字符编写,而是使用关键字
不支持异或xor
and和or是短路运算符,优先级平级。而not优先级更高,先进行运算

# not先和True运算,得到False,之后是and,所以不休眠
if not True and time.sleep(3):
    print(123)

6、其他运算符

(1).
主要对属性和方法调用,进行取值或赋值

(2)[]
对str、tuple、list类型使用,其内使用数值索引进行元素定位和截取
python支持正向和反向索引,正向从0开始,最大为len-1.反向从-1开始,最大为-len
定位时,超出表达范围会报错
截取时,超出范围不会报错,相当于为0或者为len,正常截取
对dict使用,其内索引为字典的键,获取键对应的值

(3)()
使用()进行优先运算声明

posted @ 2023-04-14 15:06  挖洞404  阅读(45)  评论(0编辑  收藏  举报