人工智能(AI)来临!我们才要学 Python?又是如何选择开发工具的

如果大家身处互联网,一定能够切身地感受到 python 语言的流行程度。python 语言由于其简单易学、语法优美、应用领域广泛等诸多优点,俘获了大批的粉丝。python是一门脚本言语,因为能将其他各种编程言语写的模块粘接在一同,也被称作胶水言语。强悍的功能和使用的广泛性使其变得越来越多的关注,最近就有许多朋友来问我想了解python的用处和未来发展方向……那干脆今日就和大家一同梳理一下python言语到底能做哪些事。
1、web开发
在国内,豆瓣一开始就使用python作为web开发的编程语言,知乎的整个架构也是根据python语言,这使得web开发这块在国内发展的很不错。尽管目前python并不是做web开发的首选,但一直都占有不可忽视的一席。python中有各类web结构,无论是简略而能够自由搭配的微结构还是全功用的大型mvc结构都一应俱全,这在需求灵敏开发的web项目中也是十分具有优势的。我广泛使用(或从前广泛使用)python提供的大型web服务包括知乎、豆瓣、dropbox等网站。加之python自身的“胶水”特性,很容易完成在需求大规模性能级核算时整合其它言语,一起保留web开发时的轻便便利。
使用python中的flask搭建一个web版的hello world,也只需求几行而已:
from flask import flask app = flask(__name__) @app.route(/) def hello(): return hello world! if __name__ == '__main__': app.run()
除此之外,python中还有很多“开箱即用”的模块,用于与各种其它网站的对接等相关功用。如果希望开发个微信大众号相关功,wechat-sdk/weixin-python等包,能够使你几乎彻底不用管文档中提及的各种服务器交互细节,专注于功用完成即能完成开发。目前,国内的python web开发主要有两个技能栈:
2、django
django是一个高级的灵敏web开发结构,如果学会了,撸一个网站很快。当然如果纯粹比撸网站的速度,根据ruby的ruby on rails明显更快,但是django有一个优势就是性能优异,更合适国内网站的使用场景。国外的著名图片社区pinterest前期也是根据django开发的,承受了用户快速增长的冲击。所以说如果你想快速开发一个网站,还能统筹app客户端的api调用需求,django是能够信赖的。
3、 flask
相关于django,flask则是一个轻量级的web结构,flask的最大的优势是性能优越,合适合作手机客户端开发后台api服务。国内根据flask的restful api服务这快很火,也是需求最大的。闻名的比如百度、网易、小米、陌陌等等许多公司都有根据flask的使用布置。当然,如果你想做一个传统的web网站,还是建议使用django,flask的优势是后端、api,不合适构建全功用网站。
4、网络爬虫
网络爬虫是python比较常用的一个场景,国际上,google在前期很多地使用python言语作为网络爬虫的根底,带动了整个python言语的使用发展。以前国内许多人用采集器搜刮网上的内容,现在用python收集网上的信息比以前容易许多了。
python在这个方面有许多东西上的堆集,无论是用于模仿http请求的requests、用于html dom解析的pyquery/beautifulsoup、用于自动化分布式爬取任务的scrapy,还是用于最简化数据库访问的各种orm,都使得python成为数据爬取的首选言语之一。特别是,爬取后的数据剖析与核算是python最为擅长的范畴,十分容易整合。目前python比较流行的网络爬虫结构是功用十分强大的scrapy。
5、人工智能(ai)与机器学习
人工智能是现在十分火的一个方向,ai热潮让python言语的未来充满了无限的潜力。现在释放出来的几个十分有影响力的ai结构,大多是python的完成,为什么呢?因为python足够动态、具有足够性能,这是ai技能所需求的技能特点。比如根据python的深度学习库、深度学习方向、机器学习方向、自然言语处理方向的一些网站基本都是经过python来完成的。
机器学习,尤其是现在火爆的深度学习,其东西结构大都提供了python接口。python在科学核算范畴一直有着较好的名誉,其简洁清晰的语法以及丰富的核算东西,深受此范畴开发者喜欢。
早在深度学习以及tensorflow等结构流行之前,python中即有scikit-learn,能够很便利地完成几乎一切机器学习模型,从经典数据集下载到构建模型只需求简略的几行代码。合作pandas、matplotlib等东西,能很简略地进行调整。
而tensorflow、pytorch、mxnet、keras等深度学习结构更是极大地拓展了机器学习的可能。使用keras编写一个手写数字识别的深度学习网络仅仅需求寥寥数十行代码,即可借助底层完成,便利地调用包括gpu在内的很多资源完成工作。
值得一提的是,无论什么结构,python仅仅作为前端描绘用的言语,实践核算则是经过底层的c/c++完成。因为python能很便利地引入和使用c/c++项目和库,然后完成功用和性能上的扩展,这样的大规模核算中,让开发者更关注逻辑于数据自身,而从内存分配等冗杂工作中解放出来,是python被广泛使用到机器学习范畴的重要原因。
6、数据剖析处理
数据剖析处理方面,python有很齐备的生态环境。“大数据”剖析中涉及到的分布式核算、数据可视化、数据库操作等,python中都有老练的模块能够挑选完成其功用。关于hadoop-mapreduce和spark,都能够直接使用python完成核算逻辑。这无论关于数据科学家还是关于数据工程师而言都是十分便利的。
其中比如seaborn这样的可视化库,能够仅仅使用一两行就对数据进行绘图,而利用pandas和numpy、scipy则能够简略地对很多数据进行筛选、回归等核算。而后续杂乱核算中,对接机器学习相关算法,或许提供web访问接口,或是完成长途调用接口,都十分简略
python在数据剖析处理中典型的使用量化交易,简略来说就是说借助于强悍的数学模型数据剖析来完成利益最大化损失最小化,目前已经有许多很好的结构能够使用。
7、服务器运维及其它小东西
python关于服务器运维而言也有十分重要的用处。因为目前几乎一切linux发行版中都自带了python解释器,使用python脚本进行批量化的文件布置和运转调整都成了linux服务器上很不错的挑选。python中也包括许多便利的东西,从调控ssh/sftp用的paramiko,到监控服务用的supervisor,再到bazel等构建东西,乃至conan等用于c++的包管理东西,python提供了全方位的东西集合,而在这根底上,结合web,开发便利运维的东西会变得十分简略。
更有意思的是,python社区的开发者们还制造了比如itchat这样的开发东西包,你大能够用微信来管理服务器或是各种服务的运转。想想看,一个微信机器人,能够在出现异常时,又或许每天固定时刻汇报服务器或是程序运转状况,乃至包括用matplotlib/seaborn制造的图表,一目了然,而你对它发上简简略单一句话,即可完成对服务器的调整。
8、桌面程序
除此之外,python也能够用于桌面软件开发(如sublime text等),乃至移动端开发(参看kivy)。python简洁便利,各种东西包齐全的环境,能大幅度减少开发者的担负。著名的ui结构qt有python言语的完成版本pyqt。python简略易用的特性加上qt的优雅,能够很轻松的开发界面杂乱的桌面程序,并且能轻松完成跨渠道特性。
9、多媒体使用
能够用python里边的pil、piddle、reportlab 等模块对图象、声响、视频、动画等进行处理,还能够用python生成动态图表和统计剖析图表。别的,还能够利用pyopengl模块十分快速有用的编写出三维场景。
从前为“阿贝斯(abyss)”、“星际迷航(star trek)”、“indiana jones”等超级大片制造过特技和动画的工业光魔公司(industrial light)就采用python进行商业动画制造。然而在很早以前,python就是一种游戏编程的辅助东西,在《星球大战》的制造中扮演了重要的人物,现在,彻底能够经过python写出十分棒的游戏程序。
最好通过实际项目练手。如果仅是纸上谈兵,可能过目就忘,所以最好是要有真实的项目做。注意,真实项目不一定非要是商业项目,例如自己动手搭建网站,其关键是要核心功能完整。最好能找到一个已经会 python 的人。问他一点学习规划的建议,然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会如何更好地提问。