学习python需要什么基础?

子供部屋


从我本人的经历来说,我在大学学习的是文科专业,但到现在从事编程已经近15年了,也由一名程序员做到了技术负责人,从最早的Basic到C、再到C++、PHP,现在工作中主要用Python,没有参加过任何的培训班,全凭自己的兴趣自学起来的,因此我可负责任的说,学习Python并不需要什么基础知识。事实上,学习任何一门编程语言都没有硬性的要求需要哪些基础知识。
但是从另一方面讲,学习编程语言很象学习自然语言,在学习英语的过程中,你去了解了英语常见词汇和语法其实并不难,但是如果你想熟练的使用英语同老外对话、使用英语写出优美的文章却是另外一回事。
同其它计算机语言比,学习Python是相对简单的,因为它的设计理念本身就很简洁,语法也非常接近自然语言,特别是Python舍弃了大括号式的代码块({}),而使用缩进去定义代码块,让代码的可读性提高了一个大台阶。下图是使用Python解汉诺塔的代码, 不含注释一共7行,简洁明了。
如果你学习Python只是想了解它的语法和数据类型、写一些好玩的小程序,本文不是为你准备的,后面内容就可以略过了。但如果您想学会Python并用它写出真正实用的程序,强烈建议你读完本文,因为想要深入的掌握任何一门编程语言(不限于Python)并使用在实际工作中,以下三个基本功是必不可少的。

一、数据结构与算法

