前几天有看到一篇 Flask 开发团队内部 Python 编码风格指南 ,里面有一段关于比较的规范觉得很有意思:

任意类型之间的比较,使用 == 和 !=

与单例(singletons)进行比较时,使用 is 和 is not

永远不要与 True 或 False 进行比较(例如,不要这样写:foo == False,而应该这样写:not foo)

自己在写代码的时候很少去关注变量的比较要如何实现,基本都是直接使用 == 。今天就借此机会聊聊 Python 中的比较运算符。

== 与 !=

== 和 != 是等值校验。

这两个运算符是我们最熟悉不过的比较运算符了。== 会根据魔术方法 eq 检测左右两侧对象的值是否相等。

例如 x == y ,其实背后的操作是 x.__eq__(y)。

Python编码风格篇:比较运算符

is

is 是身份校验。它将检测左右两侧是否为同一个对象。

同一个对象必须满足:

值相同

内存地址相同

因此就不难理解为什么 is 和 is not 用于单例(singletons)比较了。

单例(singletons)是什么?

单例是一种设计模式,应用该模式的类只会生成一个实例。

单例模式保证了在程序的不同位置都可以且仅可以取到同一个对象实例:

如果实例不存在:会创建一个实例

如果实例已存在:会返回这个实例

not

not 是 Python 中的逻辑判断词,常用于布尔型 True 和 False。

not True -> False

not False -> True

逻辑判断

a = False

not a 为 True

if not a:

pass

判断元素是否存在

a = 100

b = [1, 2, 3]

元素 a 是否不在列表 b 中

if a not in b:

pass

总结

仅对值进行简单比较时可以使用 ==/!= 操作符:

a = 1

b = 2

if a == b:

pass

else:

pass

is 用于比较单例,例如比较 None:

if a is None:

pass

if a is not None:

pass

如果涉及布尔值 True/False 的判断,使用 not,不要直接与 True 或 False 比较:

a = False

b = True

正确的写法

if not a:

pass

if b:

pass

错误的写法

if a == False:

pass

not 还可以用于判断元素是否在列表/字典中存在。

python公司大部分编码风格_Python编码风格篇:比较运算符-阿里云开发者社区相关推荐

  1. python中如何输出中文_python中怎么输出中文-问答-阿里云开发者社区-阿里云

    方法一: 用encode和decode 如: ? 1 2 3 4 5 6 7 8 9 10 11 import os.path import xlrd,sys Filename='/home/tom/ ...

  2. python怎么打开h5文件_python怎么查看h5文件-问答-阿里云开发者社区-阿里云

    h5接受的数据是矩阵跟mat方法一致,但是具有更强的压缩性能 使用hdf5依赖于Python的工具包:h5py import h5py #导入工具包 import numpy as np HDF5的写 ...

  3. python 多态app_多态简介 | Python从入门到精通:高阶篇之三十三-阿里云开发者社区...

    多态 多态是面向对象的三大特征之一. 多态从字面上理解是多种形态.例如:狗有多个种类(狼狗.藏獒.哈士奇.古代牧羊犬...). 一个对象可以以不同的形态去呈现. 我们先来定义两个类: class A: ...

  4. python合法标识符 40xl_Python基础测验(答案篇)-问答-阿里云开发者社区-阿里云

    一.填空题 Python使用符号 # 标示单行注释:以 缩进对齐 划分语句块. Python序列类型包括 字符串 . 列表 . 元组 三种: _字典_是Python中唯一的映射类型. Python序列 ...

  5. python与材料计算公式_《从问题到程序:用Python学编程和计算》——2.11 补充材料-阿里云开发者社区...

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第2章,第2.11节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2 ...

  6. python 黑客工具开发_python黑客软件的搜索结果-阿里云开发者社区

    带你读<Python科学计算(原书第2版)>之一:导论 计算机科学丛书点击查看第二章点击查看第三章Python科学计算(原书第2版)Python for Scientists, Secon ...

  7. python妹子图_python 妹子图的搜索结果-阿里云开发者社区

    Python老司机手把手带你写爬虫,整站下载妹子图,一次爽个够! 其实很多编程语言都可以做爬虫,例如java.c#.php等等甚至excel都可以抓网页的图表,那么为什么我们要用Python呢?它简单 ...

  8. python import from区别_python import 与 from .... import ...区别-阿里云开发者社区

    在python用import或者from...import来导入相应的模块. 模块其实就一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候, 直接把相应的模块导入到我们的程序 ...

  9. python调用 matlab库_python调用matlab的搜索结果-阿里云开发者社区

    2018python技术问答集锦,希望能给喜欢python的同学一些帮助 小编发现问答专区中有很多人在问关于python的问题,小编把这些问题汇总一下,希望能给喜欢python的大家一些启示和帮助 本 ...

最新文章

  1. 理解MapReduce哲学
  2. phpmyadmin 查看sql历史记录
  3. 51nod 1272 最大距离 O(nlog(n)) , 快排 , 最大连续子串
  4. JavaScript高级程序设计之基本概念篇
  5. haroopad设置
  6. 每天一个linux命令(54):ping命令
  7. getlasterror返回57怎么解决_王者荣耀:用时最短职业比赛?3分57秒结束,解说都看呆了!...
  8. Andrew Ng机器学习公开课笔记 -- Logistic Regression
  9. 补习系列(9)-springboot 定时器,你用对了吗
  10. 毕设过程小记—同步带传动选型计算+张紧机构
  11. N-BaIoT-Network-based-Detection-of-IoT-Botnet-Attacks
  12. pe计算机找桌面文件,如何在Windows pe打开桌面文件夹?找不到原桌面文件夹怎么办?...
  13. 4.Yocto项目概念
  14. python条形图和线形图的绘制,并显示数据
  15. 试了一下搜狐云景对ruby的支持
  16. 太原网络营销师揭秘每个老板最头疼的百度竞价(SEM)如何提供转化率?
  17. 人源肿瘤细胞异种移植(CDX)小鼠模型 CDX模型的优势简介
  18. ARP攻击原理与实践
  19. 十所大学!计算机第二学士学位开始报名!
  20. 2022年度PANTONE流行色发布

热门文章

  1. newcoder ACM模式
  2. 通过Wireshark抓包分析谈谈DNS域名解析的那些事儿
  3. vscode设置标签页多行显示
  4. Linkis 编译文档
  5. 【网址收藏】dubbo特新概念及特性、环境搭建、dubbo-monitor安装、rpc原理以及dubbo原理:框架设计、启动解析加载配置信息、服务暴露、服务引用及调用
  6. HDFS写数据的流程图
  7. geotools学习(一)IntelliJ快速入门
  8. JVM调优:JVM内存分代模型
  9. Linux nohup 和 命令
  10. openresty入门示例