谈谈Python那些不为人知的冷知识(一)
本文转载自公众号Python编程时光(ID:Python-Time)
小明在日常Code中遇到一些好玩,冷门的事情,通常都会记录下来。现在已经积攒了一些了,最近打算整理一波,发出来给大家补补。一篇只分享五个,有时间了就整理。
省略号也是对象
...
这是省略号,在Python中,一切皆对象。它也不例外。在 Python 中,它叫做 Ellipsis 。在 Python 3 中你可以直接写…来得到这玩意。
>>> ...
Ellipsis
>>> type(...)
<class 'ellipsis'>
而在 2 中没有…这个语法,只能直接写Ellipsis来获取。
>>> Ellipsis
Ellipsis
>>> type(Ellipsis)
<type 'ellipsis'>
>>>
它转为布尔值时为真
>>> bool(...)
True
最后,这东西是一个单例。
>>> id(...)
4362672336
>>> id(...)
4362672336
这东西有啥用呢?据说它是Numpy的语法糖,不玩 Numpy 的人,可以说是没啥用的。
在网上只看到这个 用 ...
代替 pass ,稍微有点用,但又不是必须使用的。
try:
1/0
except ZeroDivisionError:
...
类的首字母不一定是大写
在正常情况下,我们所编写的所见到的代码,好像都默许了类名首字母大写,而实例用小写的这一准则。但这并不是强制性的,即使你反过来的也没有关系。
但有一些内置的类,首字母都是小写,而实例都是大写。
比如 bool 是类名,而 True,False 是其实例;比如 ellipsis 是类名,Ellipsis是实例;还有 int,string,float,list,tuple,dict 等一系列数据类型都是类名,它们都是小写。
增量赋值的性能更好
诸如 += 和 *= 这些运算符,叫做 增量赋值运算符。这里使用用 += 举例,以下两种写法,在效果上是等价的。
# 第一种
a = 1 ; a += 1
# 第二种
a = 1; a = a + 1
+=
其背后使用的魔法方法是 __iadd__,如果没有实现这个方法则会退而求其次,使用 __add__ 。
这两种写法有什么区别呢?
用列表举例 a += b,使用 __add__ 的话就像是使用了a.extend(b),如果使用 __add__ 的话,则是 a = a+b,前者是直接在原列表上进行扩展,而后者是先从原列表中取出值,在一个新的列表中进行扩展,然后再将新的列表对象返回给变量,显然后者的消耗要大些。
所以在能使用增量赋值的时候尽量使用它。
and 和or 的取值顺序
and 和 or 是我们再熟悉不过的两个逻辑运算符。而我们通常只用它来做判断,很少用它来取值。
如果一个or表达式中所有值都为真,Python会选择第一个值,而and表达式则会选择第二个。
>>>(2 or 3) * (5 and 7)
14 # 2*7
如何修改解释器提示符
这个当做今天的一个小彩蛋吧。应该算是比较冷门的,估计知道的人很少了吧。
正常情况下,我们在 终端下 执行Python 命令是这样的。
>>> for i in range(2):
... print (i)
...
0
1
你是否想过 >>>
和 ...
这两个提示符也是可以修改的呢?
>>> import sys
>>> sys.ps1
'>>> '
>>> sys.ps2
'... '
>>>
>>> sys.ps2 = '---------------- '
>>> sys.ps1 = 'Python编程时光>>>'
Python编程时光>>>for i in range(2):
---------------- print (i)
----------------
0
1
(本文为AI科技大本营转载文章,转载请联系原作者)
◆
实习生招募
◆
推荐阅读:
详解爱奇艺ZoomAI视频增强技术的应用 | 公开课笔记
DOTA2人机决战:2:0!OpenAI击败世界冠军OG
Python的10个“秘籍”,这些技术专家全都告诉你了
从头构建恶性肿瘤检测网络 | 100行Python代码理解深度学习关键概念
马云再谈 996:真正的 996 与被剥削无关
漫画:图的 “最短路径” 问题 | 技术头条
从 0 到管理 200 人,这位程序员是如何做到的? | 程序员有话说
4000万假币流入波场, 发生在凌晨的BTT假币攻击事件始末及细节披露
程序员为什么都爱穿冲锋衣?(最全总结)
❤点击“阅读原文”,查看更多精彩文章。
相关文章:

【GStreamer】gstreamer工具详解之:ges-launch-1.0
三、ges-launch-1.0 1、简介 ges-launch-1.0:视频裁剪编辑,GStreamer编辑服务原型工具 详见官网:https://gstreamer.freedesktop.org/documentation/tools/ges-launch.html?gi-language=c#mandatory-arguments1 ges-launch-1.0 创建多媒体时间线并将其回放,或将其呈现为…

