译者 | 弯月

出品 | CSDN(ID:CSDNnews)

以下为译文:

最近,有人在推特上发布了一份 Python 学习线路图,其中包含三个部分。

虽然我不确定这份列表是否完整,分组是否合理,但我觉得其中列举的主题很全面。

基础知识

首先是变量,不多说了。

其次,我认为运算符、表达式和内置的不可变类型都是基础知识。int、float、str 和 tuple 与 Python 编程的核心概念同等重要。

此外,我认为“循环”是一个过于粗犷的叫法,我希望我们不要将 for 和 while 语句统称为“循环”。我认为我们应该称它们为迭代。二者实现了两种逻辑量词“for all”(针对所有的……)和“there exists”(到这里退出)。我想我们应该谈谈 for 语句的最终结果:所有该范围内的值都需要处理。类似地,for-if-break 结构建立了一个"for exists"(遇到……时退出),它定义了满足条件范围的第一个值。没错,这里的核心是 range 对象。

我认为这些主题中有太多可以讨论的编程知识,这些都是基础知识。

使用变量来管理状态也是其中的一部分。但是,变量、赋值与状态的变化是高级话题,可能不属于基础知识。

另外,我认为函数定义也是基础。许多数学知识都是在其他函数的基础之上定义的函数。这是一种快速掌握复杂概念的方法。即便不知道如何计算平方根的所有细节,也可以使用平方根。

本文开头的推文中没有提到各种各样的赋值语句,包括通过赋值进行集合解构。这个遗漏的内容非常重要。

我同意文件与 File IO 是基础知识的一部分。如果仅限于读写文件,那么文件本质上就成了不可变的结构。我认为我们可以安全地忽略就地更新文件的话题,因为这是一个应用方面的话题,而不是有关语言的话题。Python 的文件操作支持最基本的 seek 和 tell 操作,但仅此而已。大多数现代应用程序都依赖于数据库来支持可更新文件。

数据结构

数据结构是基础到中级的知识。我更喜欢建立在语言基础上的术语“数据结构”。我认为可变的内置数据结构是路线图中的下一个知识点。我希望略过面向对象或函数式之类的术语,将学习重点放在列表、字典和集合,以及迭代上。这意味着列表解析式和生成器是数据结构这个重要组成的一部分。

列表解析式不是也不应该被当成高级概念。这是一个非常核心的概念。想一想,实现集合的映射/过滤/归约是大量编程的重点。虽然我们不必完全遵循这种方式,但即使是面向初学者的框架也应该呈现这一点。每个程序员在学习更简单的列表解析式时,都要从一大堆 for 和 if 语句和一堆变量入手。无论是哪种方式,本质上都是映射,可以描述为从一个集合到另一个集合的映射。

这就是标准库 collections 的由来。它是标准库的一部分。我认为它非常重要,不容忽视。我认为 dataclasses 也很重要。

说起可变数据结构,我们需要回顾 for 语句并在各种可迭代对象上使用它。Python 将概念应用于各种数据类型的方式是该语言的一个重要特征。

函数式编程

在我看来,接下来可以讨论一下函数式编程。通过高阶函数和装饰器的函数组合的想法建立在现有的基础上。此处我们不得不提及 map() 和 filter() 。由于 sorted()、max() 和 min() 等函数都提供了 key= 参数用于处理集合,因此它们都是函数式编程路线图的一部分。此外,需要注意 map() 和 max() 等函数之间的不一致。

我认为这里还应该提一下 itertools。它就像 io 一样也是标准库的一部分。我认为 itertools 和 functools 与数学模块和集合一样,是Python 的核心。

我认为 Typing.NamedTuple 和 dataclasses 也属于函数式编程的话题。不可变的数据类是无状态的,在创建列表解析式实现从一个集合到另一个集合的映射时会很有帮助。

面向对象编程

我认为面向对象编程及其相关概念建立在上述知识之上。类的定义和状态管理并不简单,尽管它们是 Python 的重要组成部分。

从某种程度上说,面向对象编程可以分解为两层:

  • 面向对象基础:继承、组合和不同类型的委托。这往往会暴露一些常见的设计模式,例如 Strategy、Decorator 和 Facade。

面向对象特性:元编程、装饰器、ABC、mixin 等。这些话题的设计意图都是避免跨越类边界的复杂边缘情况下的复制和粘贴。

并发

我不确定为什么并发和并行在线路图中是分开的主题。我曾让人们尝试以多种方式区分二者,即找到某个“使用异步实现轻量级并发”的应用场景。

这里的概念比较模糊,因为线程和进程是操作系统特性,而不是语言特性。然而,async/await 语言特性则属于 Python。当 asyncio 不提供你所需要的实际功能时就会很麻烦。具体来说,阻塞文件系统 I/O 不是 asyncio 的一部分,需要显式调用底层线程池以进行阻塞操作。

从某种程度上说,线路图应该包含 async/await。然而,如果不解释线程的本质是解决阻塞操作的方法,就很难讲清楚这个话题。

测试、集成和部署

这些工作需要用到很多工具,比如 pip、unittest、pytest、tox/nox、coverage 等。这些工具属于语言的一部分?还是更广泛的生态系统的一部分?

我认为它们并不属于语言的一部分。线路图到这里就结束了,但我认为我们还应该建立一个使用语言以及标准库的 Python 路线图。

讨论完语言本身(和一些库),我们还可继续讨论 pip 和打包等。

