设为首页收藏本站
查看: 62|回复: 0

[PHP] 如何系统地自学一门Python语言

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2017-5-14 02:44:00 | 显示全部楼层 |阅读模式
    零基础情况下,学一门语言充实下自己,Python,简洁、优美、容易使用,是一个很好的选择。那么如何系统地自学Python呢?
    有的人非常想学好Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?
    幸运的是,Python是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。
    Python的设计哲学之一就是简单易学,体现在两个方面:
    语法简洁明了:相对Ruby和Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。
    切入点很多:Python可以让你可以做很多事情,科学计算和数据分析、爬虫、Web网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且愿意投入时间的。
    废话不多说,学会一门语言的捷径只有一个:Getting Started
    1、起步阶段
    任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。任何一种编程语言都包含两个部分:硬知识和软知识,起步阶段的主要任务是掌握硬知识。
    1、硬知识
    “硬知识”指的是编程语言的语法、算法和数据结构、编程范式等,例如:变量和类型、循环语句、分支、函数、类。这部分知识也是具有普适性的,看上去是掌握了一种语法,实际是建立了一种思维。例如:让一个Java程序员去学习Python,他可以很快的将Java中的学到的面向对象的知识map到Python中来,因此能够快速掌握Python中面向对象的特性。
    如果你是刚开始学习编程的新手,一本可靠的语法书是非常重要的。它看上去可能非常枯燥乏味,但对于建立稳固的编程思维是必不可少。
    下面列出了一些适合初学者入门的教学材料:
    ❖「笨方法学Python」:http://learnpythonthehardway.org/book/
    这本书在讲解Python的语法成分时,还附带大量可实践的例子,非常适合快速起步。
    ❖「The Hitchhiker’s Guide to Python!」:The Hitchhiker’s Guide to Python!
    这本指南着重于Python的最佳实践,不管你是Python专家还是新手,都能获得极大的帮助。
    ❖「Python官方文档」:Our Documentation
    实践中大部分问题,都可以在官方文档中找到答案。
    ❖ 辅助工具:Python Tutor
    一个Python对象可视化的项目,用图形辅助你理解Python中的各种概念。
    Python的哲学:
    用一种方法,最好是只有一种方法来做一件事。
    学习也是一样,虽然推荐了多种学习资料,但实际学习的时候,最好只选择其中的一个,坚持看完。
    必要的时候,可能需要阅读讲解数据结构和算法的书,这些知识对于理解和使用Python中的对象模型有着很大的帮助。

    2、软知识
    “软知识”则是特定语言环境下的语法技巧、类库的使用、IDE的选择等等。这一部分,即使完全不了解不会使用,也不会妨碍你去编程,只不过写出的程序,看上去显得“傻”了些。
    对这些知识的学习,取决于你尝试解决的问题的领域和深度。对初学者而言,起步阶段极易走火,或者在选择Python版本时徘徊不决,一会儿看2.7一会儿又转到3.0,或者徜徉在类库的大海中无法自拔,Scrapy,Numpy,Django什么都要试试,或者参与编辑器圣战、大括号缩进探究、操作系统辩论赛等无意义活动,或者整天跪舔语法糖,老想着怎么一行代码把所有的事情做完,或者去构想圣洁的性能安全通用性健壮性全部满分的解决方案。
    很多“大牛”都会告诫初学者,用这个用那个,少走弯路,这样反而把初学者推向了真正的弯路。
    还不如告诉初学者,学习本来就是个需要你去走弯路出Bug,只能脚踏实地,没有奇迹只有狗屎的过程。
    选择一个方向先走下去,哪怕脏丑差,走不动了再看看有没有更好的解决途径。
    自己走了弯路,你才知道这么做的好处,才能理解为什么人们可以手写状态机去匹配却偏要发明正则表达式,为什么面向过程可以解决却偏要面向对象,为什么我可以操纵每一根指针却偏要自动管理内存,为什么我可以嵌套回调却偏要用Promise...
    更重要的时,你会明白,高层次的解决方法都是对低层次的封装,并不是任何情况下都是最有效最合适的。
    技术涌进就像波浪一样,那些陈旧的封存已久的技术,消退了迟早还会涌回的。就像现在移动端应用、手游和HTML5的火热,某些方面不正在重演过去PC的那些历史么?
    因此,不要担心自己走错路误了终身,坚持并保持进步才是正道。
    起步阶段的核心任务是掌握硬知识,软知识做适当了解,有了稳固的根,粗壮的枝干,才能长出浓密的叶子,结出甜美的果实。
    2、发展阶段
    完成了基础知识的学习,必定会感到一阵空虚,怀疑这些语法知识是不是真的有用。
    没错,你的怀疑是非常正确的。要让Python发挥出它的价值,当然不能停留在语法层面。
    发展阶段的核心任务,就是“跳出Python,拥抱世界”。
    在你面前会有多个分支:科学计算和数据分析、爬虫、Web网站、游戏、命令行实用工具等等等等,这些都不是仅仅知道Python语法就能解决的问题。
    拿爬虫举例,如果你对计算机网络,HTTP协议,HTML,文本编码,JSON一无所知,你能做好这部分的工作么?而你在起步阶段的基础知识也同样重要,如果你连循环递归怎么写都还要查文档,连BFS都不知道怎么实现,这就像工匠做石凳每次起锤都要思考锤子怎么使用一样,非常低效。
    在这个阶段,不可避免要接触大量类库,阅读大量书籍的。
    °1类库方面
    「Awesome Python项目」:vinta/awesome-python · GitHub
    这里列出了你在尝试解决各种实际问题时,Python社区已有的工具型类库,如下图所示:
    每个人学编程的道路都是不一样的,其实大都殊途同归,没有迷路的人只有不能坚持的人。虽然听上去有点鸡汤,但是这是事实。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表