首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Python学习
Python猫
创建于2021-08-01
订阅专栏
学习python
等 121 人订阅
共213篇文章
创建于2021-08-01
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
详解增强算术赋值:“-=”操作是怎么实现的?
声明 | 本翻译是出于交流学习的目的,基于 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…
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性
本 PEP 建议给内置的 zip 添加一个可选的 strict 布尔关键字参数。当启用时,如果其中一个参数先被用尽了,则会引发 ValueError 。 从作者的个人经验和一份对标准库的调查 来看,明显有很多(如果不是绝大多数)zip 用例要求可迭代对象必须是等长的。有时候,周…
Python 3.10 版本采纳了首个 PEP,中文翻译即将推出
之前有读者问下个版本是不是 4.0,或者误以为下个版本是 4.0,还担心会再次出现 2 升 3 这种大版本不兼容的情况。其实官方早就有消息出来了,下个版本只会是 3.10,是个小版本的特性升级。 不仅如此,在 6 月中旬,3.10 版本的第一个正式的 PEP 也被采纳了。标题:…
Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符?
在 C/C++/Java 等等语言中,整型变量的自增或自减操作是标配,它们又可分为前缀操作(++i 和 --i)与后缀操作(i++ 和 i--),彼此存在着一些细微差别,各有不同的用途。 这些语言的使用者在接触 Python 时,可能会疑惑为什么它不提供 ++ 或 -- 的操作…
Python 为什么推荐蛇形命名法?
关于变量的命名,这又是一个容易引发程序员论战的话题。如何命名才能更具有可读性、易写性与明义性呢?众说纷纭。 首先一点,对于单个字符或者单词 (例如:a、A、PYTHON、Cat),当它们被用作变量名时,大致有全小写、全大写和首字母大写这几种情况。编程语言中出现这些情况时,它们基…
Python 3.9 beta2 版本发布了,看看这 7 个新的 PEP 都是什么?
随着 Python 3.9.0b1 的发布,即开发周期中计划的四个 beta 版本的首个,Python 3.9 的功能已经是完善了。在 10 月发布最终版本之前,还会有许多测试和稳定性方面的工作要做。 该发布说明中列出了被 3.9 接受的 7 个 Python 增强提案(PEP…
下一页