三大软件公司争霸赛区块链
导语:\\区块链技术发展到今天,区块链的扩容、吞吐量、运维弹性(Operational Resilience)、安全性、企业支持和Token管理等挑战,已成为区块链进一步发展绕不开的技术问题。\\突破这些现实技术挑战,不仅构能建…

【系列索引】结合项目实例 回顾传统设计模式 打造属于自己的模式类系列
网上设计模式的文章很多 虫子就不再和大家扯一些没有营养的理论 开此系列博文 一方面因为自己颓废了大半年 趁此机会回顾一下 另一方面希望能够帮助新人走出设计模式的误区, 如何做好设计模式 1.在发掘新的模式之前,必须熟悉理解现有的模式。许多模式看起来像是全新…

【GStreamer】gstreamer工具详解之:gst-discoverer-1.0
四、gst-discoverer-1.0 1、简介 gst-discoverer-1.0用于显示文件元数据和流信息,它可以运行在单独的文件或整个目录(递归到子目录中)。 2、命令格式: gst-discoverer-1.0 FILE|DIRECTORY|URI [FILE2|DIRECTORY2|URI2]选项详解 帮助选项 -h, --help Show help options…

一道简约而不简单的算法题——数据流的中位数 | 附动画解析
作者 | 程序员小吴转载自微信公众号(ID:CXYxiaowu)题目来源于 LeetCode 上第 295 号问题:数据流的中位数。难度级别为 Hard,目前通过率为 33.5% 。题目描述中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中…

HBase安装与命令行操作
2019独角兽企业重金招聘Python工程师标准>>> HBase简介 基于Hadoop的NoSql数据库,适合存储半结构化、非结构化的稀疏数据,提供增删改查能力。因为其底层是hdfs,所以具有存储海量数据,高容错,高可用等特点&a…

zip/unzip 命令
zip 命令 功能说明:压缩文件。语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]补充说明…

《App架构师实践指南》:移动开发的进阶指南
文章主要内容:什么是 app 架构师这本书主要内容读完感受什么是 App 架构师成为“架构师”是许多程序员的梦想,当然也包括我,在工作的几年里,我见过很多架构师,他们在设计某个大型系统时具备很大的话语权,可…

FoveaBox:目标检测新纪元,无Anchor时代来临 | 技术头条
作者 | CV君转载自我爱计算机视觉(ID:aicvml)目标检测的任务是“分类”并从图像中“定位”出物体,但长久以来,该领域的工作大多是这样:生成可能包含目标的区域,然后在该区域提取特征并分类。显然࿰…

【Ubuntu】安装中文输入法、终端不支持中文的解决方法
一、中文输入法安装 1、安装汉语语言包 sudo apt install fcitx sudo apt install language-pack-zh-hans2、安装google拼音输入法 sudo apt install fcitx-googlepinyin安装完毕后,重启或者退出登陆 3、安装sun-pinyin输入法 sudo apt install fcitx-sunpinyi…

CCNA 第一章 网际互联
第一章 网际互联 路由器知识点: 1、默认时,路由器不转发任何广播包和组播包。 2、路由器使用逻辑地址,逻辑地址在网络层的包头中,用来决定将包转发到的下一跳路由器。 3、路由器可以使用管理员创建的访问表来控制被允许进入或流出…

【Cmake】执行cmake命令时报错:No XSLT processor found
一、问题描述 在ubuntu中,在生成Doc(文档)中,执行cmake命令时报错:No XSLT processor found 二、原因查找 google该错误信息,原因是确实ubuntu中没有安装 xsltproc 三、解决方法 安装 xsltproc sudo apt install xsltproc四…

一张“黑洞”需要拍两年?有了它或许就不会让大家等那么久了
只闻其名,不见其形,从小听到大的”黑洞“,终于让我们在有生之年见到了它的真容,只能说幽暗的宇宙美丽也调皮,长久以来人类关于黑洞的探索,在这一刻终于得到影像印证。相信很多人心中都有一个疑惑࿰…

如何在一场面试中展现你对Python的coding能力?| 技术头条
点击上方↑↑↑蓝字关注我们~作者 | wLsq 来源 | Python数据科学(ID:PyDataScience)如果你已经通过了招聘人员的电话面试,那么下面正是该展现你代码能力的时候了。无论是练习,作业,还是现场白板面试,这都是…

Django web : CSRF verification failed. Request aborted.
错误标题:CSRF verification failed. Request aborted. 错误描述: HelpReason given for failure:CSRF cookie not set.In general, this can occur when there is a genuine Cross Site Request Forgery, or when Djangos CSRF mechanism has not been …

分享一个PC端六格密码输入框写法
如图。我们一般做商城类的项目不免会用到支付密码输入框,我研究了下并决定发上来,也当作是自己成长路上的一点小小的记录。本次介绍的是基于vue的项目 html: <template><div classam_payPwd :id"ids_${id}"><input …

