最新要闻
- 每日消息!男子伪装外卖小哥偷餐 被店员一眼识破:破绽太多
- 天天微速讯:露营倒闭潮来袭?网友:准备工作繁琐 参加一次就够了
- 国产本田幼兽来了!本田Cross Cub 110上市:只需1.3万
- 【焦点热闻】集吸拖洗一体全能!追觅M13 Beta洗地机图赏
- 汇源生产:哪吒捏爆果汁3.5元/斤大促(商超11元)
- 当前简讯:遏制“舌尖上的浪费” 餐饮企业应当好“排头兵”
- 1个月发了4版驱动 Intel Arc显卡自信起来了:RTX 3060性价比已不能看
- 当前最新:索尼A7R5更新Ver.2.00固件:四大升级
- 速读:人工智能大潮下:Meta高管仍坚称元宇宙才是未来
- 每日快报!库克到访米哈游与大伟哥合影 大赞《原神》及创作团队
- 全球热讯:马斯克请愿叫停GPT-5!360周鸿祎:不发展才是最大的不安全
- 前沿资讯!打通为民服务“最后一米”,浦东这个街道积极推进社会治理与公共服务全覆盖
- 【环球热闻】全球男性精子量告急:50年来减少62%!2045年人类绝育?
- 支付宝招财宝如何样?招财宝收益高吗?
- 观热点:《最后生还者》 印象派杰作
- 焦点快报!vivo X Fold2真机亮相:经典华夏红配色、“天圆地方”设计
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
每日动态!一个诡异的Python小问题
一个诡异的Python小问题
问题
来自一个基础偏弱的学员,但不知道如何去解释
【资料图】
>>> "" is not None
:1: SyntaxWarning: "is not" with a literal. Did you mean "!="?True # 注意结果是会出现的,其实不影响你的比较 在我想来,这没啥毛病啊,可提示了语法警告
于是我去搜了下为何,捅了个马蜂窝
搜索
搜到的众多结果中,多有这样一段描述
从 python 3.8 开始,使用 is 和 is not 运算符时,会抛出 SyntaxWarning 语句警告信息
首先这肯定是不准确的描述,要真是,那还了得,所有的is / is not 都有问题?
比如
>>> [] is not NoneTrue
但既然这么说应该也多少有点依据
Python3.8 CHANGELOG
英文描述
The compiler now produces a SyntaxWarning when identity checks (is and is not) are used with certain types of literals (e.g. strings, numbers). These can often work by accident in CPython, but are not guaranteed by the language spec. The warning advises users to use equality tests (== and !=) instead. (Contributed by Serhiy Storchaka in bpo-34850.)
中文描述
当标识号检测 (is 和 is not) 与特定类型的字面值 (例如字符串和数字) 一同使用时编译器现在会产生 SyntaxWarning。 这在 CPython 中通常是可行的,但并不被语言定义所保证。 该警告会建议用户改用相等性检测 (== and !=)。 (由 Serhiy Storchaka 在 bpo-34850 中贡献。)
测试
根据上面的描述做几个测试
Python3.7环境的确没毛病
D:\Python37>pythonPython 3.7.5 (tags/v3.7.5:5c02a39a0b, Oct 15 2019, 00:11:34) [MSC v.1916 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> "" is not NoneTrue
关键:标识号检测 (is 和 is not) 与特定类型的字面值 (例如字符串和数字)
>>> 1 is None # 的确数字也有问题 is None和is not None类似
:1: SyntaxWarning: "is" with a literal. Did you mean "=="?False # 非数字或字符串是OK>>> [] is NoneFalse>>> {} is NoneFalse
来看另外一个情况
>>> a = 1>>> b = "">>> a is NoneFalse>>> b is not NoneTrue
赋值后都是没毛病的
谁又会单单用一个字面量去跟None比较呢?所以一般大家的代码都不会受此影响
另外一点,Did you mean "=="? 或者!=
>>> "" == NoneFalse>>> 1 != NoneTrue
但其实我们并不推荐跟None去比较的时候用==或者!=
参考码农高天的 《为什么判断一个值是否为None的时候,一定要用is呢?》https://www.bilibili.com/video/BV1xL411N7iS
花边
The compiler now produces a SyntaxWarning when identity checks (is and is not) are used with certain types of literals (e.g. strings, numbers). These can often work by accident in CPython, but are not guaranteed by the language spec. The warning advises users to use equality tests (== and !=) instead. (Contributed by Serhiy Storchaka in bpo-34850.)
BPO
BPO的意思是... bug.python.org,也就是python提交bug的地方
bpo-34850原文
https://github.com/python/cpython/issues/79031
Gregory have noticed that the "is" and "is not" operator sometimes is used with string and numerical literals. This code "works" on CPython by accident, because of caching on different levels (small integers and strings caches, interned strings, deduplicating constants at compile time). But it shouldn"t work on other implementations, and can not work even on early or future CPython versions.https://discuss.python.org/t/demoting-the-is-operator-to-avoid-an-identity-crisis/86I think that the adequate solution of this issue is not demoting the "is" operator, but emitting a syntax warning. In general, this is a work for third-party checkers. But many people don"t use checkers for their one-time scripts, using "is" with a literal is always a mistake, and it is easy to add a check for this in the compiler.Currently the compiler emits SyntaxWarning only for parenthesis in assert: assert(x, "msg"). But in earlier versions there were more warnings (they are errors). In 3.8 yet one SyntaxWarning will be added instead of DeprecationWarning for unknown escape sequences in string literals.The proposed PR makes the compiler emitting a SyntaxWarning when the "is" or "is not" operators are used with a constant (except singletons None, False, True and ...). A warning will be replaced with a SyntaxError if the warnings system is configured to raise errors. This is because SyntaxError contains more information and provides better traceback. The same change was made for "assert(...)". Added tests, including tests for "assert(...)".Barry have noted that using the "==" operator with None can be also classified as an error. But I think that in this case there may be legal uses of this, and the compiler should not complain. It is a work for third-party checkers, which can provide configuration options for enabling and disabling particular kinds of checks.
literals,字面量
https://docs.python.org/zh-cn/3.9/reference/lexical_analysis.html#literals
字面值是内置类型常量值的表示法。
特别琐碎的概念
但不光是数字(你以为的整数),还有很多字面值
>>> 3.14 is not None # 浮点数
:1: SyntaxWarning: "is not" with a literal. Did you mean "!="?True>>> 3.14j is not None # 虚数 :1: SyntaxWarning: "is not" with a literal. Did you mean "!="?True
关键词:
-
Linux 服务器大量的 log 日志,如何正确看日志快速定位错误?你必须学会!
针对大量log日志快速定位错误地方动态查看日志tail-fcatalina ou从头打开日志文件catcatalina ou可以...
来源: -
全球球精选!科创板收盘播报:科创50指数涨0.33% 半导体股延续强势表现
至收盘时,科创50指数报1065 69点,涨幅0 33%,指数振幅为1 56%。细分领域来看,半导体股延续近期强...
来源: Linux 服务器大量的 log 日志,如何正确看日志快速定位错误?你必须学会!
天天最资讯丨APS系统设计经验分享(时间推导 - 2023.03)
每日动态!一个诡异的Python小问题
全球球精选!科创板收盘播报:科创50指数涨0.33% 半导体股延续强势表现
每日消息!男子伪装外卖小哥偷餐 被店员一眼识破:破绽太多
天天微速讯:露营倒闭潮来袭?网友:准备工作繁琐 参加一次就够了
国产本田幼兽来了!本田Cross Cub 110上市:只需1.3万
【焦点热闻】集吸拖洗一体全能!追觅M13 Beta洗地机图赏
汇源生产:哪吒捏爆果汁3.5元/斤大促(商超11元)
当前简讯:遏制“舌尖上的浪费” 餐饮企业应当好“排头兵”
快资讯丨【0基础学爬虫】爬虫基础之网页解析库的使用
世界今日报丨Qt商业级无边框窗口实现源码(windows、msvc)
今日视点:TypeScript 学习笔记 — 类型推断和类型保护(十一)
1个月发了4版驱动 Intel Arc显卡自信起来了:RTX 3060性价比已不能看
当前最新:索尼A7R5更新Ver.2.00固件:四大升级
速读:人工智能大潮下:Meta高管仍坚称元宇宙才是未来
每日快报!库克到访米哈游与大伟哥合影 大赞《原神》及创作团队
全球热讯:马斯克请愿叫停GPT-5!360周鸿祎:不发展才是最大的不安全
前沿资讯!打通为民服务“最后一米”,浦东这个街道积极推进社会治理与公共服务全覆盖
今日热闻!RegEX 备忘清单_开发速查表分享
全球视讯!Python常见面试题014.请说出下面的代码返回结果是什么?
世界今热点:基础篇丨链路追踪(Tracing)其实很简单
天天播报:什么是横向扩展「Scale-out」和纵向扩展「Scale-up」?
焦点信息:易基因: m6A RNA甲基化研究的前期探索性实验思路|干货系列
【环球热闻】全球男性精子量告急:50年来减少62%!2045年人类绝育?
nba2k13怎么空接?nba2k13阵容名单
iu14D2N.tmp是什么意思?iu14D2N.tmp文件详情介绍
华硕f83cr笔记本是哪一年上市的?华硕f83cr笔记本配置
英雄联盟为什么进不去比尔吉沃特?比尔吉沃特服务器在哪个城市?
微信8.0的状态能维持多久?微信8.0更新了什么功能?
支付宝招财宝如何样?招财宝收益高吗?
IM跨平台技术学习(七):得物基于Electron开发客服IM桌面端的技术实践
世界今日讯!min 与 + 运算转换成类似于矩阵乘法的推导过程
【环球时快讯】HDFS Balancer负载均衡器
每日观察!【Visual Leak Detector】配置项 SkipCrtStartupLeaks
世界快消息!掌握这几个算法题.NET初级面试算法不发愁
观热点:《最后生还者》 印象派杰作
焦点快报!vivo X Fold2真机亮相:经典华夏红配色、“天圆地方”设计
全球今头条!女生爬完泰山发现裤子变成偏大码引热议:网友质疑几乎不可能
焦点热议:专家:中国汽车产业进入淘汰赛 将从百家变成十几家
资讯推荐:北京出台新政引导光伏发电高质量发展
天天即时看!火山引擎 DataTester 推出可视化数据集成方案
速读:全网最详细中英文ChatGPT-GPT-4示例文档-个性化角色智能对话从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/c
继《孤勇者》之后 小学生开始流行盘手串 网友:这届小朋友不好带了
苹果CEO库克造访米哈游:与《原神》创作团队交谈
【天天热闻】胜为八类网线7.5米到手23.9元:25Gbps高速传输
世界最新:微软建议Office 2016/2019用户升级:10月后将无法访问Microsoft 365
热点评!图灵波浪3.30-白银震荡上行格局不改
全球讯息:全网最详细中英文ChatGPT-GPT-4示例文档-读书书单推荐从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/cu
当前热讯:BitMap对象当前正在其他地方使用?加锁也没用?
全球今热点:履约核心引擎低代码化原理与实践
天天快资讯:Linux 修改系统时间的两种方式
快看点丨京东二面:线程池中的线程抛出了异常,该如何处理?大部分人都会答错!
世界观热点:张奔斗:阳光双赛双四强 辛纳状态很“辛辣”
今日讯!男孩向女生水杯里放吸铁石 差点被喝下:医生称严重会胃穿孔
法国法芙娜脆珠+新鲜奶油 上行斋生巧福团狂促:8枚券后不到15元
精选!罗永浩将在淘宝直播间售卖民用卫星:最低200万起步
ChatGPT也要带货?微软开始在新必应插入广告
环球微头条丨长期进食柿子山楂 胃中长出巨大“顽石” 医生巧用无糖可乐辅助尿毒症女子成功碎石
环球百事通!【网络安全软件】上海道宁与Cybereason为您提供未雨绸缪的攻击保护,终结对端点、整个企业以及网络上任何角落的网络攻击
环球速读:1.redis的基本使用
全球简讯:前端设计模式——依赖注入模式
年轻人找工作不看工资看什么?一季度全国平均招聘月薪10101元 学历越高钱越多
世界新消息丨眼科医生自己真的都不做近视手术?
世界观天下!周上险量超5000 理想L系累计交付超10万台:其他新势力难了
热门美剧推动PS5销量大涨
专家提醒:千万不要侧躺玩手机 科普标准姿势
退役军人事务部调研组来洛 常正国带队
天天观热点:Linux的3个文件时间
Cursor,程序员的 AI 代码编辑助手
厚衣服先别收!强冷空气很快就到:今年来最大范围雨雪
“基尼太美” 兰博基尼Revuelto亮相 马力超千匹 2.5秒破百
【独家焦点】Win12 UI设计曝光被苹果用户吐槽:抄袭macOS太明显
2022年房屋的主要卖点是什么
3月份国有大行二级资本债密集发行 专家称大型银行与中小银行发债规模将明显分层
邮储银行450亿元定增落地 中国移动溢价逾40%“通吃”
世界讯息:鹰眼自爆伤情
天天观速讯丨读SQL进阶教程笔记02_三值逻辑和NULL
【全球热闻】结石痛怎么缓解_尿道结石疼痛怎么缓解
汽车雷达在无人陵园内显示全是人影 网友吐槽更智能了:官方回应
观天下!1W字长文:K8S Ingress 原理和实操
简讯:mvc-mvp-mvvm架构调研及实现--分布式课程思考题--zzb
【Visual Leak Detector】配置项 SkipHeapFreeLeaks
Unity 中的存档系统(本地存档)
最新消息:IDEA2023.1破解 永久激活 最新版IDEA激活 亲测可用!
突破10GB/s!影驰首款PCIe 5.0 SSD开卖:2TB售价2499元
热门:2.1s破百!100万的新款特斯拉 快得我差点吐了
世界今亮点!苹果WWDC大会定档6月6日:iOS 17无悬念、MR头显最受期待
达墨国产PCIe 5.0 硬盘2TB 1899元 官方坦诚提醒:谁买谁冤种
当前速看:飞艇事件的背后
世界热文:搞笑动漫日和在线观看(搞笑动漫日和)
天天新资讯:Ubuntu18.04系统安装nginx
天天速递!手撕HashMap(二)
【Visual Leak Detector】配置项 TraceInternalFrames
苹果推出的美国版花呗:被严重低估了
全球聚焦:为什么洗澡时总想“尿尿”?这怀习惯可不好!
环球信息:新一代高贵“亮机卡”!RTX 4050被曝6月发布:弱得不像话
【世界报资讯】 “大号MINI”!五菱缤果正式上市:5.98万元起
国产特有 魔改RTX 3060显卡999元:AMD也做不到的性价比
天天通讯!报告:电信业采购供应链发展呈现四大趋势