首页 > 编程语言 >Python判断中使用多个and和or的优先级与踩坑

Python判断中使用多个and和or的优先级与踩坑

时间:2022-10-29 16:07:07浏览次数:63  
标签:语句 False 多个 Python 优先级 True 赋值



tags: Python Debug

一个问题

最近刷力扣,想试试 Python 新支持的海象操作符, 其实就是能在语句中赋值, 类似下面这样:

if (n:=len(nums)):
return False

但是当出现下面这种情况的时候, 赋值就会失败:

if True or (a:=1):
print(a)
'''
NameError: name 'a' is not defined
'''

出现这个错误的原因就是 Python 中​​and​​​和​​or​​​的优先级问题, 当语句中先出现​​or​​​的时候, 如果​​or​​​前面的值为​​True​​​, 那这个语句就判断为真,而不会进行之后的判断了, 所以后面的赋值就不会执行.
那么问题来了, 当一条判断语句中同时出现​​​and​​​ 和​​or​​​, 这时候其优先级是如何呢?
根据以往的经验, ​​​and​​​要比​​or​​​的优先级高, 然后​​not​​​的优先级又要比​​and​​​高.(但是一般为保险起见,还是在具有​​and​​操作符的两端加上小括号)

下面我引用了一段博客上看到的内容, 大家可以参考这篇文章,(​​Python and or not 优先级​​) 写的非常详细了.

  • not:如果 x 是假的,则“非假”为真,否则 x 是真的,则非真为假
  • and: 找到并返回第一个 False(假)或最后一个 True(真)
  • or: 找到并返回第一个 True(真)或最后一个 False(假)


标签:语句,False,多个,Python,优先级,True,赋值
From: https://blog.51cto.com/u_15366127/5806205

相关文章

  • c语言和python区别
    除了在语法使用上面的区别外,c语言和python的本质区别可能是在其语言性质上面的区别。简单来说C语言是编译语言,Python是脚本语言。1.C语言是编译型语言,经过编译后,生成机器码,......
  • python中for in的用法详解
    forin说明:也是循环结构的一种,经常用于遍历字符串、列表,元组,字典等格式:forxiny:循环体执行流程:x依次表示y中的一个元素,遍历完所有元素循环结束。例1:遍历字符串s='......
  • python 中 import 和 from import 两种导入库的区别
    在学习python的时候,自己发现平时导入第三库的时候,有时候会使用from的方式,有的时候会直接使用import的方式去导入第三方库,最近探究他们之间的区别,区别如下第一种使用f......
  • 3.2 使用Python打开Excel文件_获取指定单元格的内容
    Python打开及读取Excel表格内容1.打开和读取表格数据  打开工作薄    load_workbook(文件名)  获取工作表     workbook[sheet名称]    ......
  • 借用【.bat 批处理】实现同时播放多个视频 · 以PotPlayer播放器为例
    突然有这样的需求:同时打开一个文件夹下的多个视频播放任务。如何来实现呢?理所当然的是想到Potplayer本身可以开多个进程,也就是多开窗口播放,但是经过实验,发现在资源管理器......
  • 【python】多层级装饰器与类装饰器
    当一个功能函数,我们添加了多个额外功能时,这是我们就要使用多层装饰器;多层装饰器使用时是按就就近原则defmakebold(fn):print('加载makebold')defwrapper():......
  • python Tips -----主函数
    if__name__=="__main__":python和C++/Java不一样,没有主函数一说,也就是说python语句执行不是从所谓的主函数main开始的。当运行单个python文件时,如运行a.py,这个时候a......
  • 上手python之字典
    为什么使用字典通过【字】 就能找到对应的【含义】 所以,我们可以认为,生活中的字典就是记录的一堆:【字】:【含义】【字】:【含义】......Python中字典和生活中字典十分相......
  • 上手Python之set(集合)
    为什么使用集合我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景。为何又需要学习新的集合类型呢?通过特性来分析:列表可修改、支持重复元素且......
  • 上手python之序列
    序列概念序列是指:内容连续、有序,可使用下标索引的一类数据容器列表、元组、字符串,均可以可以视为序列。如图,序列的典型特征就是:有序并可用下标索引,字符串、元组、列表均满足......