【数据库】sqlite中PRAGMA命令说明
关于sqlite中PRAGMA的说明网上已经有很多了,这里不再复制粘贴,只把内容最全的网址连接记录一下: 官网说明(英文):https://sqlite.org/pragma.html 中文翻译,参见博客:https://www.i…

思科交换机各类型中字母的意思?
24TC-L中各字母的意思分别指? 24TT-L中第二个T的意思? 2960和2960G的区别?基中G是什麽意思? F0/1和G0/1区别? 24代表是24个网络接口 第一个T表示TX,也就是所谓RJ-45的类型(指这个24个接口都是RJ-45,若是P的话&#…

医生还未失业,IBM Watson已跌入深渊 | 极客头条
点击上方↑↑↑蓝字关注我们~作者 | Eliza Strickland译者 | Major编辑 | 琥珀出品 | AI 科技大本营(公众号ID:rgznai100)导语:2011 年,Jeopardy! 挑战赛的成功,让外界看到 IBM 的人工智能给医学带来的革命…

【Qt】Qt容器总结
目录 一、容器类1、顺序容器2、关联容器二、Qt容器特点三、迭代器1、Jave样式的迭代器(效率略低)2、SLT样式的迭代器注意: 由于Qt的容器是写时复制的,因此非const访问器从本质上讲更加昂贵, 因为它们必须首先检查是否需要复制基础数据(并在必要时进行复制)。 因此,在Qt…

Java5线程并发库之保障变量的原子性操作
为什么80%的码农都做不了架构师?>>> java.util.concurrent.atomic 首先我们看java.util.concurrent.atomic包,它主要是提供一些为各种数据类型变量提供原子性操作的类。 AtomicInteger 比如我们来看AtomicInteger类,大家在写程序…

EIGRP OSFP 利用NULL0接口防止路由环路 Loopback Null0接口揭秘
在EIGRP中,只要发生总结就会在路由表中自动产生一条指向NULL0的路由条目,这条路由的直接意思是:匹配这条路由的数据包会被路由器丢掉。它的目的是为了避免在某些情况下产生路由环路。 以第三四学期的中文书P86中的图4-15为例做个说明…

【C++】C++11 STL算法(一):非修改序列操作(Non-modifying sequence operations)
目录一、all_of、any_of、none_of:1、官方说明2、谓词3、STL算法对谓词的说明4、谓词的五种模式5、all_of (C 11)6、any_of (C 11)7、none_of(C 11)8、官方demo:二、for_each1、原型…

Python openpyxl 之 Excel 文档简单操作
背景:生活中常常因日常工作,在记录统计方面需频繁处理较多 Excel 表格,这部分工作虽可由人工完成,但这样会显得有些繁琐且可能存在偏差,遂闲时查阅了是否有相关基于python处理Excel表格的学习文档,后获知这…

售价910元!周志华等人英文新书《演化学习》出炉!
点击上方↑↑↑蓝字关注我们~整理 | 琥珀出品 | AI 科技大本营(公众号ID:rgznai100)关于人工智能教育,从学生培养方案,到课程设置、教材,甚至是授课老师,全国各大高校正探索一条新道路。先是从去…

linux 查看 文档 不显示注释 命令
原文:http://www.weiruoyu.cn/?p661 最近发现一个很好的命令,就是linux 查看 文档 不显示注释 的命令[rootlocalhost ha.d]# cat ha.cf |grep -v ^# logfile /var/log/ha-log 转载于:https://blog.51cto.com/weiruoyu/705840

【C++】C++11 STL算法(二):修改序列的操作(Modifying sequence operations)
目录一、copy、copy_if1、原型:2、说明:3、官方demo二、copy_n1、原型:2、说明:3、官方demo三、copy_backward1、原型:1、说明:1、官方demo四、move1、原型:2、说明:3、官方demo五、…

ECharts测量图,功率图
/*** 测量图,功率图1,仪表盘*/ mainpage.prototype.initEcharsGLT1 function(oneJZ){ //if(myChartGLT1 null && myChartGLT1 ! "" && myChartGLT1 ! undefined) {myChartGLT1.dispose(); //每次加载之前清除之前的echar…
北京智源人工智能研究院启动“智源学者计划”,与旷视发布首个智源联合实验室
4月16日,北京智源人工智能研究院与中国人工智能领军企业旷视召开“智源学者计划暨联合实验室发布会”。北京市科委副主任张光连,海淀区委常委、副区长李俊杰,以及来自科技部、北京市科委、海淀区人民政府、朝阳区人民政府、中关村管委会&…

配置隧道模式的IPSec.×××
一、拓扑及IP配置 二、配置清单 R1#show run Building configuration... Current configuration : 1449 bytes ! upgrade fpd auto version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R1 …