概览 在Python学习笔记36:动态属性和特性中我们介绍了如何使用特性来“代理”对实例属性的访问,事实上特性是一种特殊的属性描述符。 所谓的属性描述符,是一种实现了描述符协议的特殊类,这个关于属性访问的协议包括__set__\__get__\delete。 下面我们看下如何实现属性描述符。 实现 我们假设有这么一个订单类: class Order: def __init__(self, quantity, price) -> None: self.quantity = quantity …
概览 在Python学习笔记36:动态属性和特性中我们介绍了如何使用特性来“代理”对实例属性的访问,事实上特性是一种特殊的属性描述符。 所谓的属性描述符,是一种实现了描述符协议的特殊类,这个关于属性访问的协议包括__set__\__get__\delete。 下面我们看下如何实现属性描述符。 实现 我们假设有这么一个订单类: class Order: def __init__(self, quantity, price) -> None: self.quantity = quantity …
今天意外发现了一位网友的来信,咨询我博客RSS订阅地址的问题,这封邮件莫名其妙地被QQ邮箱归类到了垃圾邮件,所以才看到。 其实WordPress默认是有RSS的,但并不是一般性的xxx/rss或者xxx/feed,而是?=xxx这种,因为WordPress是PHP编写的嘛,自然如此。 但是只要是用支持Apache或者Ngnix这种支持伪静态的web service架设的,就能实现上面那种伪静态。 首先需要在设置-固定链接页面选择一个固定链接进行设置: 这时候正常情况下WordPress会在其网站根目录下创建一个用于…
值得高兴的是,经过一段时间的学习,《Fluent Python》一书的内容只剩下最后一个部分了:元编程。 当然,我同时也发现这本书在中后部的内容难度陡然增加,但是随着书页的变薄,任何读者想必都难免会有喜悦和轻松之感。 闲话少说,进入今天的主题。 任何语言对面向对象的学习都是先介绍类,而类中最开始学的内容必然是属性。Python作为一门动态语言,相比静态语言,在类和对象的属性上面有更多“花样”,值得我们专门花时间总结一下。 属性 Python的类和对象中有一些特殊属性,可以帮助我们实现类似Java中的反射功能,直接“…
从标题也可以看出,Asyncio包和Futures包一样,也是用于处理并发的,但是在实现机制和使用方式上都有很大差别,所以会在接下来对两者进行对比说明。 但在介绍Asyncio包之前,我们先要弄清楚一些必须的基础概念。 这里不打算按照《Fluent Python》同名章节的知识点安排,我觉得一上来就介绍Asyncio包很容易把人弄晕,因为我自己在阅读的时候都被弄的一头雾水。 基础概念 同步&异步 关于同步和异步的概念,我想在我的工作经历中遇到过最多的和最熟悉的无非是AJAX调用了: <script s…
Python学习笔记34:使用Futures处理并发 概览 Futures模块是Python3中推荐使用的一个并发控制框架,我们可以使用这个模块编写多线程和多进程程序。 在Python中使用Futures模块很简单,只要先安装: pip install futures 然后在Python代码中引用: from concurrent import futures 在介绍如何用Futures实现并发之前,我们先看一个传统的下载程序。 一个传统的下载程序 这个示例程序使用requests摸块进行下载,这个第三方模块需要安…
PEP 492 -- Coroutines with async and await syntax 原文地址:https://www.python.org/dev/peps/pep-0492/ PEP492--通过async与await语句实现协程 Abstract 概览 The growth of Internet and general connectivity has triggered the proportionate need for responsive and scalable code. This…
Python学习笔记33:协程 老实说,这部分内容是我学习Python以来遇到的最大挑战,堪比以前学习多线程时候的经历,有种脑袋要爆炸的感觉。 所以还是那句话,把这部分内容提炼总结出来相当困难,如有疏漏在所难免,望多多包涵。 废话不多说了,GO! yield与生成器函数 前边在Python学习笔记31:迭代技术中我们介绍了生成器函数,生成器函数本质上是通过yield语句来产生一个值提供给调用程序,然后挂起,并等待下一次调用,不断执行这一个过程的特殊函数。 这其中yield语句除了用于向调用方生成数据以外,还肩负着控…
Python学习笔记32:else块与上下文管理器 本系列文章的代码都存放在Github项目:python-learning-notes。 else块 else块在常见的编程语言中没有什么好说的,都是和if语句固定搭配出现,用途也一目了然,但在Python中有一些奇特的额外用途。 while与else块 我们来看这个例子: import random def roll(): return random.randint(1, 6) i = 1 isWinner = False while i &…
Python学习笔记31:迭代技术 本系列文章的代码都存放在Github项目:python-learning-notes。 这一部分内容是《Fluent Python》目前为止最长的篇幅,我也花了大半天时间来阅读,内容的确庞杂,所以在提炼整理上可能会有所疏漏,请多包涵。 迭代技术无疑在Python中占有相当的地位。平时我们在写代码的时候,大多数时间也是话费在for或者foreach之类的循环语句上,而Python更进一步,在语言结构中直接整合了迭代技术,让我们可以更容易地在不同类型间使用类似的简单语法就可以进行迭代…
Python学习笔记30:运算符重载 本系列文章的相关代码都发布在Github:https://github.com/icexmoon/python-learning-notes 一点思辨 关于运算符重载,实现其实并不是很复杂,只是有一些细节需要注意,学完这一部分我更在意的反而是围绕运算符重载的一些思辨。 我接触的最强大的运算符重载应该是C++,基本上可以重载各种各样的运算符,而Java则完全截然相反,完全不允许重载运算符,所以Java代码中会出现很多的xxx.add(xxx)。 Java之所以完全摒弃运算符重载,…
魔芋红茶
加一点PHP,加一点Go,加一点Python......
COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务
Theme Kratos Made By Seaton Jiang