无论是有没有其他语言的经验,入门Python都很简单。Python拥有简单直观的语法,方便的语法糖,以及丰富的第三方库。只要一个基础的Python教程,大家基本上都能无障碍的入门。在入门之后,很多人对于进一步学习的建议都是“做项目”、“看源码”,然而这样的建议实际是较难实现的,自己执行的效率会很低。

“这种时候如果有整理好的Python代码片段,如果有指导分析优秀开源代码的教程就好了。”

抱着这样的想法,我开始从自己“低效”的学习中,整理“高效”的干货,希望能够帮助到各位初学者。这就是“Python代码阅读”系列。

在这个系列中,最开始是大量Pythonic的代码片段,不仅展示了如何应用Python语法和标准库,还展示了一些有趣的技术和思维方式。

后续计划增加GitHub上流行的简单Python项目。以及一些小型的实用系统的实现。

通过下面的链接就可以进入到“Python代码阅读”系列合集的施工现场。

链接:“Python代码阅读”系列

初学Python的常见问题

对于初学者而言,Python入门很简单。入门之后只靠基础语法也完全可以做到平时写写脚本,解决自己工作、生活上的重复性劳动。想要什么功能,基本上都能找到方便的库。在只求应用,不求理解的情况下,很快就能实现日常表格处理、文件下载、邮件发送等功能。甚至像图像处理、OCR这样“高端”的功能也有对应的工具库可以使用。

但是做到这种程度只是小打小闹,想要真正的在开发工作中使用Python语言,或者是在GitHub上贡献开源代码,都是远远不够的。这时候,初学者的常见问题主要集中在以下四点:

  1. 学会了语法,但是不会应用。
  2. 仍然是用其他语言的逻辑在写Python代码,不是Pythonic的代码。
  3. Python项目结构不合理。
  4. 缺少对更深入主题的研究,例如装饰器、异常处理、多进程多线程、设计模式等。

传统建议的解决方案

对于已经了解基础语法,学习了Python基础数据结构的初学者,传统的建议是做项目、看源码。这样的建议不能说不正确,但是在执行起来会有各种各样的问题,从而导致学习效率低下。

首先聊一下做项目

对于初学者而言,应聘到一个使用Python语言做开发的团队显然是不现实的。那么基本上项目的来源就是自己找的练手课题或者在GitHub上参与开源项目。

自己找个项目进行练手可以说是效果最差的方式了。它实际上还是摸着石头过河,接触不到优秀的源码和实现方法,也没有人指导。最终也只是实现了功能而已,不论是代码设计还是项目结构,都是闭门造车,提升有限。最大的作用也就是提高对语法、基本数据结构和标准库的熟练程度。

至于在GitHub上找项目,一般新手能够找到的优秀项目基本上都已经过了初始阶段。在这种情况下,对于初学者而言,加入维护的难度较大,能够做的工作更多的只是一些小bug的发现和修复,甚至于只能从文档方面开始。

然后聊一下看源码

对于初学者而言,虽然直接看源码复杂度较高,但是只要肯下功夫,用好搜索引擎,大部分功能性的源码还是可以看懂的。不过如果没有人指导的话,效率肯定是不高的。同时很可能只是看懂逻辑,明白了功能如何实现。如果没有一定的设计模式等知识的基础,难以发现和理解代码的设计思路和原因。实际“看源码”的作用就少了一半,得不到精华。

我的方法

我的方法也是从传统的方法里面来的。说白了就是自己受苦,自己从“低效”的“看源码”和“做项目”的学习中,整理“高效”的干货,挑选合适的源码和项目,配上合适的讲解,从而可以更好的被初学者接受,提高学习效率。

这就是“Python代码阅读”系列。

目前该系列还在努力连载施工中,通过下面的链接就可以进入到“Python代码阅读”系列合集的施工现场。

链接:“Python代码阅读”系列

“Python代码阅读”系列首先从简单实用的函数开始,聚焦单一功能性的函数。不仅展示了如何应用Python语法和标准库编写足够Pythonic的代码,还展示了一些有趣的技术和思维方式。同时这些代码片段也具备很高的实用性,我自己平时也会在其他项目中使用到。

后续的计划是增加GitHub上兼具实用性和趣味性的优秀Python项目的源码解读。从项目结构开始梳理,理清功能和逻辑,讲解代码设计和实现。

同时也计划增加一些趣味的小型系统的实现。例如小型区块链、数据库、docker、git甚至是编程语言等。通过一步一步的实现这些系统,不仅能够学习到Python编程,还能学习到这些系统的设计理念和内部实现逻辑。

施工进度与地点

目前“Python代码阅读”系列还处于第一阶段的编写中,也是最适合刚刚进行完Python基础语法学习的初学者的部分。系列中展示的代码片段可以尽快让初学者掌握如何应用Python语法和标准库,同时其实用的功能性,也可以在以后的开发中用到。

通过下面的链接就可以进入到“Python代码阅读”系列合集的施工现场。

链接:“Python代码阅读”系列

