Skip to content

florije4ex/python_gitbook_build

Repository files navigation

python攻略

Python是一门既容易上手又强大的编程语言.--Python官方教程

起因

Python3.5+攻略,3.5以后新加了大量特性和语法糖,关键的关键字asyncawait和其代表的原生的协程. typehint,zipapp等实用工具再加上本身字符串的语义变化和metaclass的语法变化. Python3.5已经可以说是一门与2难以兼容的新语言了.

虽然Python2于3其设计思路和数据模型没有本质变化,但这些变化足以让人不适应. 而新的实用工具也让我看到了全面迁移向Python3的意义.为了自己熟悉Python3也为了安利.才有了这样一份攻略.

为什么不是3.6或3.7

2017年初Python3.6版本发布了,它也确实有些令人欣喜的语法糖,但并没有3.5的冲击巨大,且都有替代方式实现.基于3.5写的代码可以保证在Python3.6上使用,而相反却不行.

3.5之后版本的特性也会写出来,但会做出标记,如果以后哪个版本又有了关键字层面或者大的语法层面的改变,本教程也会迁移过去.

怎么利用这份攻略学习Python3.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基础新人,读这个攻略的新人推荐

    1. 先去了解下操作系统中的环境变量部分的基本知识
    2. 读一本Python的科普型书,比如这本与孩子一起学编程,当然其他相对专业些的书或教程比如官方教程只要读的下去的读过最好.

本教程的内容范围和组织结构

很多人讲Python开发就是搭乐高积木,只要会调包就能用好Python,某种意义上来说这种说法是对的.Python的官方仓库已经有6万多个包,其中有大量非常优质的包.

但本文不是讲怎么调包调啥包的文章,本文写作内容的边界:

  1. Python及其标准库
  2. Python在特定领域的准标准库如数学统计领域的numpy,pandas
  3. 特定重要领域中的一种选择方案,比如web编程中的sanic,jinja2.

文章将会划分为篇,每一篇下面的单位是章,章下面是节,篇下面可以没有章,这种情况就顺延.篇,章下面都会开头的介绍文字和结尾的结语.介绍用于总体上概括其所属的内容而结语用于介绍一些豆知识,相关的好用第三方库和个人的相关看法,希望读者喜欢. 每一节则是单独的一篇文章.我尽量让各个部分内聚避免耦合,这样可以不用按顺序,但有些确实需要有其他方面基础的那就没办法了,我会在每节开始的部分给出预备知识的超链接方便查看.

每一节中都会有1~3级标题,不会再往下分出4级标题.同时1级标题只会是一节的标题.

总结下就是如下的树状结构

篇-|
   |-章-|
        |-节-|
             |- 1级标题-|
                       |-2级标题-|
                                |-3级标题

或者

篇--|
    |-节-|
            |- 1级标题-|
                    |-2级标题-|
                            |-3级标题

在文末会有一个术语表附录,将文中出现的术语做一个总结,如果有的话也会给出wiki链接

下面是每篇的简单介绍

  • 工具链篇

    介绍Python社区多年经营并发展出的规范及对应的开发辅助工具

  • 语法篇

    介绍Python优雅严谨的语法和惯用法

  • 嵌入与扩展篇

    Python常用作胶水语言为一些传统高性能库提供前端,这篇介绍PythonC/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

一些比较关键的点会使用加粗斜体的PS:字样标识出来

About

保存gitbook中要编译的部分

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published