为什么不推荐Python初学者直接看项目源码
无论是有没有其他语言的经验,入门Python都很简单。Python拥有简单直观的语法,方便的语法糖,以及丰富的第三方库。只要一个基础的Python教程,大家基本上都能无障碍的入门。在入门之后,很多人对于进一步学习的建议都是“做项目”、“看源码”,然而这样的建议实际是较难实现的,自己执行的效率会很低。
“这种时候如果有整理好的Python代码片段,如果有指导分析优秀开源代码的教程就好了。”
抱着这样的想法,我开始从自己“低效”的学习中,整理“高效”的干货,希望能够帮助到各位初学者。这就是“Python代码阅读”系列。
在这个系列中,最开始是大量Pythonic的代码片段,不仅展示了如何应用Python语法和标准库,还展示了一些有趣的技术和思维方式。
后续计划增加GitHub上流行的简单Python项目。以及一些小型的实用系统的实现。
通过下面的链接就可以进入到“Python代码阅读”系列合集的施工现场。
初学Python的常见问题
对于初学者而言,Python入门很简单。入门之后只靠基础语法也完全可以做到平时写写脚本,解决自己工作、生活上的重复性劳动。想要什么功能,基本上都能找到方便的库。在只求应用,不求理解的情况下,很快就能实现日常表格处理、文件下载、邮件发送等功能。甚至像图像处理、OCR这样“高端”的功能也有对应的工具库可以使用。
但是做到这种程度只是小打小闹,想要真正的在开发工作中使用Python语言,或者是在GitHub上贡献开源代码,都是远远不够的。这时候,初学者的常见问题主要集中在以下四点:
- 学会了语法,但是不会应用。
- 仍然是用其他语言的逻辑在写Python代码,不是Pythonic的代码。
- Python项目结构不合理。
- 缺少对更深入主题的研究,例如装饰器、异常处理、多进程多线程、设计模式等。
传统建议的解决方案
对于已经了解基础语法,学习了Python基础数据结构的初学者,传统的建议是做项目、看源码。这样的建议不能说不正确,但是在执行起来会有各种各样的问题,从而导致学习效率低下。
首先聊一下做项目
对于初学者而言,应聘到一个使用Python语言做开发的团队显然是不现实的。那么基本上项目的来源就是自己找的练手课题或者在GitHub上参与开源项目。
自己找个项目进行练手可以说是效果最差的方式了。它实际上还是摸着石头过河,接触不到优秀的源码和实现方法,也没有人指导。最终也只是实现了功能而已,不论是代码设计还是项目结构,都是闭门造车,提升有限。最大的作用也就是提高对语法、基本数据结构和标准库的熟练程度。
至于在GitHub上找项目,一般新手能够找到的优秀项目基本上都已经过了初始阶段。在这种情况下,对于初学者而言,加入维护的难度较大,能够做的工作更多的只是一些小bug的发现和修复,甚至于只能从文档方面开始。
然后聊一下看源码
对于初学者而言,虽然直接看源码复杂度较高,但是只要肯下功夫,用好搜索引擎,大部分功能性的源码还是可以看懂的。不过如果没有人指导的话,效率肯定是不高的。同时很可能只是看懂逻辑,明白了功能如何实现。如果没有一定的设计模式等知识的基础,难以发现和理解代码的设计思路和原因。实际“看源码”的作用就少了一半,得不到精华。
我的方法
我的方法也是从传统的方法里面来的。说白了就是自己受苦,自己从“低效”的“看源码”和“做项目”的学习中,整理“高效”的干货,挑选合适的源码和项目,配上合适的讲解,从而可以更好的被初学者接受,提高学习效率。
这就是“Python代码阅读”系列。
目前该系列还在努力连载施工中,通过下面的链接就可以进入到“Python代码阅读”系列合集的施工现场。
“Python代码阅读”系列首先从简单实用的函数开始,聚焦单一功能性的函数。不仅展示了如何应用Python语法和标准库编写足够Pythonic的代码,还展示了一些有趣的技术和思维方式。同时这些代码片段也具备很高的实用性,我自己平时也会在其他项目中使用到。
后续的计划是增加GitHub上兼具实用性和趣味性的优秀Python项目的源码解读。从项目结构开始梳理,理清功能和逻辑,讲解代码设计和实现。
同时也计划增加一些趣味的小型系统的实现。例如小型区块链、数据库、docker、git甚至是编程语言等。通过一步一步的实现这些系统,不仅能够学习到Python编程,还能学习到这些系统的设计理念和内部实现逻辑。
施工进度与地点
目前“Python代码阅读”系列还处于第一阶段的编写中,也是最适合刚刚进行完Python基础语法学习的初学者的部分。系列中展示的代码片段可以尽快让初学者掌握如何应用Python语法和标准库,同时其实用的功能性,也可以在以后的开发中用到。
通过下面的链接就可以进入到“Python代码阅读”系列合集的施工现场。
为什么不推荐Python初学者直接看项目源码的更多相关文章
- python编程从入门到实践 alien invasion 项目源码
现在上传一个 python编程从入门到实践 alien invasion 项目源码 以供大家学习参考 跟官方版本可能不太一样,因为是自己写的 也算是给新手一个参考 我用的环境是pycharm 可能需要 ...
- 边看MHA源码边学Perl语言之一开篇
边看MHA源码边学Perl语言之一开篇 自我简介 先简单介绍一下自己,到目前为此我已经做了7年左右的JAVA和3年左右php开发与管理,做java时主要开发物流行业的相关软件,对台湾快递,国际快递,国 ...
- 一点一点看JDK源码(〇)
一点一点看JDK源码(〇) liuyuhang原创,未经允许进制转载 写在前面: 几乎所有的大神都会强调看源码,也强调源码的重要性: 但是如何看源码,源码看什么?看了什么用?看了怎么用? 困扰很多人, ...
- Spring源码分析(一):从哪里开始看spring源码(系列文章基于Spring5.0)
概述 对于大多数第一次看spring源码的人来说,都会感觉不知从哪开始看起,因为spring项目源码由多个子项目组成,如spring-beans,spring-context,spring-core, ...
- 如何调试 Java 开源项目源码,记一种源码导入开发工具并调试的通用方法
楔子 说起读开源项目源码,很多朋友觉得高大上.大佬牛逼,云云~ 挡在很多人面前的不是源码怎么读,而是不知道如何导入源码到开发工具以及如何调试源码. 本文将以 spring-cloud-gateway ...
- 反射实体自动生成EasyUi DataGrid模板 第二版--附项目源码
之前写过一篇文章,地址 http://www.cnblogs.com/Bond/p/3469798.html 大概说了下怎么通过反射来自动生成对应EasyUi datagrid的模板,然后贴了很多 ...
- 【实习记】2014-08-15文档太少看着源码用cgicc+stl库之模板谓词函数对象
总结1: 今天找到了昨天scanf的问题答案,scanf与printf一样的神奇而复杂,稍不留神,就会被坑.scanf函数在读入非空白符分割的多个字符串的解决方法是这个:/* 以 | 分割 * ...
- EDKII Build Process:EDKII项目源码的配置、编译流程[三]
<EDKII Build Process:EDKII项目源码的配置.编译流程[3]>博文目录: 3. EDKII Build Process(EDKII项目源码的配置.编译流程) -> ...
- Spring Boot 2.0系列文章(五):Spring Boot 2.0 项目源码结构预览
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/04/15/springboot2_code/ 项目结构 结构分析: Spring-boot-pr ...
随机推荐
- Notes about BSD
FreeBSD: mainly for web server; OpenBSD: mainly for security concerned server;
- SpringMVC学习03(控制器Controller)
3.控制器Controller 3.1 控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现. 控制器负责解析用户的请求并将其转换为一个模型. 在Spr ...
- Linux系统启动初始化
文章目录 一.BIOS 加载启动引导程序 二.MBR 主引导扇区 三.GRUB引导内核 3.1运行 boot.img 3.2加载 core.img 3.3切换到保护模式 3.4kernel.img 引 ...
- Android模块化开发实践
一.前言 随着业务的快速发展,现在的互联网App越来越大,为了提高团队开发效率,模块化开发已经成为主流的开发模式.正好最近完成了vivo官网App业务模块化改造的工作,所以本文就对模块化开发模式进行一 ...
- Linux搭建Snmp服务
1:安装snmp yum install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils php-snmp 上面的程序首先会校验需要升级的文件 ...
- 【翻译稿】Behavior Driven Development (BDD)行为驱动开发
这是一篇翻译稿,方便给不知道BDD的同学扫盲.原文链接:What is BDD (Behavior Driven Development)? | Agile Alliance Definition定义 ...
- noip 模拟 6
果然考试一多就改不过来了 考试经过 上来看题,T1似乎是一个计数题,但看见1e9的数据范围就觉得不可做,拿了20部分分匆忙跑路 T2是个图论题,不过一看统计种类就发现是自己不会的东西,瞄准30分冲了一 ...
- Thread类中yield方法
Yield方法可以暂停当前正在执行的线程对象,让其他有相同优先级的线程执行.它是一个静态方法而且只保证当前线程放弃CPU占用而不能保证其它线程一定能占用CPU,执行yield()的线程有可能在进入到暂 ...
- WPF---数据绑定之ValidationRule数据校验综合Demo(七)
一.概述 我们利用ValidationRule以及ErrorTemplate来制作一个简单的表单验证. 二.Demo 核心思想:我们在ValidationRule中的Validate函数中进行验证, ...
- 【转】Mysql中事务ACID实现原理
转自:https://www.cnblogs.com/rjzheng/p/10841031.html 作者:孤独烟 引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?" ...