Python到底适合什么后端团队和项目?

前言

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全套学习资料已经上传网盘,朋友们如果需要可以微信扫描下方二维码输入“领取资料” 即可自动领取
或者

点此链接】领取

好文推荐

了解python的前景:https://blog.csdn.net/xiqng17111342931/article/details/127705925

了解python的副业:https://blog.csdn.net/xiqng17111342931/article/details/127872402

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当面试python后端开发时,面试官通常会关注以下几个方面: 1. Python基础知识:确保你对Python的基本语法、数据类型、函数、类和模块等有良好的理解。 2. Web开发框架:熟悉至少一种常用的Python Web框架(如Django、Flask等),能够使用框架搭建Web应用。 3. 数据库和ORM:了解SQL语言和关系型数据库(如MySQL、PostgreSQL)的基础知识,熟悉至少一种ORM库(如SQLAlchemy)的使用。 4. RESTful API设计:理解RESTful API的基本原则和设计规范,能够设计和实现符合RESTful风格的API接口。 5. 缓存和消息队列:了解常用的缓存技术(如Redis)和消息队列(如RabbitMQ),能够在项目中使用它们提高性能和可扩展性。 6. 测试和调试:熟悉单元测试和集成测试的基本概念和工具(如unittest、pytest),能够编写高质量的测试用例。 7. 性能优化和调优:了解性能优化的基本原则和方法,能够对代码和系统进行性能分析和调优。 8. 安全性和权限控制:了解常见的Web安全漏洞(如跨站脚本攻击、SQL注入等)和防御措施,能够设计和实现安全的Web应用。 9. 版本控制和协作工具:熟悉Git等版本控制工具的基本使用,能够与团队成员协作开发项目。 此外,面试官可能还会问到你在前端开发、操作系统、网络等相关知识方面的了解情况,以及一些具体项目经验和解决实际问题的能力。准备面试时,建议你复习这些知识点,并通过实际项目经验来展示你的技能和能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值