专栏名称: Python程序员杂谈
关注PythonWeb开发及相关领域的方方面面,分享在实际工作中遇到的问题及解决方案。关注the5fire,了解Python开发的点点滴滴。
目录
相关文章推荐
中核集团  ·  信息量巨大!中核集团两会代表委员答记者问 ·  6 小时前  
中国食品药品监管杂志  ·  科普 | ... ·  2 天前  
中国食品药品监管杂志  ·  关注 | ... ·  2 天前  
中国药闻  ·  徐景和在湖南调研化妆品监管工作 ·  3 天前  
51好读  ›  专栏  ›  Python程序员杂谈

看不懂 Python 代码陷入自我怀疑?有人却学得不亦乐乎?

Python程序员杂谈  · 公众号  ·  · 2019-11-13 22:30

正文

对于入门 Python 来说, 很多初学者通过一些编程书籍或市面上的各种入门课程视频, 对于 Python 的语法与结构有所了解, 也开始尝试做一些小的程序, 但在进一步尝试的路上却陷入了近似深渊一样的体验——

当自己去 参照其它的 开发者的 程序 时, 完全不知如何下手, 或者明明知道这一段代码 是用于何种用途的, 却迟迟无法 运用得当....


进而开始怀疑自己, 我到底会不会用 Python, 到底有没有学会 Python ?


困难总是存在的, 这 就像那些编程学习之路上, 你所踩过的, 将踩的以及默默在等候着你的坑一样, 无法逃避.


在往期的课程每周例会上, 有学习 Python 入门的蟒营同学提出一个问题:

当我知道我要实现什么功能, 然后我去 Google 搜索, 可以找到相关语句支撑。

但对于语句本身是怎么运作的, 我了解得很少。

所以, 当满足复杂功能的一整段语句(其中涉及到结构和单个语句)出现时, 我基本上看不明白。




冲突


这个问题, 在编程初学者中极具典型性, 小白学会了搜索大法, 但面对搜索到的信息仍 无法理解和入门 , 怎么破? 就如同婴儿面对大餐却无法自己动手吃一般.

对小白来说, 要 如何阅读别人的代码, 如何理解进而自己写好代码 ?



点解?


那蟒营怎么「看」这个问题呢?


首先, 是关于阅读别人的代码这一点——

这种感觉在 进入任何一个陌生领域知识时, 其实都是相似的 :

好比开始学习英文时:

刚刚知道字母以及如何查字典,
掌握的单词还没超过 42 个时,
看英文名著当然是根本看不下的。

几乎每一句什么意思, 都要查字典..


那么, 我们如何跨过这一阶段的? 以往的学习经历告诉我们:

  • 多查字典

  • 多看文章

  • 多写文章

  • 多背名句
    ...

是的, 非常非常 以及 老土 的方法.

对于编程来说, 也一样.



读代码


具体到 Python 这门语言的学习,Python 对国人有着非常友好的一面:


  • Python 是已知语言中最接近自然英文的开发语言之一

  • 如果将变量名设计好, 脚本几乎能视为一篇比较怪的作文来看

  • 回溯到源头, Python 原型 ABC 语言的设计目标就是儿童教育...


总而言之, 阅读代码本身就是编程的一个重要环节 .

在阅读他人代码的过程中, 吸收软件设计/工程管理/行业惯用/命名学/... 的知识.

当然, 在代码的选取方面, 我们应当优先去阅读的, 是优秀 Python 作品的代码.





有同学可能会问, 什么样的代码才称得上「 优秀 」呢?


粗暴的说, GitHub 中 star 超过 1000 的一般可以算是.

又其实, 当前蟒营 Py 班同学间互访问代码分支, 也是一种锻炼阅读代码的能力.


因为, 同学们完成的代码都是为实现相同功能:

  • 只是各自用了自己掌握知识点的组

  • 可以说就是回字的 4 种写法


这对你来说, 可能就不是看细节, 而是多看整体: 大家如何组织代码的? 如何切分函式的? 如何设计变量名的?...

所谓「 三人行必有我师 」, 从阅读同学的代码中, 了解到相同功能的不同实现方式, 也会无意识的思索哪种方式好在哪里, 不足在哪里, 我选择用哪种, 各种决断能力「嗯哼」.



好代码如何写



我们回过头来, 再来审视一下本文开头那个问题所提到的难点:

所以, 当满足复杂功能的一整段语句出现时, 我基本上看不明白。


这里其实隐含着一点, 这段满足复杂功能的语句, 也有可能并不是友好易懂的「优秀代码」,  或者其实是非常好的代码, 但回答者并没有通俗易懂的呈现出来, 看不明白不一定是小白的锅. 但小白确实是看不出来这整段语句是否是好代码.

到底什么是好代码? 如何写出别人也容易看懂的好代码? 在此, 需要明确的是:

代码第一读者是人, 而不是机器.

简洁直白的代码才是好代码.

但是, 「直白」的定义, 是随着学习在变化的, 就好比说英文学习历程中:

开始时, 只有 this is, that is, 这种 4 个单词以内固定句式的对自己算直白.
但随着经验/语感的积累, 感觉直白的句子,其实在逐渐变得复杂起来..

所以, 当前这种「看不明白」状态是自然的, 必然的, 不可以忽略的...

那, 问题又来了, 自己作为一个初学者 , 如何快速冲破这种拘束状态?


蟒营如何教?


蟒营 Python 课程 , 在学员学习时可以提供的切实辅助就是:

在这个坚持学习编程的过程中, 任何自己无法理解的知识点/形式/模块/概念/...., 都可以及时来问, 以 Issue 的正式形式 来驱动问题的解决.

此处, 重要的事情再重复三遍:



   
  • 以 Issue 的正式形式

  • 以 Issue 的正式形式

  • 以 Issue 的正式形式


... 是的, 正如 Eric Steven Raymond 在《 提问的智慧 》 中给出的经验.

但是切记, 前提是:


只有你认真, 大家才可能认真.

认真的力量是很惊人的, 试过就知道.

除此之外, 无它.


什么是蟒营?


所以, 什么是蟒营呢?

正如隔壁队长说的:
一个十分开放的课程, 开放到它只给你一个框架, 内容完全由自己来填写, 任何形式任何方法都可以得到包容, 也没有人说「哎呀这个应该这样做」, 他完全靠自己实际操作来触发一系列隐藏任务, 而大妈则是「和蔼」的站在背后不时的看看你, 指引你, 帮助你把这个发现的问题狠狠的踩下去, 推动你去弄个明白. 这就是蟒营.






请到「今天看啥」查看全文