Python是一门既容易上手又强大的编程语言.--Python官方教程
Python3.5
+攻略,3.5以后新加了大量特性和语法糖,关键的关键字async
和await
和其代表的原生的协程.
typehint,zipapp等实用工具再加上本身字符串的语义变化和metaclass的语法变化.
Python3.5
已经可以说是一门与2难以兼容的新语言了.
虽然Python2
于3其设计思路和数据模型没有本质变化,但这些变化足以让人不适应.
而新的实用工具也让我看到了全面迁移向Python3
的意义.为了自己熟悉Python3
也为了安利.才有了这样一份攻略.
2017年初Python3.6
版本发布了,它也确实有些令人欣喜的语法糖,但并没有3.5的冲击巨大,且都有替代方式实现.基于3.5写的代码可以保证在Python3.6
上使用,而相反却不行.
3.5之后版本的特性也会写出来,但会做出标记,如果以后哪个版本又有了关键字层面或者大的语法层面的改变,本教程也会迁移过去.
-
首先,忘记
Python2.7
,忘记3.5-的Python
怎么用的,从头开始学.本教程也不会有与之前的对比.一切从新开始 -
其次,边做边练,本教程没有习题,但比较重要的部分通常都有示例代码,本教程的也完全是使用
jupyter notebook
编写,可以自行去代码仓库拉下来亲自跑一遍. -
善用
help()
方法,本教程不会大量罗列api,列出来的一定都是相对比较重要的,没有列出的api细节请自己help()
查看
作者本人在写这份攻略的时候,出发点就是希望记录学到的东西,日后一旦忘记就可以在这里快速找到.因此可以看到本文章节分的比较细.
本教程通篇阅读当然可以,但更加推荐将其作为工具书,碰到问题了查一下.这样使用可能更加高效.
本攻略的目标读者主要是那些正在使用Python
,又想熟悉Python3
的程序员.如果你懂Python2
,但是想迁移到Python3.5+
也没问题.在动笔写这本攻略的时候,大多数专业Python
程序员,包括我自己,
用的还是Python2
,因此如果文中出现来自Python3
的特性,读者可能会感到陌生.但我也会不会做出解释,记住就行.本攻略的主要目的之一是为了充分地展现Python3.5+
的魅力, 如何让本攻略的代码在旧版本里正常运行这种问题我是不会回答的.
本攻略中的大多数例子稍做修改(甚至不用修改)就可以在Python2.7
里面跑起来,但是有些例子,如果追求向下兼容,就会需要大量的重写,这太麻烦了.本攻略也没打算向下兼容.
但因为Pyhon
语言的核心概念是不会变的.Python3
本质上也不是一门全新的语言,因此如果会2.7那很多东西都可以快速理解上手.
-
希望速成的读者
本文的作者相信踏踏实实一步一个脚印是做任何事情的唯一捷径.本教程也被设计成百科全书的样式.光是写作,作者就一个人断断续续写了快3年. 全教程对有一定编程基础的读者来说阅读下来应该是1周左右的量(前提是耐得下心思).而没有编程基础的读者可能读起来会比较吃力,这样连看带消化可能要看上几个月. 当然通篇阅读并不是本文推荐的阅读方式,这个是后话.
-
其他语言编程习惯"根深蒂固"的老程序员和伸手党新人
这几年由于ai技术和大数据技术的火爆,不少老程序员和新手将目光投入到了
Python
这门语言上,这个趋势当然是好事,有更多的人了解Python
,想学习Python
当然是pythoner所希望的, 但回顾历史,大学扩招带来了大量劣质大学生,知乎,bilibili等小众社区开方注册带来了大量水军.社区的质量和其成员的质量息息相关.上面提到的这两种人会将社区带向不好的方向,我希望不是我的攻略带他们进的这个领域.
-
0基础新人读者
老实说这本攻略是那种比较枯燥无味的读物,的可读性很糟糕.很可能第一部分--工具链的环境配置一节就会劝退大量新人,这可就罪过了.因此不推荐0基础新人,读这个攻略的新人推荐
很多人讲Python
开发就是搭乐高积木,只要会调包就能用好Python
,某种意义上来说这种说法是对的.Python
的官方仓库已经有6万多个包,其中有大量非常优质的包.
但本文不是讲怎么调包调啥包的文章,本文写作内容的边界:
Python
及其标准库Python
在特定领域的准标准库如数学统计领域的numpy
,pandas
- 特定重要领域中的一种选择方案,比如web编程中的
sanic
,jinja2
.
文章将会划分为篇,每一篇下面的单位是章,章下面是节,篇下面可以没有章,这种情况就顺延.篇,章下面都会开头的介绍文字和结尾的结语.介绍用于总体上概括其所属的内容而结语用于介绍一些豆知识,相关的好用第三方库和个人的相关看法,希望读者喜欢. 每一节则是单独的一篇文章.我尽量让各个部分内聚避免耦合,这样可以不用按顺序,但有些确实需要有其他方面基础的那就没办法了,我会在每节开始的部分给出预备知识的超链接方便查看.
每一节中都会有1~3级标题,不会再往下分出4级标题.同时1级标题只会是一节的标题.
总结下就是如下的树状结构
篇-|
|-章-|
|-节-|
|- 1级标题-|
|-2级标题-|
|-3级标题
或者
篇--|
|-节-|
|- 1级标题-|
|-2级标题-|
|-3级标题
在文末会有一个术语表附录,将文中出现的术语做一个总结,如果有的话也会给出wiki链接
下面是每篇的简单介绍
-
工具链篇
介绍
Python
社区多年经营并发展出的规范及对应的开发辅助工具 -
语法篇
介绍
Python
优雅严谨的语法和惯用法 -
嵌入与扩展篇
Python
常用作胶水语言为一些传统高性能库提供前端,这篇介绍Python
与C/C++
语言以及Fortain
的交互方式. -
深入虚拟机篇(整理中)
介绍
Python
的执行器(也就是虚拟机)的一些知识. -
高性能编程篇(构思中)
本篇的重点是如何利用python及相关工具,发挥出机器和python解释器的极限性能.
-
基础应用篇
介绍python在一些比较普遍通用领域,如时间处理,数据处理,通信,简单运维方面的应用
-
人机交互篇
介绍python用于构建应用,通过各种工具构建逻辑与用户间接口的过程.主要分为命令行应用,gui应用和web应用
-
架构与算法篇(整理中)
介绍如何使用动态的
Python
结合传统上以静态语言为基础来设计的设计模式,数据结构,算法这类技术的内容 -
数学与统计应用篇(整理中)
介绍使用
numpy
,pandas
做简单数学与统计工作的方法
目前更新是在2018年的6月8日,现在更新好后内容上来说对之前的有所删减,希望在未来3年中可以填完这个大坑
由于每个人对使用Python
的场景不同,用法不同,需求不同,因此通常我们都只是使用了Python
的子集,这没什么不好,同时也为本攻略的编写提出了一个要求--分级
这边给出的分级方案是相对分级,具体说就是在篇/章/节/中1~3级标题中命名以*
为开头,为标题的就是相对其他同级的来说进阶一些的内容,这些内容可以选择着看;而使用**
开头的的则是相对最基础最重点的内容.需要加深记忆
篇/章/的标题在每个篇/章的介绍页,
本文基于3.5版本,但一旦有新版本出现,那新特性也会被添加进来.为了区分这部分向上兼容的部分,会在标题的末尾中使用[3.6]
这样的字样标识出来
一些比较关键的点会使用加粗斜体的PS:字样标识出来