学python要怎么做?
在国内,豆瓣从一开始就把Python作为web开发的基础语言,知乎的整个架构也是基于Python语言,使得web开发在国内发展的非常好。
虽然Python目前还不是Web开发的首选,但它一直占据着不可忽视的地位。Python中有各种各样的Web框架,无论是简单自由搭配的微框架,还是功能齐全的大型MVC框架,在需要敏捷开发的Web项目中也非常有优势。Python提供的大规模Web服务被广泛使用(或已经被广泛使用),包括知乎、豆瓣、Dropbox等网站。再加上Python本身的“胶水”特性,在需要大规模性能级计算的时候,很容易集成其他语言,同时保留了Web开发的轻便和快捷。
此外,Python中还有大量“开箱即用”的模块,用于连接其他各种网站和其他相关功能。如果你想开发一个微信微信官方账号相关的功能,微信-sdk/weixin-python之类的包可以让你几乎完全不用去关注文档中提到的各种服务器交互的细节,不用去关注功能实现。
目前,在中国Python web开发中有两种技术栈:
(1)姜戈
Django是一个先进的敏捷web开发框架。如果你学会了,你可以很快建立一个网站。当然,基于ruby的ruby on Rails显然比网站的速度要快,但是Django有性能优秀的优势,更适合国内网站的应用场景。国外著名的图片社区Pinterest早期也是基于Django开发的,遭受了用户快速增长的冲击。所以,如果你想快速开发一个网站,并且考虑到APP客户端的API调用需求,Django是可以信赖的。
(2)烧瓶
与Django相比,Flask是一个轻量级的web框架。Flask最大的优势就是性能优越,适合用手机客户端开发后台API服务。基于Flask的Restful API服务在中国非常流行,需求也非常大。知名公司如百度、网易、小米、陌陌等都有基于Flask的应用部署。当然,如果想做传统网站,还是建议用Django。Flask有后端和API的优势,不适合搭建全功能网站。
2网络爬虫
网络爬虫是Python中常见的场景。国际上,google早期使用Python语言作为网络爬虫的基础,促进了Python语言的应用和发展。过去,中国许多人使用收藏者来搜索在线内容。现在用Python收集网上信息比以前容易多了。
Python在这方面积累了很多工具,无论是模拟HTTP请求的Requests,解析HTML DOM的PyQuery/BeautifulSoup,自动化分布式抓取任务的Scrapy,还是简化数据库访问的各种ORM,都让Python成为数据抓取的首选语言之一。特别是爬取后的数据分析计算,是Python最擅长的领域,非常容易集成。目前Python中流行的网络爬虫框架是scrapy,非常强大。
3人工智能和机器学习
人工智能是现在非常热的方向,AI热潮让Python语言的未来充满无限潜力。现在发布的几个很有影响力的AI框架,大多是Python实现。为什么?
因为Python足够动态,有足够的性能,这是AI技术要求的技术特征。比如一些基于Python的深度学习库,深度学习方向,机器学习方向,自然语言处理方向的网站,基本都是通过Python实现的。机器学习,尤其是现在流行的深度学习,其工具框架大多提供Python接口。Python在科学计算领域一直有着良好的口碑,其简洁明了的语法和丰富的计算工具深受该领域开发者的喜爱。
早在深度学习和Tensorflow流行之前,Python中就有scikit-learn,可以轻松完成几乎所有的机器学习模型。从经典数据集下载几行简单的代码就可以建立模型。有了熊猫、matplotlib等工具,可以轻松调整。
Tensorflow、PyTorch、MXNet、Keras等深度学习框架极大地拓展了机器学习的可能性。使用Keras编写一个手写数字识别的深度学习网络,只需要几十行代码,借助底层实现就可以方便地调用包括GPU在内的大量资源来完成工作。
值得一提的是,无论什么框架,Python都只是作为前端描述语言,实际计算都是通过底层C/C++实现的。Python可以方便地引入和使用C/C++项目和库,从而扩展其功能和性能。在如此大规模的计算中,Python被广泛应用于机器学习领域的一个重要原因就是让开发者更加注重逻辑,从内存分配等复杂的工作中解脱出来。
4数据分析和处理
Python有完整的数据分析和处理的生态环境。对于“大数据”分析涉及的分布式计算、数据可视化和数据库操作,Python中有成熟的模块。对于Hadoop-MapReduce和Spark,可以直接用Python来完成计算逻辑。这对数据科学家和数据工程师来说都非常方便。
5服务器运维等小工具
Python对于服务器运维也是非常重要的。目前几乎所有的Linux发行版都有自己的Python解释器,所以在Linux服务器上使用Python脚本进行批量文件部署和操作调整成为了非常好的选择。Python还包含了很多方便的工具,从规范ssh/sftp的paramiko,到监控服务的supervisor,再到bazel等构建工具,甚至还有C++的conan等包管理工具。Python提供了全面的工具集合,在此基础上结合Web,开发便于运维的工具会变得非常简单。
更有意思的是,Python社区的开发者还做了itchat之类的开发工具包,你可以用微信来管理服务器或者各种服务的运行。想想吧。一个微信机器人,可以在每天某个时间某个地方出现异常的时候,报告服务器或者程序的运行情况,甚至包括matplotlib/seaborn绘制的图表,一目了然,你给它发一句简单的话就可以完成服务器的调整。
想学的童鞋可以加一条企鹅裙。前三名是227,中间是435,后三名是450。可以免费分享经验,用视频资料讲解行情。
6桌面程序
Python还可以用于桌面软件开发(比如sublime text等。)甚至移动开发(见kivy)。Python简单方便,工具包齐全的环境可以大大减轻开发者的负担。著名的UI框架QT有PyQT,Python语言的实现版本。Python简单易用,QT优雅,可以轻松开发复杂接口的桌面程序,轻松实现跨平台特性。
7多媒体应用
可以使用Python的PIL、Piddle、ReportLab等模块处理图像、声音、视频、动画,也可以使用Python生成动态图表和统计分析图表。此外,PyOpenGl模块可用于非常快速有效地编写3D场景。