数据结构是计算机专业的一门基础学科,它不依赖于任何一种编程语言,而算法是操作和处理数据结构的一系列方法。对于非计算机专业想要接触计算机语言的人来说,掌握这些知识是非常有必要的,千万不要觉得这些是科班出生的人才应该学的东西。我编程生涯前两年,没有仔细学习过数据结构,更没有研究过算法,总觉得实用主义是解决一切问题的王道,而自从研读了严蔚敏老师的《数据结构(C语言版)》以后,感觉如同打通了任督二脉,之前觉得复杂的问题突然变得简单,之前无法理解的一些问题抽丝剥茧般的呈现在脑海里,也为后续的工作打下了坚实的基础。
但是对于非科班出身的人,了解复杂的数据结构并非易事,不过这些年互联网发展如此之快,给我们这些想要深入学习编程知识的人提供了很多超级棒的工具,比如visualgo(https://visualgo.net/zh),可以使用这个网站在线的去熟悉和操作各种常见的数据结构,每个数据结构相关的算法也用动画的形式非常直观的呈现在我们面前。想想当初啃课本的痛苦,现在的学生们不要太幸福好嘛[哭]。

二、面向对象的编程思想

交给你一件事,你把它分解成第一步做A、B、C,第二步接着做D、E、F,第三步第四步所有事情都由自己一条线做下去,直到最后一步把事情完成,这就是面向过程的思想。这种方式处理的事情最好不要太复杂,一件复杂的事情会让整个过程变得千头万绪,很难保证处理的正确性和效率。换作面向对象的方法,交给你一件事,你会安排给N个人去做,第一个人处理A部分,第二个人处理B,每个人定义好需要什么材料、按照什么标准交付,最终再由一个人去组织好每个人的交付物就OK了,这样的话每个人专心干一件事,分工明确、过程简单、接口清晰,处理复杂的问题毫无压力。当然,上面的场景只涉及到了面向对象中封装的概念,Python中还有继承、多态等概念。
编程语言最初都是面向过程的,到现在面向过程的C语言仍然是很流行的。面向过程的编程思想很清晰,代码简洁,效率高,很多底层的算法都是由过程式的编程实现的,一些专注网站开发的语言如PHP也在大量使用面向过程的编程方式。但是问题在于,我们现在需要用编程语言解决的问题越来越复杂, 很多入门的编程教程并不注重面向对象思想的培养,所以初学者在遇到复杂问题时感觉无从下手,或者写出的代码冗长难以调试和维护。
因此,我的建议是,大家在学习编程的最初,就应当刻意去训练面向对象的编程思想,提高解决复杂问题的能力。

三、代码质量与安全性

当你同一个团队一起工作时,代码的质量显得尤为重要。代码质量一方面指代码解决问题的效率和灵活性,另一方面也指代码的规范程度。写得再精巧的代码,如果你的团队成员看不明白,对整个项目组来说也是不合格的,更何况,一段没有注释的代码,一个月过后自己都有可能很难读懂。此外,代码的安全性也是一个非常值得重视的问题,特别是在开发Web应用或者网络服务的时候,一个SQL注入漏洞极有可能会让公司泄漏大量敏感数据从而造成非常严重的经济损失。下图是一张被黑客攻占的网站的截图,你肯定不希望自己负责的项目也会变成这样。
因此,在学习编程语言的初期就养成良好的编码习惯,而且应当学习一些安全编码的基本知识,了解如何写出安全的代码。Python官方在编程规范方面做了很多工作,《Style Guid for Python Code(PEP8)》(https://www.python.org/dev/peps/pep-0008/)是每一个Python初学者都应该读的一篇文档,从最初就按照规范做,养成良好的习惯比什么都重要。OWASP组织发布的《OWASP安全编码规范快速参考》(http://www.owasp.org.cn/owasp-project/download/OWASP_SCP_Quick_Reference_GuideChinese.pdf)是一个与技术无关的通用软件安全编码规范,它包括了软件开发安全原则的介绍和关键术语列表,能够帮助你快速了解安全编码应当遵循的规范。

最后要提的是,做真正实用的东西,是需要和业务相关的。例如,你需要做Web应用开发需要了解Django、Flask等Web框架的知识,HTML、Javascript等前端开发的知识,MySQL、MongoDB等数据库知识,以及SQLAlchemy、MongoEngine等数据库框架的相关知识等等;如果你想用Python做爬虫需要了解HTML、Java引擎、Dom、Ajax等知识,以及Scrapy等爬虫框架等等。

入门Python容易,然而想成长为一名Python编程高手却是需要付出很多艰辛的。


ivan2018


零基础也是可以学习的,初学的时候可以跟着老师的视频教程,边看视频,边敲代码,然后再根据自己的的想法去实现一遍,每天都坚持练习,保证一定的代码量。

在学习的过程中,把遇到的问题,重点,难点都记录下来,定期回去复习,梳理笔记,归纳总结。

之前了解过 “ 如鹏网 ”的Python课程体系,挺详细的,可以参考一下。

第一部分:Python 语言基础

第二部分:数据库开发

第三部分:web前端

第四部分:Python web开发

第五部分:Python web项目(截图可访问如鹏网官网)

第六部分:Linux

第七部分:NoSQL

第八部分:数据可视化

第九部分:爬虫技术

第十部分:人工智能

具体的可以到 如鹏网 官网上去了解一下,有网络的地方就可以学习,有问题随时提问,老师实时在线答疑。每个章节的后面都有相应的练习题和面试口才题,需要以录音的方式进行提交,会有专门的老师进行批改,指出回答的不到位的地方,为以后的面试做准备,有新的课程更新了,也是可以继续申请了来学习的,口碑不错,基本上都是慕名而去的。


这样学编程不枯燥


  1. 首先,你需要有一颗耐得住寂寞的心,说白了也是需要耐心和毅力,须知程序员在工作的过程中是孤单的(长期对着电脑),你会遇到各种各样的bug(需要耐心去解决),不断的学习充电(需要毅力)。都说程序员是薪水收入较高的一个行业,但拿多少钱干多少事,这也告诉你需要花费更多的时间在这上面,相对于其他行业来讲。如果没有毅力和耐心的话,那么就不建议做程序员了。如果有的话那么继续看下面。
  2. 如果你有其他语言的编程基础,比如你会c/c++/java之类的,那么恭喜你,你学习python会轻松许多。你可以找一两本比较经典的Python教材,跟着教材学习即可。
  3. 如果你没有其他语言的编程基础,那么可能你学习起来会比较吃力,因为刚进入一个新的世界你总是感觉陌生的,你可以去网上找一些视频教程,配合一两本入门教材,一步一步的把语言基础学好,这点是非常重要的,非常重要的,非常重要的!重要的事情说三遍!!!!基础非常重要,你把基础打扎实了,日后才能走的顺利!不然你将遇到各种各样莫名其妙的困恼,长此以往对你的信心和成长会造成一定打击。这里你可以网上搜一下廖雪峰的教程。
  4. 在学习完Python之后,你还需要学习至少一门其他的语言,不需要多么深入,但你至少得基本了解,这对你深入学习Python是有很大但作用但,毕竟触类旁通。语言终究只是一门工具,用来解决问题但,当你了解其他编程语言之后,或许你就能发现更好但解决办法。
  5. 算法和数据结构。编写一个良好的程序需要你了解常用的算法和数据结构,可能你不会经常去自己写算法,但理解常用但算法和数据结构能够让你更好但理解Python中的一些数据结构:list,dict等。同时也能便于你写出高效易用的算法。如果想要练习算法,可以试着去letcode刷刷题。
  6. 计算机网络的相关知识。尽管Python不大会接触到底层的开发。但是了解网络的基本原理是非常有必要的。这个你可以去找一本网络书籍看一看。
  7. linux系统。大部分的Python应用都是部署在linux服务器上的。你的工作中可以不使用linux系统,但是你必须有一点了解,起码常用的命令得会。这里推荐你看鸟哥的linux私房菜。
  8. 数据库相关的知识,你至少得会一种关系型数据库。MySQL等都行。
  9. 至于其他的Git、软件开发文档等之类的在你前面学习这些知识的适合你就可以试着去学习,并养成一种好的开发习惯。这对于你融入公司团队并高效开发是非常有好处的。
  10. 说点自己的体会,我以前认为人与人之间的交流太复杂了,还是和计算机打交道好。所以我不善言辞,只完成自己的任务,跟别人交流比较少。这让我在日后的工作里吃了亏。所以建议你程序员不能闭门造车。我们需要跟别人交流,测试、产品等需要交流才能更好的做好一个产品。
  11. 最后,来个鸡汤语言。很多事情不是你看到希望才坚持,而是坚持了才看到希望。喜欢Python或者想学习Python并以此为职业的话,那么就加油吧,只要自己努力了,想必Python也不会让你失望的。
  12. PS:我不是一个入行很多年的开发者,所以有很多说的不对的地方,仅供参考。

新农民的编程之旅


  1. 编程最重要的是逻辑思维,如果你逻辑混乱,你写出来的代码就毫无可读性可言。

  2. 拿最通俗的比喻来说,编程犹如写作文,每个人从上学到毕业至少写过不少于500篇作文吧。有的人写的作文结构清晰,语句通顺,被称赞是一篇好的作文,可以给不同的人借鉴。但有的人写出来的作文前后不连贯,事情描述不清晰,这每个人都深有体会。

  3. 以前,很多人都说想学习编程那么数学一定要好,我不这么认为,根据个人这四五年的编程经验来说,用到数学的地方很少,除非涉及到算法。但往往工作中,涉及到算法的都很少,任何一个程序员不可能是天天在写算法。所以,算法不是主要的,语文才是关键。

  4. 程序90%的结构是在进行数据处理和逻辑交互,在多人的团队协作中你需要熟悉工程中的大部分代码,需要理解代码的语义,因此对于一个人的理解能力和逻辑要求很高。

  5. python作为高级语言来说,能做到跨平台,跨行业,确实很了不起,好不夸张的说算是一统。

  6. 所以,只要你逻辑不混乱,上学期间写过优秀的作文,就放心的来学习python吧。


python宠儿


不需要,小学生可以学


分享到:


相關文章: