前言
1、我的Python从业经历
本人从2015年开始基本上都在使用Python语言,主要做扫描器、分布式任务、后台接口、AI、图像和3D点阵处理、数据接收处理等等,也待过几个公司,所在部门基本上也是多种语言的开发小组都有,统计了下如下,比重主要依据相关语言的人数来定
(文末送读者福利)
2、感受到的其他语言开发者的“善意”提醒
由于所在部门有多种语言开发团队,时间长了,熟悉的同事会比较好奇为什么我们会用Python来做产品化的东西,主要问题(Python劣势)集中在这几个观点里面
Python不是做自动化脚本的么
很多公司可能测试地位低于开发,然后测试使用Python,开发使用JAVA或者C语言的概率很高,于是就形成一个观念,Python是测试用的,测试代码不行,所以Python不行
Python这么慢开发的产品能用么
Python运算速度极慢,比Java还慢10倍以上,比C就慢更多了,开发的产品怎么用?
Python是低级的语言,很烂
Python语言没有参数约束,没有类型约束,很多Python开发也不具备OOP或者设计模式的思想,很多人看到的Python代码很烂,给人感觉Python语言也比较低级
Python的并发是假的
不管是Python开发或者其他语言开发者,都知道Python的PIL锁,知道Python的并发是假并发
Python是借着AI和大数据的东风才有一席之地吧
Python入门简单,所以新兴技术领域,AI和大数据科学家使用Python来快速实现自己的算法思想,要是这些科学家其他语言功底强一些,是不是就没Python什么事情了
3、为Python正名,它到底适合做什么项目
我15年之前7年接触的是C和C#,JAVA也会涉及到代码阅读,刚开始接触Python,也会按照C的思路来开发Python项目,待了这么多公司,也接触到各种开发团队和各种语言来实现不同的项目,现在也不像之前特别维护自己的开发语言了,Python确实有很多弊端,也有他的优势,Python肯定不是最好的语言,但适合的项目也很多。
纯IO型业务,非计算型
我想说的IO型指的泛化的IO,包括如下几类
网络IO类,作为客户端,进行爬虫、网络嗅探,或者比较传统的CURD业务,这些业务都有一个特点,数据需要从服务端获取,但基本不需要做什么运算,这部分业务流程大部分的时延在服务端响应和网络延时上。
文件IO类,例如读取磁盘文件,或者是写文件,几乎没有计算,另外Linux上的socket数据处理TCP或者UDP,不管是作为服务端还是客户端,只是简单的文件传输,不涉及文件内容的处理。
Python的如下特性,能够完美契合这些业务需求,在极少的开发代码量下,效率能够媲美JAVA或者C,资源占用也不大。此类IO型等待的,一般使用线程池并发,或者协程异步都能满足需求,不需要使用进程池。直接使用线程池也能比较方便的控制并发量和运行,不需要并发细节。
Python的AI框架
目前比较流行的Tensorflow,Yolo,Resnet,Paddle等等AI框架,直接使用Python就能调用,以图形领域为例,图形加载,矩阵相关运算有AI计算库 opencv和numpy等,如果计算频繁计算量大,还有发布的GPU版本。
其他所有非计算的小型项目
Python语言本身的计算性能,由于其动态语言特性,永远比JAVA/C/GO等编译型语言会差很多,这是毋庸置疑的,只要项目中涉及到大量的数值计算,那Python肯定是不适合的。反之,对于非计算类型,或者计算可以使用numpy等矩阵运算库完成的项目,均可以使用Python来完成。
4、Python适合什么团队
很多公司Python开发可能只有一个人,不存在团队的概念,只是将Python开发来作为其他项目的补充,衔接各个项目组中一些不重要的模块。那已经有成熟的JAVA或者C团队,人员充足,也没有什么新兴方向的业务需求,不考虑缩小团队规模,或者以现有人力做更多小项目,那维持现状是最好的。 资金和人力预算充足,团队扩充不在乎成本,项目也是传统的CURD,不用考虑Python。
选用Python组建团队,那首要目标肯定是低人力成本和快速的高产出,但跟其他语言一样,不是说几千块钱工资随便招一个后端开发,就能肩负起稳定的产品化项目。说Python适合什么团队,本质是什么样的Python团队才是好团队,需要具备哪些要素,才能为公司带来高效率的产出,个人经验有以下一些方面
经验丰富Python技术过硬的带头人
需要产品化经验丰富,不光是语言开发,在架构、稳定性、高可用等方面都需要有实际的经验,不能只有Python脚本工具开发的经验,很多外包项目都具备这些特定。
也需要有切实的Python经验,每个语言和它的生态有其特点,不是说JAVA经验丰富就能规划好庞大的Python产品级开发任务。
像Java和C一样范式化编程
Python语言太灵活, 但作为生产项目开发,也必须借鉴JAVA/C等的模型、结构、固定变量类型和形参等等方式,团队开发过程中,这些范式非常重要,一个人自由编程没关系,但团队人多了,简单的函数参数、类型和接口类型这些不约束,那项目很容易崩盘。
不要试图用Python完成一切
Python主要还是后端语言,作为后端它也不能完成一切,特别是存在大量计算的CPU密集型模块,这些运算可以采用C/go/java等完成,当然如果你的项目中不存在这些场景,那么恭喜你,Python完全适合你的项目和团队。
读者福利:知道你对Python感兴趣,还准备了这套python学习资料
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括:Python永久使用安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。带你从零基础系统性的学好Python!
零基础Python学习资源介绍
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
👉Python必备开发工具👈
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取
好文推荐
了解python的前景:https://blog.csdn.net/xiqng17111342931/article/details/127705925
了解python的副业:https://blog.csdn.net/xiqng17111342931/article/details/127872402