fluent Python】的更多相关文章

Fluent Python by Luciano Ramalho https://learning.oreilly.com/library/view/fluent-python/9781491946237/ Python’s simplicity lets you become productive quickly, but this often means you aren’t using everything it has to offer. With this hands-on guide…
Fluent Python 读书手记 Python数据模型:特殊方法用来给整个语言模型特殊使用,一致性体现.如:__len__, __getitem__ AOP: zope.inteface 列表推导(list comprehensive)和 表达式生成器(generator expression),分别用 [...] 和 (...)表未.后者是迭代生成,更节省内存. 元组tuple两大功能特性:不可变.用作数据记录结构(位置信息).元组里的元素最好也是不可变数据. array 和 列表相比的区…
关于Python的memoryview内置类,搜索国内网站相关博客后发现对其解释都很简单, 我觉得学习一个新的知识点一般都要弄清楚两点: 1, 什么时候使用?(也就是能解决什么问题) 2,如何使用? 对照Fluent Python一书2.9.2 以及网上相关资料后,对memoryview内置类做一些总结: (1)什么时候应该使用memoryview内置类 Travis Oliphant在statkoverflow上是如此回答的: # A memoryview is essentially a g…
Python深入学习之<Fluent Python> Part 1 从上个周末开始看这本<流畅的蟒蛇>,技术是慢慢积累的,Python也是慢慢才能写得优雅(pythonic)的. 数据模型 python纸牌 import collections # 用来构建一个只有属性,没有方法的简单类,来代表扑克牌的号码和花色. Card = collections.namedtuple('Card', ['rank', 'suit']) class FrenchDeck: # 扑克牌的号码 r…
Fluent Python一书9.4节比较了 Classmethod 和 Staticmethod 两个装饰器的区别: 给出的结论是一个非常有用(Classmethod), 一个不太有用(Staticmethod). 今天我们就对这两个装饰器做更深入的了解和比较, (一) Classmethod: (1)什么时候使用Classmethod? classmethod最常见的用途是定义备选构造方法 (2)如何使用Classmethod? 下面我们用一个示例来展示如何使用classmethod, 假如…
Fluent Python 9.6节讲到hashable Class, 为了使Vector2d类可散列,有以下条件: (1)实现__hash__方法 (2)实现__eq__方法 (3)让Vector2d向量不可变 如何让Vector2d类实例的向量只读呢?可以使用property,如下所示: class Vector2d: def __init__(self, x, y): self.__x = x self.__y = y @property # The @property decorator…
在Fluent Python一书第八章有一个示例,未看书以先很难理解这个示例运行的结果,我们先看结果,然后再分析问题原因: 定义了如下Bus类: class Bus: def __init__(self, passengers=[]): self.passengers = passengers def pick(self, name): self.passengers.append(name) def drop(self, name): self.passengers.remove(name)…
近日,在阅读<Fluent Python>的第2.9.2节时,有一个关于内存视图的例子,当时看的一知半解,后来查了一些资料,现在总结一下,以备后续查询: 示例复述 添加了一些额外的代码,便于更好理解memoryview >>> import array >>> numbers = array.array('h', [-2, -1, 0, 1, 2]) >>> memv = memoryview(numbers) >>> l…
Pyhton中序列类型支持切片功能,比如list: >>> numbers = [1, 2, 3, 4, 5] >>> numbers[1:3] [2, 3] tuple也是序列类型,同样支持切片. (一)我们是否可以使自定义类型支持切片呢? 在Python中创建功能完善的序列类型不需要使用继承,只要实现符合序列协议的方法就可以,Python的序列协议需要__len__, __getitem__两个方法,比如如下的Vector类: from array import a…
1.1 Python风格的纸牌 Python collections模块中的内置模块:namedtuple https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001411031239400f7181f65f33a4623bc42276a605debf6000 import collections Card = collections.namedtuple('Card',['ran…
<流畅的Python>这本书是图灵科技翻译出版的一本书,作者Luciano Ramalho. 作者从Python的特性角度出发,以Python的数据模型和特殊方法为主线,主要介绍了python的集合类型(sequence.mapping.set等).把函数作为一等对象来使用.类的构建.新的文件控制流程(生成器.上下文管理器.协程).用描述符来从底层解释Python对象属性的存储等各个方面. 书中主要围绕Python标准库展开,不会涉及太多的标准库以外的包.虽然它们也很实用. 建议大家可以把前言…
2.1 内置序列类型概览 Python 标准库用 C 实现了丰富的序列类型,列举如下. 容器序列 list. tuple 和 collections.deque 这些序列能存放不同类型的数据. 扁平序列 str. bytes. bytearray. memoryview 和 array.array,这类序列只能容纳一种类型. 序列类型还能按照能否被修改来分类. 可变序列 list. bytearray. array.array. collections.deque 和 memoryview. 不…
Python 最好的品质之一是一致性. 魔术方法(magic method)是特殊方法的昵称.特殊方法也叫双下方法. 1.1 一摞Python风格的纸牌 import collections Card = collections.namedtuple('Card', ['rank', 'suit']) # 创建了一个有名字的元组 class FrenchDeck: # 隐式继承了Object类 ranks = [str(n) for n in range(2, 11)] + list('JQKA…
本书重点: 这本书并不是一本完备的 Python 使用手册,而是会强调 Python 作为编程语言独有的特性,这些特性或者是只有 Python 才具备的,或者是在其他大众语言里很少见的. Python语言核心以及它的一些库会是本书的重点. 目标读者: 正在使用 Python,又想熟悉 Python 3 的程序员 . 主题: 第一部分: 第一部分只有单独的一章,讲解的是 Python 的数据模型(data model),以及如何为了保证行为一致性而使用特殊方法(比如 __repr__),毕竟 Py…
一.说明 参考资料为维基百科的 Playing Card 词条,非严肃性论证,只是对代码为什么这么写做讨论. 二.扑克牌的起源 import collections Card = collections.namedtuple('Card', ['rank', 'suit']) class FrenchDeck: ranks = [str(n) for n in range(2, 11)] + list('JQKA') suits = 'spades diamonds clubs hearts'.…
7 Must Read Python Books I started learning Python just two years ago. Coming from a C++ and Java background, it was easy to pick up the basic language features, but I wanted to learn more. What I did was order all the Python books that had good rati…
Python中的文字对象 Python 3.x中处理文字的对象有str, bytes, bytearray. bytes和bytearray可以使用除了用作格式化的方法(format, format_map)以及几个特殊的基于Unicode的方法(casefold, isdecimal, isidentifier, isnumeric, isprintable, encode)以外几乎所有str的方法. bytes有一个类方法,可以通过序列来构建字符串,而这个方法不可以用在str上. >>&g…
请大家根据自己的实际情况对号入座,挑选适合自己的 Python 入门书籍: 完全没有任何编程基础:01 号书 少量编程基础,不求全,只希望能以最快的速度入门:02 号书 少量编程基础,有一定的英文阅读能力,喜欢多一些项目实例:03, 04 号书 没什么编程基础,但时间较充裕,希望学习得全面一些:05, 06 号书 有一定编程基础,而且时间较充裕,希望学习得全面一些:09 号书 已经掌握了基本的 Python 编程,希望学习更多 Python 编程的技巧:07 号书 已经掌握了基本的 Python…
这是Python相关的一个播客,通过播客的形式给大家讲述python那点事,相关的链接都会列出来,有一些是由文本内容的,如果听不太懂就看看英文原文.不fanqiang的情况下,网页打开没有问题,但是播放可能有问题(iTunes里面也可以收听).搬运了一份MP3到百度云盘,大家可以直接听,需要看原文的直接打开连接就好了. 播放列表地址 iTunes地址 百度网盘搬运MP3地址 密码 a3jb ,尽量跟上 下面是一个对应的列表,有时间会把链接补上. Show number Date Title Gu…
写python的都知道,python函数或者方法可以使用默认参数,比如 1 def foo(arg=None): 2 print(arg) 3 4 foo() 5 6 foo("hello world") 一个很简单的函数,参数arg默认使用None,当调用foo函数时,可以传入一个参数,也可以不传入参数,运行结果如下 1 None 2 hello world 这很好理解.默认参数是python一个很好的特性. 但是如果使用可变对象作为默认参数,就会引发问题.之前写过一个脚本,bug不…
__str__和repr __str__和__repr__都是python的内置方法,都用与将对象的属性转化成人类容易识别的信息,他们有什么区别呢 来看一段代码 from math import hypot class Vector: def __init__(self, x, y): self.x = x self.y = y def __str__(self): return 'Vector(%r,%r)' % (self.x, self.y) def __abs__(self): retu…
1.现有两元祖 (('a'),('b'),('c'),('d') ) ,请使用Python中的匿名函数生成列表 [ {'a':'c'},{'c':'d'}] 答案:v = list(map(lambda x,y:{x:y},data[0:2],data[2:4])) data = (('a'),('b'),('c'),('d') ) v = list(map(lambda x,y:{x:y},data[0:2],data[2:4])) data[0:2] = ('a'),('b') data[2…
在编写python程序的过程中,中英文混用经常会出现编码问题.围绕此问题,本文首先介绍编码的含义及常用编码,随后列举几个python经常遇到的编码异常及解决方法,接着列举笔者在实践中遇到的异常出现的情景及原因,最后针对编码问题提出最佳实践. 一 常见编码 1.1 unicode编码 在文本文件中,看到的所有字符,包括中文,都需要在计算机中存储,而计算机只能存储0和1这样的二进制位,所以需要一种方法,将字符映射成数字,然后将数字转化为二进制位存储在计算机中.针对字符和数字的映射的问题,产生了uni…
入门技术博客 进阶自己挑选 入门基础 Python入门相对容易又可以干很多事(网站,运维,数据,爬虫等),是一门方便的工具语言.2016年TIOBE排名显示Python已经名列第四,成为脚本语言之首. 国外的Youtube,Instagram,Pinterest,Reddit,Dropbox,Disqus, Quora等知名应用一开始都是基于Python构建,国内的豆瓣,知乎,果壳,饿了么,搜狐等也是Python应用的典型. 这也给了国内Python开发者一阵强心剂,Python的生态环境可以支…
想在python里用lisp方言hy的目的: 1 用lisp去parse 包含 “数据+简单if控制流(代码.AST)”的配置文件,或者说用包含s-exp的.hy文件作为这类配置文件的实现(而不是用yml) 以下引自编程珠玑徐宥的blog https://blog.youxu.info/2010/02/10/lisp-and-ai-2/ FORTRAN 基本上是围绕数组建立的,LISP 则是围绕链表实现的.通过研究下棋,几何题等 AI 问题的表示,我们的读者不难发现, AI 研究关心于符号和逻辑…
生成器函数的工作原理只要 Python 函数的定义体中有 yield 关键字, 该函数就是生成器函数. 调用生成器函数时, 会返回一个生成器对象. 也就是说, 生成器函数是生成器工厂. 调用生成器函数返回生成器: 生成器产出或生成值. 构建可迭代的对象和迭代器时经常会出现错误, 原因是混淆了二者. 要知道,可迭代的对象必须能从同一个可迭代的实例中获取多个独立的迭代器, 而且各个迭代器要能维护自身的内部状态,可迭代的对象有个 __iter__ 方法, 每次都实例化一个新的迭代器,而迭代器要实现 _…
Flask 1. Flask Web Development Miguel Grinberg April 2014 2. Flask Framework Cookbook Shalabh Aggarwal November 21, 2014 3. 零基础学Python http://looly.gitbooks.io/python-basic/content/index.html 4. Learn Python the Hard Way http://learnpythonthehardway.…
pythonic 风格编码 入门python好博客 进阶大纲 有趣的灵魂 老齐的教程 老齐还整理了很多精华 听说 fluent python + pro python 这两本书还不错! 元组三种遍历,有点像回字有四种写法一样...苦笑 for index in range(0,len(tuple_1)): ... print(tuple_1[index]) >>> for index in range(0,len(tuple_1)): ... print('{}--{}'.format(…
原文:http://python.jobbole.com/84618/ 本文超出 PEP8 的范畴以涵盖我认为优秀的 Python 风格.本文虽然坚持己见,却不偏执.不仅仅涉及语法.模块布局等问题,同时深入范式.组织及架构的领域.希望本文能成为精简版 Python 代码<风格的要素>. 目次 Python 风格要素 基本遵从 PEP 准则 灵活的单行长度 一致的命名 不要在这些地方吹毛求疵 写好文档字符串 范式和模式 代码风格小禅理 平分秋色 标准工具及项目架构 灵感来源 撰稿人 基本遵从 P…
Python 学习,参考书目推荐 前言 好的技术书籍可以帮助我们快速地成长,大部分人或多或少地受益于经典的技术书籍.在「Python开发者」微信公号后台,我们经常能收到让帮忙推荐书籍的消息.这类的问题在@Python开发者 微博 和 伯乐在线的 Python小组 讨论中也不绝于耳. 7月3日,伯乐在线在「Python开发者」微信公号发起了一个讨论 (注:PC端无法看到大家的评论,需要关注微信公号后,从微信才可以看到),通过这个讨论话题,在评论中分享对自己帮助很大的Python技术书籍.  (Py…