为什么不推荐Python初学者直接看项目源码的更多相关文章

  1. python编程从入门到实践 alien invasion 项目源码

    现在上传一个 python编程从入门到实践 alien invasion 项目源码 以供大家学习参考 跟官方版本可能不太一样,因为是自己写的 也算是给新手一个参考 我用的环境是pycharm 可能需要 ...

  2. 边看MHA源码边学Perl语言之一开篇

    边看MHA源码边学Perl语言之一开篇 自我简介 先简单介绍一下自己,到目前为此我已经做了7年左右的JAVA和3年左右php开发与管理,做java时主要开发物流行业的相关软件,对台湾快递,国际快递,国 ...

  3. 一点一点看JDK源码(〇)

    一点一点看JDK源码(〇) liuyuhang原创,未经允许进制转载 写在前面: 几乎所有的大神都会强调看源码,也强调源码的重要性: 但是如何看源码,源码看什么?看了什么用?看了怎么用? 困扰很多人, ...

  4. Spring源码分析(一):从哪里开始看spring源码(系列文章基于Spring5.0)

    概述 对于大多数第一次看spring源码的人来说,都会感觉不知从哪开始看起,因为spring项目源码由多个子项目组成,如spring-beans,spring-context,spring-core, ...

  5. 如何调试 Java 开源项目源码,记一种源码导入开发工具并调试的通用方法

    楔子 说起读开源项目源码,很多朋友觉得高大上.大佬牛逼,云云~ 挡在很多人面前的不是源码怎么读,而是不知道如何导入源码到开发工具以及如何调试源码. 本文将以 spring-cloud-gateway ...

  6. 反射实体自动生成EasyUi DataGrid模板 第二版--附项目源码

    之前写过一篇文章,地址 http://www.cnblogs.com/Bond/p/3469798.html   大概说了下怎么通过反射来自动生成对应EasyUi datagrid的模板,然后贴了很多 ...

  7. 【实习记】2014-08-15文档太少看着源码用cgicc+stl库之模板谓词函数对象

        总结1: 今天找到了昨天scanf的问题答案,scanf与printf一样的神奇而复杂,稍不留神,就会被坑.scanf函数在读入非空白符分割的多个字符串的解决方法是这个:/* 以 | 分割 * ...

  8. EDKII Build Process:EDKII项目源码的配置、编译流程[三]

    <EDKII Build Process:EDKII项目源码的配置.编译流程[3]>博文目录: 3. EDKII Build Process(EDKII项目源码的配置.编译流程) -> ...

  9. Spring Boot 2.0系列文章(五):Spring Boot 2.0 项目源码结构预览

    关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/ 项目结构 结构分析: Spring-boot-pr ...

随机推荐

  1. 脚本小子学习--vulnhub靶机DC8

    @ 目录 前言 一.环境搭建 二.目标和思路 三.实际操作 1.信息收集 2.getshell 总结 前言 通过一些靶机实战练习,学习使用现有的工具来成为脚本小子. 一.环境搭建 靶机:Linux虚拟 ...

  2. Pikachu-RCE模块

    一.概述 1.1 RCE漏洞 可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 1.2 远程系统命令执行一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令 ...

  3. 快速创建Spring web项目

    第一步,把包和文件夹建好 第二步.pom文件添加依赖 放到properties标签内 <spring_version>4.1.2.RELEASE</spring_version> ...

  4. 设置Sublime插件快捷键--实现CSS颜色选取

    安装插件ColorPicker 如果你经常要查看或设置颜色值,这个插件可以很方便地调用你本机的调色板应用.(译者扩充:)这是一个双向的功能,你既可以在调色板中选择一个颜色,然后按"确定&qu ...

  5. spring-data-redis 动态切换数据源

    最近遇到了一个麻烦的需求,我们需要一个微服务应用同时访问两个不同的 Redis 集群.一般我们不会这么使用 Redis,但是这两个 Redis 本来是不同业务集群,现在需要一个微服务同时访问. 其实我 ...

  6. VSCode添加某个插件后,Python 运行时出现Segmentation fault (core dumped) 解决办法

    在VSCode添加某个插件后,Debug出现Segmentation fault (core dumped) 解决方案,在当前environment下运行: conda update --all

  7. 批量修改Linux密码脚本(Python)

    搭建环境 centos 7.4 使用脚本 python 批量修改connect用户的密码 生成密码为随机密码 保存为xls文档 #!/usr/bin/env python # -*- coding: ...

  8. Java HashMap工作原理:不仅仅是HashMap

    前言: 几乎所有java程序员都用过hashMap,但会用不一定会说. 近年来hashMap是非常常见的面试题,如何为自己的回答加分?需要从理解开始. "你用过hashMap吗?" ...

  9. Java基础(一)——面向对象

    一.对象 1.成员变量和局部变量的区别 两类变量同名时,局部变量具有更高的优先级. 作用域不同:局部变量的作用域仅限于定义它的方法,作用于函数或者语句中:成员变量的作用域在整个类中. 初始值不同:Ja ...

  10. MySQL——MySQL体系结构

    1.连接层 2.SQL层: (1)将接收到的SQL语句,解析成执行计划 (2)查询优化器 ---->选择最优的执行计划,交给存储引擎 (3)查询缓存: 缓存执行计划 (4)附加功能:权限. 语法 ...