没有合适的资源?快使用搜索试试~ 我知道了~
首页《流畅Python》:清晰、简洁的编程艺术指南
"《流畅的Python》(Fluent Python) 是由Luciano Ramalho编著的一本Python编程指南,这本书以其清晰、简洁和高效的特点,为读者提供了深入理解和掌握Python语言的实用方法。Luciano Ramalho在版权页上声明了该书的版权所有,自2014年首次出版以来,不断经过修订和完善,以确保内容的准确性和时效性。 本书适合各个层次的Python学习者,无论是初学者还是有一定经验的开发者,都能从中受益匪浅。它涵盖了Python语言的核心概念,如数据结构、函数式编程、面向对象编程、元编程等,并深入探讨了高级主题,如生成器、装饰器、异常处理以及并发编程。通过实例驱动的方式,作者帮助读者理解并实践如何编写出既优雅又高效的代码。 编辑团队包括 Meghan Blanchette 和 Rachel Roumeliotis,他们在整个出版过程中起到了关键作用。从生产编辑到封面设计,每一位工作人员都在确保书籍的质量与专业性。书中附有详细的修订历史,反映出作者和编辑团队对细节的关注以及对提供最新知识的承诺。 《流畅的Python》不仅是一本技术手册,还是一部Python编程的艺术作品,旨在提升读者的编程技巧和审美观。无论是希望通过Python进一步提升职业生涯的技术人员,还是想要探索现代编程范式的业余爱好者,这本书都是一份宝贵的资源。对于在线版本,读者可以通过O'Reilly Safari Online平台获取,方便随时随地学习。 《流畅的Python》是一本值得深入研究的Python学习资料,它将带你步入Python编程的高阶领域,让你在实践中领略到Fluent Python的魅力。"
资源详情
资源推荐
1. Message to comp.lang.python, Dec. 23, 2002: “Acrimony in c.l.p.”
Preface
Here’s the plan: when someone uses a feature you don’t understand, simply shoot them.
This is easier than learning something new, and before too long the only living coders
will be writing in an easily understood, tiny subset of Python 0.9.6 <wink>
1
.
— Tim Peters
legendary core developer and author of The Zen of Python
“Python is an easy to learn, powerful programming language.” Those are the first words
of the official Python Tutorial. That is true, but there is a catch: because the language is
easy to learn and put to use, many practicing Python programmers leverage only a
fraction ot its powerful features.
An experienced programmer may start writing useful Python code in a matter of hours.
As the first productive hours become weeks and months, a lot of developers go on
writing Python code with a very strong accent carried from languages learned before.
Even if Python is your first language, often in academia and in introductory books it is
presented while carefully avoiding language-specific features.
As a teacher introducing Python to programmers experienced in other languages, I see
another problem that this book tries to address: we only miss stuff we know about.
Coming from another language, anyone may guess that Python supports regular ex‐
pressions, and look that up in the docs. But if you’ve never seen tuple unpacking or
descriptors before, you will probably not search for them, and may end up not using
those features just because they are specific to Python.
This book is not an A-Z exhaustive reference of Python. My emphasis is in the language
features that are either unique to Python or not found in many other popular languages.
This is also mostly a book about the core language and some of its libraries. I will rarely
talk about packages that are not in the standard library, even though the Python package
index now lists more than 53.000 libraries and many of them are incredibly useful.
xv
XXXtodo
Who This Book Is For
This book was written for practicing Python programmers who want to become pro‐
ficient in Python 3. If you know Python 2 but are willing to migrate to Python 3.4 or
later, you should be fine. At this writing the majority of professional Python program‐
mers are using Python 2, so I took special care to highlight Python 3 features that may
be new to that audience.
However, Fluent Python is about making the most of Python 3.4, and I do not spell out
the fixes needed to make the code work in earlier versions. Most examples should run
in Python 2.7 with little or no changes, but in some cases backporting would require
significant rewriting.
Having said that, I believe this book may be useful even if you must stick with Python
2.7, because the core concepts are still the same. Python 3 is not a new language, and
most differences can be learned in an afternoon. What’s New In Python 3.0 is a good
starting point. Of course, there have been changes after Python 3.0 was released in 2009,
but none as important as those in 3.0.
If you are not sure whether you know enough Python to follow along, review the topics
of the official Python Tutorial. Topics covered in the tutorial will not be explained here,
except for some features that are new in Python 3.
Who This Book Is Not For
If you are just learning Python, this book is going to be hard to follow. Not only that, if
you read it too early in your Python journey, it may give you the impression that every
Python script should leverage special methods and metaprogramming tricks. Premature
abstraction is as bad as premature optimization.
How This Book is Organized
The core audience for this book should not have trouble jumping directly to any chapter
in this book. However, I did put some thought into their ordering.
I tried to emphasize using what is available before discussing how to build your own.
For example, Chapter 2 in Part II covers sequence types that are ready to use, including
some that don’t get a lot of attention, like collections.deque. Building user-defined
sequences is only addressed in Part IV, where we also see how to leverage the Abstract
Base Classes (ABC) from collections.abc. Creating your own ABCs is discussed even
later in Part IV, because I believe it’s important to be comfortable using an ABC before
writing your own.
xvi | Preface
This approach has a few advantages. First, knowing what is ready to use can save you
from reinventing the wheel. We use existing collection classes more often than we im‐
plement our own, and we can give more attention to the advanced usage of available
tools by deferring the discussion on how to create new ones. We are also more likely to
inherit from existing ABCs than to create a new ABC from scratch. And finally, I believe
it is easier to understand the abstractions after you’ve seen them in action.
The downside of this strategy are the forward references scattered throughout the
chapters. I hope these will be easier to tolerate now that you know why I chose this path.
The chapters are split in 6 parts. This is the idea behind each of them:
Part I: Prologue
A single chapter about the Python Data Model explaining how the special methods
(e.g. __repr__) are the key to the consistent behavior of objects of all types — in a
language that is admired for its consistency. Understanding various facets of the
data model is the subject of most of the rest of the book, but Chapter 1 provides a
high-level overview.
Part II: Data structures
The chapters in this part cover the use of collection types: sequences, mappings and
sets, as well as the str versus bytes split — the reason for much joy for Python 3
users and much pain for Python 2 users who have not yet migrated their code bases.
The main goals are to recall what is already available and to explain some behavior
that is sometimes surprising, like the reordering of dict keys when we are not
looking, or the caveats of locale-dependent Unicode string sorting. To achieve these
goals, the coverage is sometimes high level and wide — when many variations of
sequences and mappings are presented — and sometimes deep, for example when
we dive into the hash tables underneath the dict and set types.
Part III: Functions as objects
Here we talk about functions as first-class objects in the language: what that means,
how it affects some popular design patterns, and how to implement function dec‐
orators by leveraging closures. Also covered here is the general concept of callables
in Python, function attributes, introspection, parameter annotations, and the new
nonlocal declaration in Python 3.
Part IV: Object Oriented Idioms
Now the focus is on building classes. In part II the class declaration appears in few
examples; part IV presents many classes. Like any OO language, Python has its
particular set of features that may or may not be present in the language where you
and I learned class-based programming. The chapters explain how references work,
what mutability really means, the lifecycle of instances, how to build your own
collections and ABCs, how to cope with multiple inheritance and how to implement
operator overloading — when that makes sense.
Preface | xvii
Part V: Control flow
Covered in this part are the language constructs and libraries that go beyond se‐
quential control flow with conditionals, loops and subroutines. We start with gen‐
erators, then visit context managers and coroutines, including the challenging but
powerful new yield from syntax. Part V closes with high level a introduction to
modern concurrency in Python with collections.futures — using threads and
processes under the covers with the help of futures — and doing event-oriented I/
O with asyncio — leveraging futures on top of coroutines and yield from.
Part VI: Metaprogramming
This part starts with a review of techniques for building classes with attributes
created dynamically to handle semi-structured data such as JSON datasets. Next
we cover the familiar properties mechanism, before diving into how object attribute
access works at a lower level in Python using descriptors. The relationship between
functions, methods and descriptors is explained. Throughout Part VI, the step by
step implementation of a field validation library uncovers subtle issues the lead to
the use of the advanced tools of the last chapter: class decorators and metaclasses.
Hands-on Approach
Often we’ll use the interactive Python console to explore the language and libraries. I
feel it is important to emphasize the power of this learning tool, particularly for those
readers who’ve had more experience with static, compiled languages that don’t provide
a REPL — read-eval-print-loop.
One of the standard Python testing packages, doctest, works by simulating console
sessions and verifying that the expressions evaluate to the responses shown. I used
doctest to check most of the code in this book, including the console listings. You don’t
need to use or even know about doctest to follow along: the key feature of doctests is
that they look like transcripts of interactive Python console sessions, so you can easily
try out the demonstrations yourself.
Sometimes I will explain what we want to accomplish by showing a doctest before the
code that makes it pass. Firmly establishing what is to be done before thinking about
how to do it helps focus our coding effort. Writing tests first is the basis of TDD (Test
Driven Development) and I’ve also found it helpful when teaching. If you are unfamiliar
with doctest, take a look at its documentation and this book’s source code repository.
You’ll find that you can verify the correctness of most of the code in the book by typing
python3 -m doctest example_script.py in the command shell of your OS.
xviii | Preface
Hardware used for timings
The book has some simple benchmarks and timings. Those tests were performed on
one or the other laptop I used to write the book: a 2011 MacBook Pro 13” with a 2.7
GHz Intel Core i7 CPU, 8MB of RAM and a spinning hard disk, and a 2014 MacBook
Air 13” with a 1.4 GHZ Intel Core i5 CPU, 4MB of RAM and a solid state disk. The
MacBook Air has a slower CPU and less RAM, but its RAM is faster (1600 vs. 1333
MHz) and the SSD is much faster than the HD. In daily usage I can’t tell which machine
is faster.
Soapbox: my personal perspective
I have been using, teaching and debating Python since 1998, and I enjoy studying and
comparing programming languages, their design and the theory behind them. At the
end of some chapters I have added a section called Soapbox with my own perspective
about Python and other languages. Feel free to skip that if you are not into such dis‐
cussions. Their content is completely optional.
Python Jargon
I wanted this to be a book not only about Python but also about the culture around it.
Over more than 20 years of communications, the Python community has developed its
own particular lingo and acronyms. The Python jargon collects terms that have special
meaning among Pythonistas.
Python version covered
I tested all the code in the book using Python 3.4 — that is, CPython 3.4, i.e. the most
popular Python implementation written in C. There is only one excpetion: the sidebar
“The new @ infix operator in Python 3.5” on page 385 shows the @ operator which is only
supported by Python 3.5.
Almost all code in the book should work with any Python 3.x compatible interpreter,
including PyPy3 2.4.0 which is compatible with Python 3.2.5. A notable exception are
the examples using yield from and asyncio, which are only available in Python 3.3 or
later.
Most code should also work with Python 2.7 with minor changes, except the Unicode-
related examples in Chapter 4, and the exceptions already noted for Python 3 versions
earlier than 3.3.
Preface | xix
剩余750页未读,继续阅读
dukedo235
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JSP+SSM科研管理系统响应式网站设计案例
- 推荐一款超级好用的嵌入式串口调试工具
- PHP域名多维查询平台:高效精准的域名搜索工具
- Citypersons目标检测数据集:Yolo格式下载指南
- 掌握MySQL面试必备:程序员面试题解析集锦
- C++软件开发培训:核心技术资料深度解读
- SmartSoftHelp二维码工具:生成与解析条形码
- Android Spinner控件自定义字体大小的方法
- Ubuntu Server on Orangepi3 LTS 官方镜像发布
- CP2102 USB驱动程序的安装与更新指南
- ST-link固件升级指南:轻松更新程序步骤
- Java实现的质量管理系统Demo功能分析与操作
- Everything高效文件搜索工具:快速精确定位文件
- 基于B/S架构的酒店预订系统开发实践
- RF_Setting(E22-E90(SL)) V1.0中性版功能解析
- 高效转换M3U8到MP4:免费下载工具发布
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功