`
calmness
  • 浏览: 353348 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Python笔记之and or陷阱

阅读更多
    最近开始接触python,整体的感觉很不错,但是也存在不少的陷阱,比如and or的用法就是一个。

    第一次接触python的and or语法的时候,第一个感觉就是它的返回值是true or false,然而实际上并不是,它是直接返回or前后两个表达式的值,这更像java中的": ?",如:
>>> ""and"b"or"c"
'c'

在python里,""空字串看作是False,所以以上表达式返回"c",看起来和java的": ?"一样吧,然而如此认为就大错特错了,其实在这里就存在一个陷阱,看如下代码:
>>> "b"and""or"c"
'c'

以上代码目的是判断是"b"的时候返回空字符串,否则返回"c",然而本来应该返回""空字符串,可是实际上的结果却出乎意料,返回的是"c"。

原来and or首先会对and前后表达式进行判断,只有都为True才会返回and之后那个表达式的值,而上面代码由于and后是个""空字符串,所以结果为False,就返回"c"。

那么如何解决这个问题呢?其实我们可以利用python的list,看如下代码:
>>> ["b"][0]and[""][0]and["c"][0]
''

将实际的字符串封装进list中,这样对于and来说,后面是一个非空list,返回结果就是True,因此最终就可以达到避免该陷阱的目的。
分享到:
评论
2 楼 simohayha 2008-08-30  
In other words, x and y first evaluates x. If x is false, the result is x; otherwise, the result is y. Similarly, x or y first evaluates x. If x is true, the result is x; otherwise, the result is y.

1 楼 victorsos 2008-08-12  
Python 2.5中可以用 value1 if expression else value2 来代替 expression and  or value2

""and"b"or"c" -> "b" if "" else "c"
"b"and""or"c" -> "" if "b" else "c"

感觉这样比and or理解上也容易些

相关推荐

    python笔记.zip

    python笔记

    Python 笔记源码——内含python后端&机器学习等.zip

    Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...

    Python笔记 ,python笔记全,Python源码.zip

    这份“Python笔记全,Python源码”的压缩包很可能是为了帮助初学者或有经验的开发者深入理解Python语言的核心概念和实践技巧。以下是根据标题和描述可能包含的一些关键知识点: 1. **基础语法**:Python的基础包括...

    菜鸟的Python笔记

    本篇Python笔记将从多个方面对Python进行介绍,包括其安装过程、基本编程概念、数据类型、基本语句、控制结构、函数使用等,旨在帮助初学者快速入门并掌握Python的基本知识。 一、安装Python 要使用Python,首先...

    小甲鱼python教程笔记

    小甲鱼 Python 教程笔记 本教程笔记涵盖了 Python 的基础知识点,包括变量、字符串、列表、元组、布尔类型、逻辑运算符、循环结构、列表访问、成员资格运算符、is 运算符、引用和拷贝、列表推导式、元组的使用、...

    python核心笔记.pdf

    【Python核心笔记】深入浅出地探讨了Python这一强大且多用途的编程语言。Python以其简单易用且功能强大的特性,赢得了广大开发者的喜爱。它是一种解释型的高级编程语言,支持面向对象编程,同时也具备过程化编程的...

    Python 笔记源码综合下载.zip

    这份"Python 笔记源码综合下载.zip"包含了有关Python开发的知识点,非常适合学习者深入理解和实践。 首先,让我们来探讨Python的基本语法。Python采用缩进来表示代码块,这使得代码看起来更加整洁。它支持多种数据...

    python笔记

    廖雪峰Python笔记总结 廖雪峰Python笔记涵盖了Python语言的基础知识,从最基本的概念到模块部分,不包括函数式编程。下面是对该笔记的知识点总结: Python基础 * Python语言的概述:Python是一种高级的、解释性的...

    Python学习笔记(干货) 中文PDF完整版.pdf

    逻辑运算符如and、or和not用于组合条件;位运算符如按位与(&)、按位或(|)等操作二进制位;成员运算符如in和not in检查元素是否在序列中;身份运算符如is和is not则检查两个对象是否是同一个实体。 5.1至5.5章节讲解...

    python笔记.rar

    这份"python笔记.rar"包含了对Python基础知识的详细总结,对于初学者来说是一份极好的学习资源。以下是对笔记内容的详细阐述: 一、Python基础语法 1. 变量与数据类型:Python支持多种数据类型,如整型(int)、...

    马哥python课堂笔记-马哥教育PYTHON相关基础笔记.pdf

    在马哥教育的PYTHON相关基础笔记中,我们看到几个关键知识点: 1. **推荐书籍**:学习Python时,有几本经典教材值得参考,包括《Python Cookbook》、《Learn Python the Hard Way》、《Google's Python Class》以及...

    个人笔记本.rar python 笔记本 tkinter

    查询和替换功能则涉及到了字符串操作,这是Python的核心能力之一。通过搜索算法,如朴素贝叶斯或KMP,应用可以快速定位文本中的特定词汇,并提供替换选项。此外,它可能还集成了正则表达式,以支持更复杂的匹配模式...

    python笔记.md

    python笔记.md

    python笔记1

    python自学ing,自己总结了一些python的知识点,python笔记1。

    Python笔记 ,python笔记全,Python

    "Python笔记"可能是一份详尽的学习资料,旨在帮助初学者快速掌握Python的基础知识,直至达到能够独立解决问题的程度。这份文档可能包含了从入门概念到进阶主题的全面讲解。 在Python的入门阶段,笔记可能会涵盖以下...

    python学习笔记汇总

    python学习笔记汇总

    python的毕业设计云笔记平台分析与设计.zip

    python的毕业设计云笔记平台分析与设计。基于python的云笔记平台分析与设计python的毕业设计云笔记平台分析与设计。基于python的云笔记平台分析与设计python的毕业设计云笔记平台分析与设计。基于python的云笔记平台...

    千峰python课件笔记+源码 (凯哥)

    千锋python基础教程:1、第一个python程序与数据存储 '千锋python基础教程:2、print&input;与变量和运算符' 千锋python基础教程:3、字符串与循环中的while '千锋python基础教程:4、布尔&list;与条件循环语句与...

    python笔记整理

    这些"python笔记整理"涵盖了Python的基础知识和进阶概念,是学习和巩固Python技能的重要资源。以下是对笔记内容的详细解读: 1. **基础语法**:Python的语法简洁而直观,包括变量赋值、数据类型(如整型、浮点型、...

Global site tag (gtag.js) - Google Analytics