学习Python的建议

前言

Python是最容易入门的编程语言,没有之一。若是初学者接触的第一门语言是C或者C++,对他们来讲最难的不是语法,而是容易出现内存泄漏、指针等问题。有时候排查这些问题对初学者的打击很大,尤为是没掌握排查BUG技巧时。程序员

若是初学者接触的第一门语言是Python,学习曲线则会平滑得多,掌握一些基本语法和Python内置的数据结构,已经能够上手写一些小工具或者小型应用。这对初学者来讲,很是重要。由于学习的过程是一个突破温馨区的过程,会面临不少痛苦,若是学习过程得不到激励,很容易半途而废,相似咱们开玩笑说的「从入门到放弃」。Python还有不少优势:上手快,第三方库丰富,资料丰富,很容易作出“可见可得”的应用。好比你要拿C或者C++作web服务,这上手门槛就有点高了。因此不少工科学生,甚至是科班学生会问学了C/C++到底有什么用,由于想上手作一些“可见可得”的应用太难。Python就大不一样,你想搞Web开发?上来一个Flask框架立马就撸。想搞点数据分析?上来一个Panda+数据可视化,撸起来轻松愉快甚有快感。想抓取什么数据?你本身基于request撸一个小爬虫采集点网站信息,app信息都不是什么难事。 web

也是由于这样,学习Python的过程几乎接近“无痛”,有很好的学习正反馈过程,学一点知识就能作一点小东西,能看获得本身成长和进步。安利了这么多好处,来看看学Python分几个阶段吧。算法

1.基础知识

Python最基本的语言特性和语法:数据库

  • 变量
  • 数据类型与数据结构
  • 输入和输出
  • 运算符、表达式、语句
  • 控制流(顺序控制,选择控制和循环控制)
  • 面向过程编程
  • 面向对象编程
  • 异常处理
  • 组织代码
  • 标准库、第三方库

针对面向对象这一块须要重点的讲一下,为何会有面向对象?以及咱们如何设计面向对象系统?这个思考的过程有助于你理解面向对象编程思想。编程

能够说「一切皆对象」这句话普适性是很强的,你们都在玩的王者农药,里面每个对战英雄,每个野怪,每一张地图都是经过面向对象的思想构建起来的。若是一开始你以为太复杂,大可把用「分而治之」的思想把复杂的对象break down,分解成多个简单合理的对象。任何复杂的系统均可以由若干个简单可靠的系统组成,多个简单可靠的系统有序地组织起来是能够实现强大功能的。举个例子,还拿农药来讲,”英雄“是能够做为一个基类的对吧,每一个英雄都有血条,移动速度,AD,AP,物防,法扛等等。李白平A后裔一下,这是对象之间的通讯(或者说交互)。后裔放大打中李白,李白眩晕,这一系列的触发过程均可以经过面向对象来建模。segmentfault

在掌握了语法特色,掌握了面向对象的思想以后,咱们应该可以在控制台(windows或者mac的命令行)里边实现一个有意思的程序。这个程序应该解决现实生活中的一个实际问题。好比出现一个职位的发布和管理系统。有如下功能。咱们能够录入职位信息。保存到文件上。咱们还能够加载职位信息。按多种条件去查询,好比按关键字按城市。按薪资范围。按商圈工做年限等等。windows

在作这个的过程当中,本身须要设计一个很好的面向对象系统。也把Python里经常使用的语言基本特性都用到了。达到这个阶段算是勉强及格了吧,不过仅仅是在语言掌握层面。若是想当一个合格的研发工程师,还须要掌握不少其余技能。缓存

2. 进阶的阶段

如今的开发大部分是基于web的,好比app要调web接口,pc端确定也要调web接口,因此咱们不能光在控制台里面玩。这个时候须要了解,http协议和Python web开发。咱们能够重作前面提到的求职发布系统,学习基于Python web如何实现。这个时候你须要实现若干个接口:数据结构

用户端:架构

  • 用户注册
  • 用户登陆
  • 请求首页刷出默认的职位列表
  • 筛选职位列表

    • 根据城市
    • 根据关键字
    • 根据薪酬
    • 根据工做商圈

管理后台:

  • 登陆
  • 发布职位
  • 更新职位
  • 删除职位

为了实现以上接口,你须要弄清楚什么是GET,什么是POST请求,什么场景下用GET,什么场景用POST。你还须要明白一个Python web开发框架,要明白一个http请求到了web框架以后,框架作了什么事情,如何在里面实现业务逻辑。哪些数据是服务共享的,哪些数据是用户/请求独享的。

此外,应该学会Python如何操做数据库实现增删改查,大部分的任务都离不开增删改查。好比我提到的发布职位就是create的过程,更新就是update,还有删除是delete,读是read。江湖有一个戏称CRUD boy。

若是能顺利度过进阶阶段,你应该能触类旁通实现其余相似系统了。好比如今很火的分销,拼团,还有新闻Feeds等等。

好像我没怎么提数据结构和算法,这个要看我的追求。若是你要在最短期内学会Python开发,恐怕是没时间学好数据结构和算法了,能掌握自带的数据结构用法就行。若是你的学习时间充足,个人建议是必定要学数据结构和算法。为了之后长期的发展,为了人民币,必定要学好数据结构和算法,我简直苦口婆心地劝啊。

3. 工业界经验

最后一个阶段是实际的工业经验。这个阶段,你应该对公司用的基础架构,如RPC,数据库缓存消息系统中间件,烂熟于心。同时应该掌握最基本的系统设计的技巧。知道如何根据一个实际需求,设计一个高可用,高性能高扩展性的系统。

实际上我以为第一个阶段是最容易的,第二个阶段会碰到一些坑,有时候很差解决。在第二个阶段,你可能须要比较好的自学能力,或者有一个好的学长导师。第三个阶段须要比较体系化的训练和思考。

若是说你的系统设计能力ok,甚至经验丰富,再加上你不错的算法,你确定有一份好工做,薪资可能说多了显浮夸,但优秀的应届生不少人超过30w,甚至50w已是常态了。工做3-5年的过百万的也大有人在。

这个时代,程序员虽然辛苦了一点,但无疑碰上最好的时代了。

PS:辛苦是由于知识更新很快,行业发展也很快,逼着程序员也要往前走。保持学习才是从业者的基本素养,而不是掌握某门语言某门技术。

插播广告

最后来个巨硬的广告,近期凯威老师和SegmentFault正在联合推荐精品课,多是东半球最好的Python课~

该系列的第一节课:凯威教你学 Python(一):Python 的变量和源代码机制
该系列的第二节课:凯威教你学 Python(二):Python 的字符串和列表

图片描述

图片描述

相关文章
相关标签/搜索