Skip to content

Latest commit

 

History

History
190 lines (153 loc) · 11.7 KB

File metadata and controls

190 lines (153 loc) · 11.7 KB

Python 学习路线

写在前面:对于本人来说,我的 Python 是在高中学校里学的,高中教材涉及的范围很广但不精,包括但不限于网络编程(Flask 框架)、嵌入式开发(开发板)、数据科学(numpy, pandas, matplotlab等等)。因此,下面我所写的 Python 学习路线并不能反映本人学习 Python 的真正路径,只是我认为可能适合大学同学的一种学习路线。当然,虽然这篇学习路线更加偏向于后端开发/网络编程,我也希望大家能借此爱上 Python,多多尝试在不同领域的应用,掌握这个啥都能干的工具。

Python 环境安装

Python 是解释型语言,无需编译,只需要一个 Python 解释器就可以执行,真正做到了 Run Anywhere 。Python 环境安装实际上就是准备 Python 的解释器。不同的 Python 代码会使用到不同的包,可能存在依赖冲突,所以建议一开始就使用 Anaconda 管理 Python 虚拟环境,给你的电脑一个干净的 Python 环境。当然 Anaconda 为人诟病的一点就是环境过于臃肿,因此也可以选择精简版的 Miniconda

怎么选择?请看:【Python】Anaconda和Miniconda的区别-CSDN博客

Python 编辑器/IDE

  • IDLE Shell

    与 Python 相捆绑的官方编辑器,功能简单,界面简朴,但好处就是无需专门安装,初学者刚开始学习基础语法时可以考虑使用这个。

  • VSCode

    轻量级但具有良好扩展性的知名IDE。配置 Python 详见:【教程】vscode+anaconda配置python环境(PS:这是我们wkk学长的教程,在bing的搜索结果里面意外地靠前)

  • PyCharm

    JetBrains 出品的 Python IDE,个人的首选,功能丰富,工程化大项目必备,而且基本上也是开箱即用。对于 Python 后端开发来讲,PyCharm 拥有 Flask、Django、FastAPI 等框架的支持,基本上可以说是最合适的 IDE 了。官网:PyCharm: The only Python IDE you need

还有其他的一些选择:Spyder(数据科学专精)、Jupyter Notebook(与文档结合、交互式)、Thonny 等等。

语法

在此之前,我要提一下大名鼎鼎的 “Python 之禅”

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

我认为任何一个学习 Python 的同学都应该看一看这一段话,每一个人对于编程可能都会有自己的看法,也可能都会有自己的一些习惯,但这一段话所反映的设计理念绝对会对 Python 学习有益。

  • 优美优于丑陋(Beautiful is better than ugly)
  • 明了优于隐晦(Explicit is better than implicit)
  • 简单优于复杂(Simple is better than complex)
  • 复杂优于凌乱(Complex is better than complicated)
  • 扁平优于嵌套(Flat is better than nested)
  • 稀疏优于稠密(Sparse is better than dense)
  • 可读性很重要(Readability counts)
  • 即使实用比纯粹更优, 特例亦不可违背原则(Special cases aren't special enough to break the rules, Although practicality beats purity)
  • 错误绝不能悄悄忽略, 除非它明确需要如此(Errors should never pass silently, Unless explicitly silenced.)
  • 面对不确定性,拒绝妄加猜测(In the face of ambiguity, refuse the temptation to guess)
  • 任何问题应有一种,且最好只有一种,显而易见的解决方法(There should be one—and preferably only one—obvious way to do it)
  • 尽管这方法一开始并非如此直观,除非你是荷兰人(Although that way may not be obvious at first unless you're Dutch)
  • 做优于不做,然而不假思索还不如不做(Now is better than never, Although never is often better than right now)
  • 很难解释的,必然是坏方法。很好解释的,可能是好方法(If the implementation is hard to explain, it's a bad idea.If the implementation is easy to explain, it may be a good idea.)
  • 命名空间是个绝妙的主意,我们应好好利用它(Namespaces are one honking great idea—let's do more of those)

简单来说,Python致力于简化程序员的工作,让一切都变得简明、清晰、优美。每一条原则对应的具体内涵就等大家自己去体会了。

基础语法学习要点

  • 变量
    • 定义变量
    • 关键字
    • 命名规则
    • 基本数据类型
    • 类型转换
  • 运算符和表达式
  • 流程控制
    • 条件分支
    • 循环
  • 基本数据结构
    • 字符串
    • 列表
    • 元组
    • 集合
    • 字典
  • 函数
    • 定义
    • 参数传递
    • 作用域
    • lambda 表达式
    • 常用内置函数
  • 模块
    • 导入模块
    • 常用模块
    • 导入包
    • 生成包
  • 异常处理
    • 捕获异常
    • try ... else ... finally 结构
    • 自定义异常
  • 文件操作
    • 文件开闭
    • 文件读写
  • 面向对象编程
    • 类和对象
    • 三大特性
      • 封装
        • self
        • 属性
        • 方法
          • 类方法
          • 实例方法
          • 静态方法
        • 访问控制
      • 继承
        • 单继承
        • 多继承
      • 多态
        • 方法重写
    • 运算符重载
    • 装饰器
    • 反射

资源

实际上 Python 的语法真的是非常简单,上手飞快,学就完事了。

进阶知识

这一部分可能并不是 Python 的专属,但是如果你想要用 Python 进行网络编程与后端开发,你可能会用到它们。

Flask

足够轻量级的 Web 框架,小项目用起来很合适。

Django

相比于 Flask 功能更加强大,也更加健壮,当然代价是 Django 它太“大”了,在小型项目上表现可能不如 Flask(并不是 Django 性能不好,Django 自带的一堆工具可能会拖累性能,实际上这是 Python 的锅),适合用来开发功能完善的企业级网站,从这一点来考虑,Django 可能更适合那些喜欢 Java 的人(??当然这里没有黑 Java 的意思

FastAPI

如它的名字所示, FastAPI 框架专注于构建 API,而不是像 Flask 和 Django 一样还负责网页的渲染(当然不是不能干,FastAPI 同样使用 Flask 的 Jinja2 引擎来渲染网页模板),它更像一个纯粹的后端框架,还可以自动生成 Swagger UI 文档。官方宣称 FastAPI 拥有极高的性能,与 Go 和 NodeJS 相比都不相上下,是目前最快的 Python 框架之一。如果你只是希望用 Python 来编写后端 API,FastAPI 毫无疑问是首选。