原文链接:https://slott-softwarearchitect.blogspot.com/2021/07/a-python-roadmap.html?m=1

声明:本文由CSDN翻译,转载请注明来源。

☞iPhone13系列售价曝光:4535元起售;微信暂停个人帐号新用户注册;Android 12 Beta 3.1发布|极客头条☞不再“挤牙膏”!英特尔公布技术路线图,豪迈放言:“将在 2025 年夺回芯片性能桂冠!”☞Pascal之父、编程祖师爷尼古拉斯•威茨痛批:教授成了项目经理,大学过于"重论文轻教学"

Python 学习线路图,码住!相关推荐

  1. Python工程师具备哪些技能才能提升求职机率(附Python学习线路图)

    对于新人而言,无论学习什么技术,都要以鼓励的姿态出现.如果只是一味地用薪水和个人所看到的局限性现状去衡量一门技术,那绝对是欠缺眼光的.作为一名Python工程师,究竟具备哪些技能才能提升求职机率?今天 ...

  2. python学习线路图(2018年更新版)

    在过去的2017年,Python语言无一出尽风头,大数据和云计算在企业中的广泛应用也是Python扶摇直上的原因.Python语言是数据科学中最流行的语言之一,仅次于R语言,被用于机器学习和人工智能系 ...

  3. 为什么人工智能开发首选python语言?(附Python学习线路图)

    Python借助AI和数据科学,目前已经攀爬到了编程语言生态链的顶级位置,可以说,Python基本上与AI已经紧密捆绑在了一起了.为什么人工智能开发要使用到python语言?我认为基于以下几个原因: ...

  4. Python学习--Selenium模块

    1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台 转载于:https://www.cnblo ...

  5. 【学习编程】码住!大学生零基础自学Python学习顺序,搞反就麻烦咯~(必备小知识)

    前言 程序员在普通人眼里就像魔法师 一个脚本轻松抢几十盒月饼(虽然最后被开除): 一个插件解决春运抢票难题: 几十行代码搭建一个 Web 网站: 用微信自动和妹纸聊天. 在程序员眼里这些事太稀松平常了 ...

  6. python语言入门h_python教程,pythonh学习线路图?

    相信对于每个人而言,知道编程和学习编程这件事,出发点是不同的.汤哥在北京接触编程的时间是2013年,那个时候还在一个二线城市上大学,还没有这么多各种融资,各种互联网创业的氛围,大家想的更多的是一些线下 ...

  7. python excel 打印文档_教你如何用Python轻轻松松操作Excel、Word、CSV,一文就够了,赶紧码住!!!...

    原标题:教你如何用Python轻轻松松操作Excel.Word.CSV,一文就够了,赶紧码住!!! 作者:奈何缘浅wyj Python 操作 Excel 常用工具 数据处理是 Python 的一大应用 ...

  8. 纯干货分享!Python视频教程分享,python学习路线图(含大纲+视频+源码)

    Python学习路线图: Python职业生涯规划 Python 各阶段获得技能说明 第一阶段.Python基础 配套视频: 链接:https://pan.baidu.com/s/1ggytRSv 密 ...

  9. 【Python码住雪景小程序】雪景人像最强攻略:让你一下美10倍、美醉了(中国人不骗中国人)

    导语 哈喽~大家早上好鸭! 冷空气来袭,不少地方一夜入冬,南方地区除了冷就是雨,而北方除了冷还有雪⛄. 就说下雪这件事吧,其实南北都特别期待.诗意的白色世界.戏剧般的氛围,容易让人情不自禁地 沉溺其中 ...

最新文章

  1. linux驱动开发字符设备,linux驱动开发(三) 字符设备驱动框架
  2. Jerry在2020 SAP全球技术大会的分享:SAP Spartacus技术介绍的文字版
  3. 用C语言操作MySQL数据库
  4. js ejs for语句的第二种遍历用法
  5. 萌新的Python练习实例100例(二)根据企业的利润,计算企业的方法奖金
  6. 写个脚本快速启动前后端
  7. 三千万海外用户的天才程序员之死
  8. 用程序关闭、注销、重启计算机
  9. 网络阅卷系统服务器配置,网上阅卷系统建设实施方案.doc
  10. mac下配置环境变量
  11. Django ORM模型一对一、一对多、多对多的操作详解
  12. css3简单动画 上下切换图片效果:
  13. 旅游类App的原型制作分享-Klook
  14. toFixed() is not a function toFixed方法数字类型才能使用
  15. 计算机如何接两个屏幕,笔记本连接两个显示器的步骤_笔记本电脑怎么外接两个显示器做分屏-win7之家...
  16. C++创建桌面应用程序:处理对话框DialogBox
  17. 模板引擎---template的简单使用
  18. NC655 牛牛算题
  19. 小程序支付 和 回调处理
  20. 基于SSM的教学辅助平台(在线学习)系统的设计与实现

热门文章

  1. ROS学习笔记一:安装配置ROS环境
  2. Cubic interpolation立方插值
  3. 新鲜出炉--Struct2、Hibernate3、Spring3框架搭建实战
  4. [C++/CLI]在栈上声明Reference Type
  5. leetcode 321 Create Max Number
  6. Python怎么去写单元测试用例去测试hello world呢
  7. location对象相关
  8. [BZOJ2502]清理雪道
  9. Centos 5.5 安装Mysql5.5过程
  10. 这几天的安排,先做个列表