首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Python学习
Python猫
创建于2021-08-01
订阅专栏
学习python
等 120 人订阅
共217篇文章
创建于2021-08-01
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
为什么说 Python 内置函数并不是万能的?
在Python猫的上一篇文章中,我们对比了两种创建列表的方法,即字面量用法 [] 与内置类型用法 list(),进而分析出它们在运行速度上的差异。 其实原因很简单:内置函数/内置类型的名称并不是关键字,它们只是解释器内置的一种便捷功能,方便开发者开箱即用而已。 内置函数的名称并…
Python 疑难问题:[] 与 list() 哪个快?为什么快?快多少呢?
这就回答了刚才的问题:创建空列表时,[] 要比 list() 快不少。 如上图所示,[] 的字节码有两条指令(BUILD_LIST 与 RETURN_VALUE),而 list() 的字节码有三条指令(LOAD_NAME、CALL_FUNCTION 与 RETURN_VALUE…
Python 为什么不支持 switch 语句?
在这篇文章里,我们会聊一聊为什么 Python 决定不支持 switch 语句。 主要是因为 switch 在其它语言中太常见了,而 Python 却不支持,这样的独特性本身就值得关注,而回答这个问题,也能更加看清 Python 在程序设计上的理念,了解 Python 在语法设…
耗时两年,我终于出了一本电子书!
2018 年国庆节前,我开通了微信公众号“Python猫”,写下了“喵星来客”系列的第一篇文章。 2020 年国庆节前,我累计创作和翻译了 130+ Python 技术文章。 时光匆匆,两年光阴很快就过去了。 在这个特殊的时间节点上,我感觉有必要把创作的内容做一下梳理,于是,也…
Python 之父为什么嫌弃 lambda 匿名函数?
Python 支持 lambda 匿名函数,其扩展的 BNF 表示法是lambda_expr ::= "lambda" [parameter_list] ":" expression ,也就是 lambda 参数序列:表达式。 也就是说,Python 中的 lambda 函数是…
详解增强算术赋值:“-=”操作是怎么实现的?
声明 | 本翻译是出于交流学习的目的,基于 CC BY-NC-SA 4.0 授权协议。为便于阅读,内容略有改动。 本文是 Python语法糖 系列文章之一。最新的源代码可以在 desugar 项目中找到(https://github.com/brettcannon/desuga…
详解 Python 的二元算术运算,为什么说减法只是语法糖?
声明 | 本翻译是出于交流学习的目的,基于 CC BY-NC-SA 4.0 授权协议。为便于阅读,内容略有改动。 大家对我解读属性访问的博客文章反应热烈,这启发了我再写一篇关于 Python 有多少语法实际上只是语法糖的文章。在本文中,我想谈谈二元算术运算。 具体来说,我想解读…
Python 中的数字到底是什么?
花下猫语:在 Python 中,不同类型的数字可以直接做算术运算,并不需要作显式的类型转换。但是,它的“隐式类型转换”可能跟其它语言不同,因为 Python 中的数字是一种特殊的对象,派生自同一个抽象基类。在上一篇文章 中,我们讨论到了 Python 数字的运算,然后我想探究“…
Python 到底是强类型语言,还是弱类型语言?
我在上一篇文章中分析了 为什么 Python 没有 void 类型 的话题,在文章发布后,有读者跟我讨论起了另一个关于类型的问题,但是,我们很快就出现了重大分歧。 我们主要的分歧就在于:Python 到底是不是强类型语言? 我认为是,而他认为不是。 他写了一篇很长的文章《谁告诉…
Python 为什么没有 void 关键字?
void 是编程语言中最常见的关键字之一,从字面上理解,它是“空的、空集、空白”的意思,最常用于 表示函数的一种返回值类型。 简单来说,void 是一种类型(type),但是没有具体的值(value)。 以 Python 的几种常见类型为例,我们可以从对比中看出规律:int 是…
Python 函数为什么会默认返回 None?
Python 有一项默认的做法,很多编程语言都没有——它的所有函数都会有一个返回值,不管你有没有写 return 语句。 可以看出,我们定义的两个函数都没有写任何的 return 语句,但是在函数调用后,都能取到一个返回值。 这 4 个例子属于两种类型:一种没有写 return…
一个在交流群里讨论过两轮的问题,答案竟然跟一个 PEP 有关
现在有一个类和一个类方法,其中类方法上有一个装饰器。 我们的问题就是要在装饰器代码中动态地获得 Test 这个类(类名+类对象)。 去年 11 月份的时候,我在微信读者群里提出了这个问题,当时引起了小范围的讨论。 stackoverflow 上的问题提得很明确:Get defi…
Python 为什么要在 18 年前引入布尔类型?且与 C、C++ 和 Java 都不同?
本 PEP 提议引入一个新的内置类型bool,它将包含两个常量False和True。这个 bool 类型是 int 类型的直接子类型(在 C 中),并且在除了 repr() 和 str() 之外的大多数方面,它的值False和True 都将表现得像是 0 和 1(例如,Fals…
Python 为什么能支持任意的真值判断?
Python 在涉及真值判断(Truth Value Testing)时,语法很简便。 比如,在判断某个对象是否不为 None 时,或者判断容器对象是否不为空时,并不需要显示地写出判断条件,只需要在 if 或 while 关键字后面直接写上该对象即可。 如果需要作出相反的判断,…
Python 为什么会有个奇怪的“...”对象?
在写上一篇《Python 为什么要有 pass 语句?》时,我想到一种特别的写法,很多人会把它当成 pass 语句的替代。在文章发布后,果然有三条留言提及了它。 它是中文标点符号中的半个省略号,也即由英文的 3 个点组成。如果你是第一次看到,很可能会觉得奇怪:这玩意是怎么回事?…
Python 为什么要有 pass 语句?
关于 Python 中的pass语句,它似乎很简单(只有 4 个字母),即使是没有任何编程经验的初学者也能很快地掌握它的用法。 简单而言,pass 是一种空操作(null operation),解释器执行到它的时候,除了检查语法是否合法,什么也不做就直接跳过。 它跟 retur…
当我发现国际友人翻译了我的文章之后……
我马上就点开链接去核实,然后发现那篇文章是全文翻译了我之前写的文章,而且该作者还翻译了另外的两篇。 如果读者了解我,应该知道我也翻译过不少文章,比如有 PEP系列 、Guido的解析器系列 、Flask 作者 Armin Ronacher 的文章、Anthony Shaw 和 …
Python 为什么用 # 号作注释符?
关于编程语言中的注释,其重要性基本上已为大家所共识。 然而关于注释的规范,这个话题就像我们之前聊过的缩进、终止符和命名方式一样,众口难调。 注释符通常可分为两种,即行注释与块注释(inline/block),它们在不同的编程语言中的符号可谓让人眼花缭乱。 这个问题恐怕没办法从解…
Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?
从接触 Python 时起,我就觉得 Python 的元组解包(unpacking)挺有意思,非常简洁好用。 在此例中,赋值操作符“=”号的右侧的两个数字会被存入到一个元组中,即变成 (1,2),然后再被解包,依次赋值给“=”号左侧的两个变量。 一般而言,交换两个变量的操作需要…
一篇文章掌握 Python 内置 zip() 的全部内容
zip() 是 Python 中最好用的内置类型之一,它可以接收多个可迭代对象参数,再返回一个迭代器,可以把不同可迭代对象的元素组合起来。 我之前写迭代器系列的时候,在《Python进阶:设计模式之迭代器模式》中简单地介绍过它,前几天翻译了 Python 3.10 采纳的 PE…
下一页