hello,大家好,之前分享了一个关于Python新人们对于Python岗位的咨询与学习发展,那么本文将之前的分享稍作总结分享出来。
Python是一门面向对象的解释型语言,在这20多年的时间来,Python的各种生态越来越齐备,加上其自身简洁的语法,这些年python的使用量逐年上升(2019。6月已经排行前三)
Python主流的几大领域 与 发展方向 (薪资参考 boss职聘与猎聘与拉钩)
1:人工智能
集多项技术于一身,使机器可以感受、理解、学习并采取行动,无论是自食其力还是参与人类活动。
python的代表模块 tensorflow
前置项: 高数为基础,算法要求高,python基础
薪资范围: 15k~50k 左右
给Python新人发展之路的小建议
2:数据分析
指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论,并对数据加以详细研究和概括总结的过程
Python的代表模块:numpy panda
前置项:python基础 数据结构思路要求清晰
薪资范围:15k~40k 左右
3:爬虫
一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
python的代表模块 scrapy beatuifulsoup 等
前置项 python基础
薪资范围:15k~35k 左右
4:web开发
最传统的 c s 开发(client and service)如今的无论是互联网还是物联通,只要不是本机操作,一定不会绕过 web service,以至于成为所有行业几乎都会接触的领域,也最为基础
python 代表模块 django flask tornado 等
前置项: python 基础
薪资范围: 15k~35k 左右
还有很多的岗位,比如 量化交易,图像识别,软件开发,游戏开发,区块链等,都有python的岗位。
学习 Python 的 一些必用知识
1: 选择python3.5以上版本进行学习:因为python2到2020年官方将停止维护,并且3.5版本之前的python3性能上还有所缺陷,这里推荐 python3.6与python3.7版本
2: 在学习了基本的python语法之后,必学的python库如下:
TCP的使用 socket 库:以上四个方向没有一个是一定不会用到这个库的,在进行数据采集的时候,如果想快速传输数据,socket 无疑是一个非常高效的选择
http 的使用 request 库:以上四个方向必会的库, 尤其是 爬虫与web开发,http请求几乎是一定存在于所有项目之中的,了解http协议 与 http包是非常重要的,那么我们可以以 request这个库为媒介,进行深入学习了解,当然从性能上来说,我感觉tornado的httpclient可能性能更好一些。也推荐大家使用。
多线程的使用 gevent thread mutiprocess: 如果想更效率的执行你的项目,无论是数据分析,爬虫,机器学习,并发的执行一定是一个高效率的工作方式,于是以上三个库也是python必学的库,那么作为web开发,如果想支持高并发,多进程 多线程的部署也是必须的,如果更好的提高并发基础是web service开发非常重要的一堂课。 从事python岗位的同学应该知道 gil是什么,使得python的多线程不那么高效。如果 想关闭gil全局锁,可以考虑一下 pypy,但关闭真的好吗?有待商榷。
db sdk 的使用,在学习 一个后端语言的时候,至少要学会使用2 个 db,一个 关系型数据库 (如 mysql),一个非关系型数据库 (如 redis, mongodb)这是 作为数据存储最基础的两个库,根据业务的不同 使用不同种类的数据库。
其实呢,没有绝对的等级划分,但是硬要说的话呢,我个人对于是否已经摆脱新手,进入一个初级阶段甚至再高一点的评判,并不一定准确,但我认为可以作为一个参考给大家(掌握基础知识是必备的,不作为评级使用):
3:初级和非初级的一个重要的分水岭是解决问题的能力;当程序报错的时候,能够查看错误 根据错误自己寻找答案,就已经达到初级以上的水平,因为可以确定,你有自己解决问题的能力。
4:初级和中级的一个分水岭;拿到一个sdk 能够读懂源码,理解程序的执行逻辑,而非拿来主义直接使用了事。比如 阿里云有些sdk的方法很恶心,写的不是很清晰,你从他的文档几乎看不出什么,这时候如果你不会看sdk源码,基本此项目你已经挂了。所以反之可以看源码你将知道你要用什么功能 ,怎么用。甚至说不定还能找出他的一些bug或重写他的一个功能。举例,pymysq 取出数据库的时间是一个datetime类型,但是在json传输的时候,datetime无法被序列化
以 web开发为例 的一个 事业发展规划
第一阶段:学会 python基础,并学会 web开发的基本开发 业务开发(如使用 django框架),学会使用db的sdk ,学会和客户端交互(application/json)
第二阶段:学会前端开发,html5 css3 javascript 可以独立开发前后端业务(锦上添花 学会 vue 学会 webpack 等 更高效 更主流的 开发框架与构建工具),前端与app的交互与service的交互
第三阶段:前后端可用性(全栈开发):
后端:部署高可用服务,至少保证多地多活(即多地部署,有1服务可用即可保证服务可用),数据库高并发的实现(如集群化,读写分离,缓存穿透等)还有很多很多…… 对服务进行监控与维护
前端:避免前端v8引擎优化失效,更高效的使用异步,如何可以减少更多的流量(移动端),如何更好的保证前端的代码安全等
第四阶段:参与项目设计,参与项目业务架构,输出项目各种图:如 架构图,类图,时序图等,参与初期项目语言,框架选型,代码结构制定;对代码标准进行确定;对后期代码上线前的标准审核进行确定,攻克项目技术难点,开发项目核心代码,带路项目组员进行开发;-------架构
最后呢,几点建议给大家
1:多练多写多思考,不求人,锻炼自己解决问题的能力
2:坚持一门语言做主语言,当你认为对这一门语言掌握做够好的时候,再去拓展别的语言
3:请爱上你的主语言~
以上是一个不太成熟的 但应该对新人朋友们有些参考价值的分享。希望大家有帮助,比心~
················