Python 运算符 算数运算符 关系运算符 赋值运算符 逻辑运算 (逻辑运算符的优先级) 位运算 成员运算符 身份运算符 运算符的优先级

news2025/1/24 14:48:39

1

  • 运算符
    • 算数运算符
    • 关系运算符
    • 赋值运算符
    • 逻辑运算
      • 逻辑运算符的优先级
    • 位运算
      • 布尔运算符
      • 移位运算符
    • 成员运算符
    • 身份运算符
    • 运算符的优先级

运算符

image-20231222022047960

算数运算符

四则运算+ - * /

a = 8
b = 9
print(a+b)

#与Java类似 + 也可以进行字符串的连接 注意:字符串+数字=字符串  不存在会抛出异常这里与java不同
print(a-b)
print(a*b)
print(a/b)

image-20231221233107091

取模运算 %

a=10
b=3
print(10 % 3) #---->1
    #在python中取模结果的符号与出书相同
print(-10 % 3) #---> 2  

image-20231221233050285

之所以出现1 与 2 的不同 是因为python取模计算规则为 r = p-q*floor(p/q) floor表示向下取余

**幂 ****

print(4**2) #-->16  表示4的二次方

取整除 向下取整 ‘//’

print(10//6)# -->1

关系运算符

等于关系 ==

print(2==2) #-->True 结果为bool型

大于 大于等于(大于||等于)

print(2>3)#-->False
print(2>=2)#-->True

小于 小于等于(小于||等于)

print(2<3)#-->True
print(2<=2)#-->True

!= 不等于

print(2!=2) #-->False
print(2!=3) #-->True

不同数据类型之间的比较,若是不同的数据类型进行比较 python会先尝试 进行类型转换,然后在进行比较

  1. 数字与数字之间的比较

    • 如果都为 整型 或者 浮点型 则直接比较

    • 如果一个是整型 一个是浮点型 则整数转换为浮点数后在进行比较

    • 如果一个对象是复数,则不支持比较 会抛出异常

    • c =  1+2j #-->虚数
      d = 1
      print(c<d)#-->抛出异常 TypeError  '<=''>='依然抛出异常
      

      image-20231222013028484

  2. 字符串与字符串进行比较

    • 如果**两个字符串不为空,**则按照字母顺序表序进行比较

    • 如果一个字符串为空,则认为它比非空字符串要小

    • 如果两个字符串都为空 ,则认为它俩相等

    • str1 = "aaa"
      str2 = "aaa"
      print(str1 == str2) #-->True
      
      str3 = ""
      str4 = "1"
      print(str3<str4)# -->True
      
  3. 列表,元组之间的比较

    • 如果两个列表(元组)长度相等,则按照元素顺序依次进行比较

    • 如果两个列表(元组)长度不相等,则先比较相同位置上的元素,如果都相等则长度更长的列表(元组)更大,否则比较第一个不同元素的大小

    • 如果列表(元组)中包含不同类型的元素,则会尝试对他们进行类型转换,然后在进行比较

    • # 列表与列表进行比较
      list1 = [1 ,2 ,3]
      list2 = [1,2,3,4]
      print(list1 == list2)# False
      # 元组与元组之间的比较
      tu1 = (1 ,2 ,3)
      tu2 = (1,2,3)
      print(tu1==tu2)# True
      #列表与元组比较
      print(list1!=tu1)# True  
      #print(list2<=tu2) #-->报错
      

      注:除了数字之间 字符串之间 ==与!= 是用来判断类型相等或者不相等

  4. 字符串与数字比较

    • 在python中,字符串与数字是不同类型的对象,不能直接比较大小,会抛出一个异常,如果是 ==或!= 则不会 因为是用来判断类型是否一致

    • print("123"==123)# -->false
      # print("123"<123) -->抛出类型不一致异
      

赋值运算符

  • 简单的赋值运算 表示将右边的值复制给左边的值

    • a = 10
      b = 10.1
      c = "hello world"
      
  • 算术赋值运算符 += -= *= /=

    • a+=10
      b-=10
      c+="1" #字符串与字符串之间使用'+'表示字符串的连接
      print(a)#-->20
      print(b)#-->0.09999999999999964  
          # 之所以不是0.1 是因为与电脑存储浮点数据方式有关
      print(c)#-->hello world1
      a=10
      b=2
      a*=10
      b/=2
      print(a) #-->100
      print(b) #-->1.0
      
  • 取模赋值运算符

    • a = 10
      a %=3
      print(a)#-->1
      
  • 幂赋值运算符

    • a = 4
      a **=2
      print(a)#-->16
      
  • 取整除赋值运算符

    • a=15
      a//=4
      print(a)#-->3
      

逻辑运算

  • and 与运算

    • x and y 表示如果x为假 则x and y返回x的值 否则(非False)返回y的计算值

    • a=1
      b=2
      print(a and b)#-->2
      a=False
      print(a and b)#-->False
      
    • 注:python的与运算与java是有区别的 java中的&&运算结果是bool类型 非真即假,但是python结果是任何类型

  • or 或运算

    • x or y 表示如果x 是True,他返回x的值,否则返回y的计算值

    • x=5
      y=10
      print(x or y)# -->5
      print(x==4 or y)# -->10
      # 注意 当x为True时 则不会判断后面的y
      
  • not(非)运算

  • not x 表示如果x为True 则结果为False …理解为去反

  • a = False
    print(not a)# -->True
    

逻辑运算符的优先级

先举个例子

# 代码1
a=True
b=False
if not b or a:
    print("not 操作优先级大于 or 操作")# -->not 操作优先级大于 or 操作

#....类似进行比较  总结如下
#  

image-20231222014255802

结论 :not > and >or

位运算

image-20231222014644617

布尔运算符

  • 按位与运算 ‘&

    • 果两个数据对应的二进制位都为1 则为1 否则为0

    • a = 9  #1001
      b = 10 #1010
      print(a & b) #--> 8   1000
      
  • 按位或运算 ‘|

    • 如果数据对应的二进制位有一个1时则为1 全0则0

    • a = 9  #1001
      b = 10 #1010
      print(a|b)#-->11 1101
      
  • 按位异或运算 ‘^

    • 定义:当两个对应二进制位 相异时结果为 1

    • a = 9        #1010
      b = 10       #1010
      print(a^b)#3  0011
      
  • 按位取反运算 ‘~

    • 定义:对数据的每个二进制位去反(1–>0,0–>1)

      a = 9        #0000 1001
      print(~a)#-10 
      
    • 注意:正数的补码是它本身,负数的补码为正数值二进制位取反后+1,符号位为1

    • 0000 1001

      # 补码 0000 1001

      # 取反 1111 0110 -->负数所以 进行补码处理

      #新补码 1000 1010 -->-10

移位运算符

  • 左移位运算符(<<)

    • 定义:运算数的各个二进制全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0

    • a=9 # 0000 1001
      print(a<<2) #36 0010 0100
      
  • 右移运算符(>>)

    • 定义:把">>“的运算数的各二进制全部右移若干位,”>>"右边数指定移动的位数,低位丢弃,高位补零

    • a = 9 # 0000 1001
      print(a>>2) #2 0000 0010  
      print("成员运算符")
      

成员运算符

成员运算符用于识别某一元素是否包含在变量中,这个变量可以是字符串,列表,元组,因为是判断在或者不在,所以有两个运算符innot in得到的结果为bool类型

  • in

    • 判断变量是否包含某元素,包含返回true,不包含返回False

    • a=1
      b=10
      list = [1,2,3,4,5,6]
      if(a in list):
          print("a在list中")
      else:
          print("a不在list中")
      # a在list中
      
      if(b in list):
          print("b在list中")
      else:
          print("b不在list中")
      # b不在list中
          
      #当然in 运算符也可以进行字符串的匹配
      s = "cuiweiyang"
      str1 = "cui"
      str2 = "zhang"
      if(str1 in s):
          print("str1在s中")
      else:
          print("str1不在s中")
      # str1在字符串2中
          
      if(str2 in s):
          print("str2在s中")
      else:
          print("str2不在s中")
      # str2不在字符串s中
      # not in 刚好与in相反 用法是一致的
      print("身份运算符")
      
  • not in 刚好与in相反 用法是一致的

身份运算符

  • is 是判断两个标识符是不是引用自一个对象,比如 x is y,类似于 id(x)==id(y),如果是引用同一个对象,返回True(bool类型),否则返回False(注:id()函数是用于获取对象的内存地址)

  • is not 刚好与is 相反

    • a = 20
      b = 20
      if(a is b):
          print("a与b有相同的标识")
      else:
          print("a与b没有相同的标识")
          #a与b有相同的标识
      b=30
      if(a is b):
          print("a与b有相同的标识")
      else:
          print("a与b没有相同的标识")
          #a与b没有相同的标识
      
    • is与== 的区别

      • is是用来判断两个变量引用对象是否为同一个也就是比较引用对象的地址,==用于判断引用变量的值是否相等

      •  #eg:
            a=[1,2,3]
            b=a
            print(a is b)#True
            print(a == b)#True
            b=a[:]
            print(a is b)#Fasle
            print(a == b)#True  b=a[:]会创建一个新的与a完全相同的对象,但是与a并不指向同一个对象
        

运算符的优先级

  1. 圆括号表达式

    • print((1+2)*3)# -->9
      
  2. 取,切片,调用,属性引用 [],[:],(), .

    • 分别为 x[index],x[index:index],x(arguments...),x.attribute

      # x(arfuments...):函数调用运算符()**优先级最高,**总是首先执行,在一个表达式中,由于小括号可以改变运算符优先级关系,因此这个运算符是最强的

      # x[index] x[index:index]:它们优先级相同,都比点运算符低,这两个运算符都是序列类型(如字符串,列表和元组)中的索引和切片操作符,用于获取序列中的元素伙子序列

      # x.attribute:点运算符,是访问对象属性的运算符,在运算符优先级中优先级最低,在一个表达式中,点运算符总是最后执行,并且可以链接多个点运算符形成一个长链 eg:obj.atrr1,atrr2

    • my_list = ["apple","banana","cherry"]
      index = 1
      result = my_list[index].upper()
      print(result)
      # 这里定义了一个列表my_list 和一个整数变量index ,接着,我们使用索引操作my_list[index]访问了列表的第二个元素"banana",得到一个字符串对象,在使用.点运算符调用
          #将其字母全部大写,然后打印结果
      
  3. await表达式

    • await 是用来等待线程完成的,像await x则是表达一个暂停当前线程的语法
  4. 乘方(指数)**

  5. 正,负,按位非,not

  6. 乘,矩阵乘,除,整除,取余

  7. 加和减

  8. 移位

  9. 按位与 &

  10. 按位异或 ^

  11. 按位或 |

  12. 比较运算符(包括成员检测和标识号检测符)

  13. 逻辑非 not

  14. 逻辑与 an

  15. 逻辑或 or

  16. 条件表达式(三元表达式)

    • print(5 if 5>2 else 2) #-->5  
      
    • a = 表达式1 if 条件 else 表达式 2 如果条件成立 表达式1赋值给a,负责表达式2赋值给a

  17. lambda表达式

    • lambda表达式是一种创建匿名函数的语法结构,一下是一个使用lambda表达式实现简单的加法运算实例代码
    add = lambda x,y:x+y
    
    print(add(3,5))#-->8
    
  18. 赋值表达式(也称为海象运算符)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1330003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue项目如何打包

1. 确保你已经在项目根目录下安装了Vue CLI。如果没有安装&#xff0c;可以通过以下命令进行安装&#xff1a; npm install -g vue/cli 2. 在项目根目录下打开终端或命令行工具&#xff0c;运行以下命令来创建一个生产环境的打包文件&#xff1a; npm run build 这个命令会执…

异丙醇蒸汽干燥晶圆法

在半导体制程中&#xff0c;大多数的朋友对于晶圆干燥的印象还停留在旋转式甩干机&#xff08;SRD&#xff09;的阶段。晶圆旋转式甩干是目前最普遍的一种晶圆甩干方式&#xff0c;但是在很多工序中&#xff0c;并不太适合用旋转式甩干机&#xff0c;那么IPA&#xff08;异丙醇…

SuperMap Hi-Fi 3D SDK for Unity基础开发教程

作者&#xff1a;kele 一、背景 众所周知&#xff0c;游戏引擎&#xff08;Unity&#xff09;功能强大&#xff0c;可以做出很多炫酷的游戏和动画效果&#xff0c;这部分功能的实现往往不仅仅是靠可视化界面就能够实现的&#xff0c;还需要代码开发。SuperMap Hi-Fi SDKS for …

浅谈Guava Cache的参数使用

CacheLoader 用于数据加载方式比较固定且统一的场景&#xff0c;在缓存容器创建的时候就需要指定此具体的加载逻辑。通常开发中使用时我们需要继承CacheLoader类或写一个匿名实现类实现其load方法和reload方法 load方法 当执行get操作没有命中缓存或者判断缓存已经超出expir…

WSL移动ubuntu到其他盘的几个问题以及安装,使用过程中遇到bug记录

这里写目录标题 无法正常修改Ubuntu系统的默认用户解决方案1&#xff1a;解决方案2&#xff1a; 出现 id xxx no such userGUI不能正常显示 无法正常修改Ubuntu系统的默认用户 ubuntu移动到其他盘可以参考WSL Ubuntu子系统迁移到非系统盘 下面问题是我安装时遇到的&#xff0c…

vscode | python | remote-SSH | Debug 配置 + CLIP4Clip实验记录

安装Extension 本地安装Remote-SSH、python 远程服务器上安装Python 难点&#xff1a;主机和远程服务器上安装Python扩展失败&#xff0c;可能是网络、代理等原因导致解决方法&#xff1a; 主机在官方网站下载Python扩展&#xff1a;https://marketplace.visualstudio.com/it…

微信小程序开发学习(上强度):从0开始写项目

前置知识 1、配置插件 微信小程序 基础模板引入sass的两种方法_微信小程序使用sass-CSDN博客 之后在对应页面里新建一个scss文件&#xff0c;写css 2、注册小程序&#xff0c;有个自己的appid&#xff0c;不用测试号了 5.1.注册小程序账号获取appid及个人和企业版差异_哔哩…

SpringCloud Alibaba(itheima)

SpringCloud Alibaba 第一章 微服务介绍1.1系统架构演变1.1.1单体应用架构1.1.2垂直应用架构1.1.3分布式架构1.1.4 SOA架构1.1.5微服务架构 1.2微服务架构介绍1.2.1微服务架构的常见问题1.2.2微服务架构的常见概念1.2.3微服务架构的常见解决方案 1.3 SpringCloud Alibaba介绍1.…

前端 JS 安全对抗原理与实践

作者&#xff1a;vivo 互联网安全团队- Luo Bingsong 前端代码都是公开的&#xff0c;为了提高代码的破解成本、保证JS代码里的一些重要逻辑不被居心叵测的人利用&#xff0c;需要使用一些加密和混淆的防护手段。 一、概念解析 1.1 什么是接口加密 如今这个时代&#xff0c;…

RabbitMQ入门指南(六):消息转换器及其案例

专栏导航 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、消息转换器 二、RabbitMQ默认转换器案例&#xff08;省略交换机&#xff09; 三、JSON转换器案例&#xff08;省略交换机&#xff09; 1.配置JSON转换器 2.运行结果 总结 前言 RabbitMQ是一个高…

ruoyi若依前后端分离版部署centos7服务器(全)

目录 VMware虚拟机 centos7 安装环境如下 一、msql 5.7 二、nginx1.23.3 三、java8 四、redis 3.2.1 五、部署若依前端 六、部署若依后端 前言 虚拟机的桥接与nat模式 : 重点 重点&#xff01;&#xff01;&#xff01; 无线不可以用桥接模式 &#xff0c;而你用了nat模式会…

lv12 linux设备树、网卡驱动移植

目录 1 设备树 1.1概念 1.2 设备树文件 1.3 设备树语法 2 Linux内核驱动移植 2.1 步骤 3 实验八网卡驱动移植 3.1 在内核源码的顶层目录下执行如下命令&#xff0c;修改内核配置 3.2 在设备树中添加网卡的硬件信息 3.3 修改时钟相关配置&#xff08;忽略无用的时钟&…

opencv入门到精通——改变颜色空间

目录 目标 改变颜色空间 对象追踪 如何找到要追踪的HSV值&#xff1f; 目标 在本教程中&#xff0c;你将学习如何将图像从一个色彩空间转换到另一个&#xff0c;像BGR↔灰色&#xff0c;BGR↔HSV等 除此之外&#xff0c;我们还将创建一个应用程序&#xff0c;以提取视频中的…

《深入理解计算机系统》学习笔记 - 第七课 - 机器级别的程序三

Lecture 07 Machine Level Programming III Procedures 机器级别的程序三 文章目录 Lecture 07 Machine Level Programming III Procedures 机器级别的程序三概述程序机制 栈结构栈说明栈定义推入数据弹出数据 调用控制代码示例程序控制流程%rip 传递数据ABI 标准示例 管理局部…

YB75XXH系列是采用CMOS工艺制造,低功耗的高压稳压器

YB75xxH 高耐压线性稳压器 ■产品简介&#xff1a; YB75XXH系列是采用CMOS工艺制造&#xff0c;低功耗的高压稳压器&#xff0c;最高输入电压可达25V,输出电压范围为1.5V一12.0V。它具有高精度的输出电压、极低的供电电流、极低的跌落电压等特点。 ■产品特点&#xff1a; …

使用Guava轻松创建和管理不可变集合

第1章&#xff1a;引言 大家好&#xff0c;我是小黑。今天&#xff0c;我们来聊聊一个在Java编程里超有用的话题&#xff1a;使用Guava创建和管理不可变集合。首先&#xff0c;咱们得明白&#xff0c;什么是不可变集合。简单来说&#xff0c;不可变集合就是一旦创建就不能被修…

深入了解 Android 中的应用程序签名

深入了解 Android 中的应用程序签名 一、应用程序签名介绍1.1 应用程序签名1.2 应用程序签名的意义1.3 应用程序签名的流程1.4 应用程序签名的方案1.5 签名的重要性和应用场景 二、AOSP 的应用签名2.1 AOSP的应用签名文件路径2.2 应用程序指定签名文件 三、Android Studio 的应…

【SpringBoot篇】基于Redis实现生成全局唯一ID的方法

文章目录 &#x1f354;生成全局唯一ID&#x1f339;为什么要生成全局唯一id&#x1f33a;生成全局id的方法✨代码实现 &#x1f354;生成全局唯一ID 是一种在分布式系统下用来生成全局唯一id的工具 在项目中生成全局唯一ID有很多好处&#xff0c;其中包括&#xff1a; 数据…

在Next.js和React中搭建Cesium项目

在Next.js和React中搭建Cesium项目&#xff0c;需要确保Cesium能够与服务端渲染(SSR)兼容&#xff0c;因为Next.js默认是SSR的。Cesium是一个基于WebGL的地理信息可视化库&#xff0c;通常用于在网页中展示三维地球或地图。下面是一个基本的步骤&#xff0c;用于在Next.js项目中…

信号与线性系统翻转课堂笔记8——周期信号的频谱

信号与线性系统翻转课堂笔记8——周期性信号的频谱 The Flipped Classroom8 of Signals and Linear Systems 对应教材&#xff1a;《信号与线性系统分析&#xff08;第五版&#xff09;》高等教育出版社&#xff0c;吴大正著 一、要点 &#xff08;1&#xff0c;重点&#…