
Python
文章平均质量分 90
魔芋红茶
这个作者很懒,什么都没留下…
展开
-
PEP 635 – Structural Pattern Matching: Motivation and Rationale
PEP 635 – Structural Pattern Matching: Motivation and RationalePEP 635 – 结构化模式匹配:动机和原理原文地址:https://www.python.org/dev/peps/pep-0635/PEP:635Title:Structural Pattern Matching: Motivation and RationaleAuthor:Tobias Kohn ContentsAbstract,翻译 2021-10-25 20:05:27 · 361 阅读 · 0 评论 -
Python 3.10 尝鲜
Python 3.10 尝鲜图源:giaiphapso.comPython 3.10 版本已经在本月初(10.4)正式发布,其中最让人振奋的新特性是模式匹配,简单的说就是Python终于引入了类似于switch...case的语句,当然实际功能和效果要比那个强大的多。下面就是我迟来的Python 3.10尝鲜报告。下载&&安装3.10版的官方下载地址是这里:选择需要的版本就好,我下载的是Windows installer (64-bit)。安装包推荐自定义安装,这里我选择原创 2021-10-24 18:02:54 · 270 阅读 · 0 评论 -
PEP 636 – Structural Pattern Matching: Tutorial
PEP 636 – Structural Pattern Matching: TutorialPEP 636 – 结构化模式匹配:教程PEP:636Title:Structural Pattern Matching: TutorialAuthor:Daniel F Moisset ContentsAbstract,摘要Tutorial,教程Matching sequences,匹配序列Matching multiple patterns,匹配多个模式Match翻译 2021-10-24 15:59:00 · 536 阅读 · 0 评论 -
PEP 634 – Structural Pattern Matching: Specification
PEP 634 – Structural Pattern Matching: SpecificationPEP 634 – 结构化模式匹配:规范PEP:634Title:Structural Pattern Matching: SpecificationAuthor:Brandt Bucher ContentsAbstract,概述Syntax and Semantics,语法和语义Overview and Terminology,概述和术语The Match翻译 2021-10-23 16:57:01 · 353 阅读 · 0 评论 -
PEP 205 – Weak References
PEP 205 – Weak ReferencesPEP 205 – 弱引用这篇PEP偏向于单纯介绍弱引用的实现以及实现中需要解决的问题,关于弱引用的应用,可以参考Python官方手册weakref — 弱引用,译者注。PEP:205Title:Weak ReferencesAuthor:Fred L. Drake, Jr. ContentsMotivation,动机Caches (weak dictionaries),缓存(弱字典)Circular翻译 2021-10-11 20:28:14 · 387 阅读 · 0 评论 -
Win10+VSCode+WSL开发Python程序
Win10+VSCode+WSL开发Python程序图源:ubuntu.com基础环境:如标题所言,开发环境需要Win10、VSCode、WSL:如果没有Win10,那可以洗洗睡了。如果没有VSCode,可以阅读推荐一个IDE——VSCode。如果没有WSL,可以阅读Windows Sub Linux 体验。此外需要说明的是,我之前安装的WSL是Debian,优点是占的空间小,但我发现缺少很多工具,而且软件源中的软件也很少,安装Python不是很方便,所以我卸载后重新安装了Ubuntu,原创 2021-09-29 16:38:00 · 4477 阅读 · 0 评论 -
Python+sqlite
Python+sqlite如题,最近撸了一个小工具file-remark。考虑到数据规模和性能的关系使用json文件的方式存储显得不再合适,于是搜索了一下,尝试使用sqlite数据库来实现。值得欣喜的是Python是自带sqlite3库的,这回省去一些使用第三方库的麻烦。废话不多说,直接上代码:import sqlite3import osfrom sqlite3.dbapi2 import Connection, Cursorfrom typing import Anyfrom file原创 2021-09-28 14:42:30 · 376 阅读 · 0 评论 -
PEP 3105 – Make print a function
PEP 3105 – Make print a functionPEP 3105 – 将print设置为一个函数原文地址:https://www.python.org/dev/peps/pep-3105/PEP:3105Title:Make print a functionAuthor:Georg Brandl ContentsAbstract,概述Rationale,目的Specification,定义Backwards Compatibility,向后兼翻译 2021-09-24 17:53:26 · 162 阅读 · 0 评论 -
PEP 282 – A Logging System
PEP 282 – A Logging SystemPEP 282 – 一个日志系统PEP:282Title:A Logging SystemAuthor:vinay_sajip at red-dove.com (Vinay Sajip), trentm at activestate.com (Trent Mick)Status:FinalType:Standards TrackCreated:04-Feb-2002Python-Ver翻译 2021-08-06 13:43:42 · 234 阅读 · 0 评论 -
PEP 308 – Conditional Expressions
PEP 308 – Conditional ExpressionsPEP 308 – 条件表达式PEP:308Title:Conditional ExpressionsAuthor:Guido van Rossum, Raymond HettingerStatus:FinalType:Standards TrackCreated:07-Feb-2003Post-History:7-Feb-2003, 11-Feb-2003Co翻译 2021-08-04 14:17:35 · 308 阅读 · 0 评论 -
PEP 572 – Assignment Expressions
PEP 572 – Assignment ExpressionsPEP 572 – 赋值表达式PEP:572Title:Assignment ExpressionsAuthor:Chris Angelico ContentsAbstract,概述Rationale,目的The importance of real code,真实代码的重要性Syntax and semantics,语法和语义Exceptional cases,例外的情况Scop翻译 2021-08-03 17:03:27 · 579 阅读 · 0 评论 -
PEP 614 – Relaxing Grammar Restrictions On Decorators
PEP 614 – Relaxing Grammar Restrictions On DecoratorsPEP 614 – 放宽对装饰器的语法限制PEP:614Title:Relaxing Grammar Restrictions On DecoratorsAuthor:Brandt Bucher ContentsAbstract,概述Motivation,动机Rationale,理论依据Allowing Any Expression,允许任意的表达式Wha翻译 2021-08-01 19:51:28 · 191 阅读 · 0 评论 -
PEP 616 – String methods to remove prefixes and suffixes
PEP 616 – String methods to remove prefixes and suffixes移除前缀和后缀的字符串方法PEP:616Title:String methods to remove prefixes and suffixesAuthor:Dennis Sweeney <sweeney.dennis650 at gmail.com>Sponsor:Eric V. Smith ContentsAbstract,概述翻译 2021-08-01 19:49:15 · 211 阅读 · 0 评论 -
设计模式 with Python 16:其它模式(下)
设计模式 with Python 16:其它模式(下)解释器模式我们前边介绍的大部分设计模式都是可以广泛应用于各种领域的,但是实际上也有许多设计模式是局限于一些专门领域的,比如解释器模式。解释器模式(Interpreter Pattern)的用途相当专一:构建语言解释器。关于编译原理的内容我早还给老师了,也不可能为了学习这个模式专门回头去看,所以这里简单地描述一下《Head First 设计模式》中介绍地内容就OK了,如果有兴趣地童鞋可以自行查找相关资料深入学习。我们知道要发明一种新的编程语言,最原创 2021-07-21 16:50:31 · 132 阅读 · 2 评论 -
设计模式 with Python 15:其它模式(上)
设计模式 with Python 15:其它模式(上)《Head First 设计模式》在附录中介绍了剩余的一些设计模式,在这里予以介绍和总结。桥接模式为了说明桥接模式,假设我们需要给不同品牌不同型号的电视机设计一款通用的遥控器,最简单最容易想到的设计应该是这样的:我们通过一致性的接口RemoteControl来抽象了一个通用的遥控器“外观”,只要让具体的电视实现这个接口就行了。但这样的设计在面临某些问题时缺乏可扩展性,比如如果我们需要开发出不同用户界面的遥控器,有的是目前的四案件,但有的要有数原创 2021-07-20 20:14:02 · 149 阅读 · 4 评论 -
Python 图片压缩
Python 图片压缩我做了一个处理Markdown图片的小工具markdown-img,在之前给这个工具添加了主流图床支持后功能基本完备了。昨天写了一篇影评的博客扎导版正义联盟观影吐槽,图片都是从电影中截取的,每张都是1Mb以上,颇占云存储空间,所以决定加上图片压缩功能。bing了一番以后,决定使用Pillow库实现压缩功能,虽然使用 python 压缩 png 图片,高达 80% 压缩率,肉眼无差异(一):为什么不用 pillow库这篇文章说了为什么Pillow库用于压缩的缺陷,但该作者给出的另一个原创 2021-07-14 12:55:59 · 2154 阅读 · 0 评论 -
设计模式 with Python 12:复合模式(上)
设计模式 with Python 12:复合模式(上)时隔多年,对《Head First 设计模式》一书的重新阅读和学习已接近尾声,这一章是关于如何将之前介绍的设计模式进行组合使用的,可以当做一种回顾与复习。所谓的复合模式,就是对多种基本的设计模式进行组合使用,以解决某种会重复出现的一般性问题。从上面的定义我们可以看到,复合模式并不是简单地对已有设计模式的组合,更重要的是要能解决某种一般性且会重复出现的问题,因为那样才能称之为“模式”。要知道我们前面介绍的所有设计模式,都是在解决某些特定问题时候被总结原创 2021-07-11 16:15:05 · 265 阅读 · 4 评论 -
设计模式 with Python 11:代理模式
设计模式 with Python 11:代理模式对于现代人来说,代理模式非常好理解,毕竟天朝网民不知道网络代理的估计是少数,事实上《Head First 设计模式》中这一章节的大部分内容都在介绍一些代理模式的应用和变种,代理模式本身的描述篇幅相对不多。这里我会遵循原书的结构,并且因为原书介绍的相关代理模式应用都是Java语言直接相关的例子,并不能用Python示例代替,所以这里也全部采用原书的Java示例进行说明。就像前面所说的,代理模式的概念并不复杂,所以一开始我就阐述一下代理模式的概念。代理模式原创 2021-07-10 17:19:30 · 193 阅读 · 6 评论 -
设计模式 with Python 10:状态模式
设计模式 with Python 10:状态模式如果你接触过UML的状态图,应该会对状态图或者状态机有所了解,我们今天讨论的状态模式就是这种设计的落地方案。和之前的讲解一样,我们从一个具体案例“饮料售卖机”开始进行讨论。饮料售卖机我们这里指的饮料售卖机就是街边常见的那种自动售货机,大概长这样:老实的售卖机仅支持投币的方式,但新的机型支持网络支付,简单起见我们开发这这款仅支持投币,且只售卖一种饮料,且一块钱一瓶。这种简化会给我们少很多麻烦,毕竟我们不是真的要做一个饮料设备制造商????显然,饮料原创 2021-07-08 16:19:12 · 317 阅读 · 4 评论 -
设计模式 with Python 9:迭代器模式
设计模式 with Python 9:迭代器模式我们在初学编程语言的时候,除了在诸如变量、控制流程、面向对象这些编程基础内容上会话费大量精力以外,编程语言的内建集合(Collection)或者说内建容器,也同样是重中之重。无论是常用的数组、链表、映射或者是不常用的队列、堆栈等,都需要我们话费大量时间去学习,因为你工作后会发现编写程序的工作中有很大一部分时间是在与这些集合组件打交道。而我们今天要讨论的迭代器模式,就是为了对于不同内部实现的集合提供一种统一的迭代方式,从而对于客户端来说屏蔽不需要了解的内部实原创 2021-07-06 17:06:52 · 170 阅读 · 2 评论 -
设计模式 with Python 8:模版方法模式
设计模式 with Python 8:模版方法模式这可能是会在日常工作中最最常用到的设计模式,没有之一。以我过往的工作经验,无论是PHP的web框架程序,抑或是安卓本身的框架代码,都大量使用了模版方法模式,所以无论是从更容易的理解框架代码,还是让你使用类似的方式编写重用性更高的代码角度上说,掌握这个模式都是相当重要的。Let’s go.茶与咖啡假设我们要开一家奶茶店,需要对调制饮品进行规范化和程序化管理,首先我们自然需要观察现有的奶茶和咖啡冲泡流程。class Tea: def prep原创 2021-07-03 16:21:38 · 118 阅读 · 0 评论 -
设计模式 with Python 7:适配器模式
设计模式 with Python 7:适配器模式在本系列的前几篇文章中我提到过,设计模式事实上是编程领域的前辈为了解决某一类问题总结出来的通用解决方案,而编程这项工作其实本身也是为了用计算机语言来描述和解决某些现实问题,所以设计模式面对的某一类问题及相应解决方案其实也可以在现实中找到对应的实体。就像我们这篇文章要说的适配器模式,适配器在现实中其实并不少见。从中学物理会提到的电源适配器(实质上是变压器,将220V交流电转换为直流电)到“水货”电子产品必备的适配插头(一般叫旅行用万能转换插头)。万能转换插原创 2021-07-01 13:23:50 · 219 阅读 · 2 评论 -
设计模式 with Python 6:命令模式
设计模式 with Python 6:命令模式命令模式命令模式是一种将命令的调用方和接收(实现)方解耦的设计模式。如果不明白这句话的意思,不用担心,看完这篇文章就能理解了。智能家居APP假设我们需要开发一款智能家居客户端,我们需要接入不同厂家不同标准的只能家居产品,虽然这些产品都提供了SDK,但具体的SDK调用方式并不相同,比如:用过小米台灯的应该知道,这款台灯有多个级别的亮度可以调节,而普通的台灯可能只能设置开和关,现在我们的APP需要同时接入这两款台灯,假设我们的控制面板上将接入的智能家居原创 2021-06-29 14:12:44 · 366 阅读 · 0 评论 -
设计模式 with Python 5:单例模式
设计模式 with Python 5:单例模式单例模式是一个相对简单的模式,但极为重要。在我过往的工作经验中,这个模式相当实用,换言之,你可能会在项目中频繁看到,或者使用这个模式,但就像介绍前几个模式时候说的那样,我们需要保持清醒,不能为了使用模式而使用,而是要谨慎评估是否应该使用。当然这并不容易,而且往往比实现具体的设计模式更难。好了,闲话少说,我们直接来看单例模式。单例模式所谓的单例模式就是为了确保只生成一个类实例的而生的模式。这在使用访问修饰符的编程语言中很简单,只需要合适地使用访问修饰符原创 2021-06-26 16:29:02 · 182 阅读 · 0 评论 -
M3U-Helper 用户指南
M3U-Helper 用户指南项目地址pypi:https://pypi.org/project/m3u-helper-icexmoon/Github:https://github.com/icexmoon/m3u-helper用途本应用主要用于帮助对m3u或m3u8文件进行相关处理,目前包括:检测链接有效性、排序、分组等。注意事项对电视频道有效性的验证是通过调用requests模块的get请求实现的,所有在0.1秒内连接,并且http状态不是200的url被认为是有效的电视频道,否则视为原创 2021-06-23 15:03:36 · 1850 阅读 · 0 评论 -
PEP 3119 – Introducing Abstract Base Classes
PEP 3119 – Introducing Abstract Base Classes介绍抽象基类原文地址:https://www.python.org/dev/peps/pep-3119/PEP:3119Title:Introducing Abstract Base ClassesAuthor:Guido van Rossum ContentsAbstractAcknowledgementsRationaleSpecificationO翻译 2021-06-21 17:05:28 · 394 阅读 · 0 评论 -
PEP 584 – Add Union Operators To dict
PEP 584 – Add Union Operators To dictPEP 584 – 给dict添加合并操作符原文地址:https://www.python.org/dev/peps/pep-0584/PEP:584Title:Add Union Operators To dictAuthor:Steven D’Aprano ContentsAbstract,摘要Motivation,动机dict.update{**d1, **d2}co翻译 2021-06-20 17:10:05 · 149 阅读 · 0 评论 -
设计模式 with Python 4:工厂模式
设计模式 with Python 4:工厂模式工厂模式实质上包含两种不同的设计模式:工厂方法和抽象工厂。但他们本质上都是对创建对象进行封装,从而实现某种程度上的解耦的设计模式,所以放在一起进行介绍。和《Head First 设计模式》不同,这里采用汉堡店的例子进行说明,因为我没吃过几次披萨,对披萨的种类知之甚少,所以就不用披萨店作为例子,但本质上两者除了名称没有根本上的区别。汉堡店假设我们要开一家汉堡店,并提供多种汉堡可供顾客点餐,最初的设计可能是这样的:HamburgStore是我们的汉堡店,原创 2021-06-20 11:40:29 · 225 阅读 · 3 评论 -
PEP 435 – Adding an Enum type to the Python standard library
PEP 435 – Adding an Enum type to the Python standard libraryPEP 435 – 在Python标准库中添加一个枚举类型原文地址:https://www.python.org/dev/peps/pep-0435/PEP:435Title:Adding an Enum type to the Python standard libraryAuthor:Barry Warsaw ContentsAbstract翻译 2021-06-16 19:36:31 · 214 阅读 · 0 评论 -
设计模式 with Python3:装饰器模式
设计模式 with Python3:装饰器模式在撰写Python学习笔记系列文章的时候,函数装饰器和类装饰器提到过很多次,这也是Python编程中比较难理解和进阶的内容。当时我也顺便提到其本质是设计模式中的装饰器模式,那么今天我们就看一下经典设计模式中的装饰器模式到底是怎样的。关闭开放原则随着设计模式的学习深入,你就会发现设计模式的本质其实上是将复杂问题中的不可变部分和可变部分进行区分和封装,进而达到一种对不可变部分进行充分复用,对可变部分进行灵活扩展的程度。当然,这在实际解决问题的时候你就会发现是原创 2021-06-15 14:54:41 · 301 阅读 · 2 评论 -
设计模式 with Python2:观察者模式
设计模式 with Python2:观察者模式虽然这个系列上一篇已经是在一个多月之前了:设计模式 with Python1:策略模式,但经过系统学习完《Fluent Python》,对Python这个语言的特性有了更深一层的认识,而且对于设计模式也是,就像《Fluent Python》的作者说的那样,设计模式虽然是一种编程语言无关的通用思想,但是具体到某种语言的实现本身,还是会无可避免地因为语言特性而变得天差地别(关于这点,在Python学习笔记23:Python设计模式中有详细说明。)。所以,在接下来原创 2021-06-13 21:30:51 · 184 阅读 · 6 评论 -
PEP 526 – Syntax for Variable Annotations
PEP 526 – Syntax for Variable AnnotationsPEP 526 – 变量注解语法PEP:526Title:Syntax for Variable AnnotationsAuthor:Ryan Gonzalez ContentsStatus,状态Notice for Reviewers,审阅人的注意事项Abstract,摘要Rationale,缘由Non-goals,非目标Specification,规范Glo翻译 2021-06-12 18:32:08 · 254 阅读 · 0 评论 -
PEP 484 – Type Hints
PEP 484 – Type HintsPEP 484 – 类型提示原文地址:https://www.python.org/dev/peps/pep-0484/PEP:484Title:Type HintsAuthor:Guido van Rossum ContentsAbstract,摘要Rationale and Goals,理由和目标Non-goals,非目标The meaning of annotations,注释的意义Type De翻译 2021-06-12 13:02:14 · 1357 阅读 · 0 评论 -
PEP中文翻译项目
PEP-CNPEP中文翻译项目目的最近学习Python,翻译了几篇PEP,遂突发奇想有没有PEP的系统中文翻译项目,翻了一下Github,有一个现成的项目PEP中文翻译计划,但一来这个项目已经长时间没更新了,二来这个项目有以下缺陷:没有版权声明,比如某个PEP链接的文章是微信公众号文章,而且明确说了不许转载。翻译内容是各种外部链接,已经有部分链接失效。所以我在Github创建了这个项目,目的是进行系统性翻译中文版PEP,为Python学习者做出一些贡献。当然,我个人的力量远远不够,这里还是原创 2021-06-09 13:24:28 · 377 阅读 · 8 评论 -
PEP 20 – The Zen of Python
PEP 20 – The Zen of PythonPython之禅原文地址:https://www.python.org/dev/peps/pep-0020/PEP:20Title:The Zen of PythonAuthor:tim.peters at gmail.com (Tim Peters)Status:ActiveType:InformationalCreated:19-Aug-2004Post-History:22-Au翻译 2021-06-07 15:14:36 · 298 阅读 · 0 评论 -
PEP 8 – Style Guide for Python Code
PEP 8 – Style Guide for Python CodePEP 8–Python编码规范原文地址:https://www.python.org/dev/peps/pep-0008/PEP:8Title:Style Guide for Python CodeAuthor:Guido van Rossum Introduction简介This document gives coding conventions for the Python code com翻译 2021-06-05 17:56:44 · 1239 阅读 · 2 评论 -
Python学习笔记38:类元编程
Python学习笔记38:类元编程《Fluent Python》中多次提到,在Python中,类和函数都是一类对象,这指的是其开放程度对于Python语言的定制者和普通开发者是相同的,拥有同样的权限,我们可以像Python语言的底层开发人员那样,对类和函数进行定制和改造,以实现某种“高级需求”。虽然对于普通的开发者来说似乎用不到,但作为语言学习的一部分,了解这部分知识至少对帮助你更深入的理解这门语言是有益的。而书中也提到,Python之所以能流行,似乎这种对于初学者好用的同时为资深开发者提供高级工具的特原创 2021-06-04 18:19:18 · 428 阅读 · 1 评论 -
Python学习笔记37:属性描述符
概览在Python学习笔记36:动态属性和特性中我们介绍了如何使用特性来“代理”对实例属性的访问,事实上特性是一种特殊的属性描述符。所谓的属性描述符,是一种实现了描述符协议的特殊类,这个关于属性访问的协议包括__set__\__get__\delete。下面我们看下如何实现属性描述符。实现我们假设有这么一个订单类:class Order: def __init__(self, quantity, price) -> None: self.quantity = qua原创 2021-06-02 16:13:15 · 433 阅读 · 1 评论 -
Python学习笔记36:动态属性和特性
Python学习笔记36:动态属性和特性值得高兴的是,经过一段时间的学习,《Fluent Python》一书的内容只剩下最后一个部分了:元编程。当然,我同时也发现这本书在中后部的内容难度陡然增加,但是随着书页的变薄,任何读者想必都难免会有喜悦和轻松之感。闲话少说,进入今天的主题。任何语言对面向对象的学习都是先介绍类,而类中最开始学的内容必然是属性。Python作为一门动态语言,相比静态语言,在类和对象的属性上面有更多“花样”,值得我们专门花时间总结一下。属性Python的类和对象中有一些特殊属性原创 2021-05-28 17:49:27 · 593 阅读 · 3 评论 -
Python学习笔记35:使用Asyncio处理并发
Python学习笔记35:使用Asyncio处理并发从标题也可以看出,Asyncio包和Futures包一样,也是用于处理并发的,但是在实现机制和使用方式上都有很大差别,所以会在接下来对两者进行对比说明。但在介绍Asyncio包之前,我们先要弄清楚一些必须的基础概念。这里不打算按照《Fluent Python》同名章节的知识点安排,我觉得一上来就介绍Asyncio包很容易把人弄晕,因为我自己在阅读的时候都被弄的一头雾水。基础概念同步&异步关于同步和异步的概念,我想在我的工作经历中遇到原创 2021-05-25 21:01:23 · 559 阅读 · 0 评论