深入浅析Python 中 is 语法带来的误解


Posted in Python onMay 07, 2019

起步

Python 的成功一个原因是它的可读性,代码清晰易懂,更容易被人类所理解,但有时可读性会产生误解。

假如要判断一个变量是不是 17,那可以:

if x is 17:

x 是 17 肯定是比 x == 17 更加口语化的。

is的误解

但是如果你尝试:

if name is "weapon":

这个判断不见得管用。is 用来检查左侧和右侧是否是完全相同的对象。如果有两个不同的字符串对象,每个对象的值是相同的,应该使用 == 来判断,因为 is 的用法与口语上的区别挺大的:

if 999 + 1 is 1000: # False

正因为这样的误解,在 if 判断条件上容易让初学者掉坑:

answer = 'yes'
if answer is 'y' or 'yes':

你会发现不管变量是什么值,判断都是为真。因为 is 的优先级高,相当于 if (answer is 'y') or ('yes') 。

正确的方法应该是 if answer == 'y' or answer == 'yes' 或者 if answer in ('y', 'yes') 。

is not 上的混淆

>>> 'something' is not None
True
>>> 'something' is (not None)
False

is not 是一个二元运算符,应该视为一个整体,不要因为中间空格而当成两个词。底层上,它们也是一个操作符,CPython 将 s is not None 翻译成的字节码为:

6 LOAD_NAME        0 (s)
 8 LOAD_CONST        1 (None)
10 COMPARE_OP        9 (is not)

is not 是对 is 相对应的操作符。也可以视为是将 is 判断的结果再进行取反。

总结

我同意 Python 非常易读。每种语言的结构都存在一些“出乎意料”的使用。这并不影响我对 Python 这门语言的喜爱,每个人都应该好好学习,并小心使用选择的语言。

以上所述是小编给大家介绍的Python 中 is 语法带来的误解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
Nov 16 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
python3 下载网络图片代码实例
Aug 27 Python
Python Lambda函数使用总结详解
Dec 11 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
Python 读取WAV音频文件 画频谱的实例
Mar 14 Python
浅谈keras2 predict和fit_generator的坑
Jun 17 Python
python中逻辑与或(and、or)和按位与或异或(&、|、^)区别
Aug 05 Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 Python
jupyter notebook快速入门及使用详解
Nov 13 Python
pandas 按日期范围筛选数据的实现
Feb 20 Python
利用python如何在前程无忧高效投递简历
May 07 #Python
Python可迭代对象操作示例
May 07 #Python
python实现支付宝转账接口
May 07 #Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 #Python
python验证身份证信息实例代码
May 06 #Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 #Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 #Python
You might like
php统计数组元素个数的方法
2015/07/02 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
python实现人人网登录示例分享
2014/01/19 Python
浅谈python迭代器
2017/11/08 Python
Pycharm 设置自定义背景颜色的图文教程
2018/05/23 Python
python实现屏保计时器的示例代码
2018/08/08 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
python isinstance函数用法详解
2020/02/13 Python
Python实现GIF图倒放
2020/07/16 Python
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
应届毕业生应聘自荐信范文
2014/02/26 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
保护校园环境倡议书
2015/04/28 职场文书
未婚证明格式
2015/06/15 职场文书
运动会3000米加油稿
2015/07/21 职场文书
同学聚会感言一句话
2015/07/30 职场文书