任何编程语言的榜单上,前几位都少不了Python,并且其受欢迎程度非常稳定。Python的强大在于两个方面,一是其语言本身,虽然被"诟病”为胶水语言,但其"简单”的设计理念,无论是对于想尽快上手的入门者,还是处理问题非常复杂多样的老手,都使得其工作变得格外简单。

TIOBE 2017年6月排名

Python保持稳定的状态

分析Github上受欢迎的Python项目,发现其覆盖从基础库到网站开发,到分布式系统,到机器学习等各个方面,几乎任何问题都能找到对应的Python解决方案。也正式因为此,Python才能解决程序员几乎所有的问题。

Github热门Python库

WEB开发

Python Web开发框架

Flask、Django、Tornado,这三个框架比较的问题,在各种地方被讨论。三者各有利弊,关键是寻找解决自己问题最简单的方法。由于这三个平台设计的出发点不同,使得这三个平台分别擅长解决不同的问题。

Flask是一个非常小巧的微框架,设计理念就是简单,小巧,提供WEB开发的核心功能,智能路由,视图展示等等。而对于其它其它框架(说的就是Django)所提供的ORM等功能则需要使用Extension来支持。

Django则是另外的设计理念,希望提供全套服务,让使用者能非常"轻松”的开发解决方案,无论是博客,还是BBS,甚至如豆瓣般的更重型的网站,不需要如Flask般自己构建相关的功能。

在使用Flask和Django后,就有个体会,Flask容易入门,并且在构建项目的过程中,让项目设计者对自己平台内部架构非常了解,甚至会针对不同功能选型合适的,或者容易的解决方案。但这对于开发者的能力需要有较高要求,其选型,代码实现等方面的能力都决定了项目的好坏。而Django则是完全相反,其入门难度稍高,哪怕是开发一个非常简单的接口,也需要对里面各方面的设计理念有所了解,否则很难run起来,同时由于其一整套解决方案的设计,使得开发者只能依规则行事,改造,创新,解bug难度较高。但对于复杂的需求,其内部设计的一致性,稳定性,让其比Flask更受欢迎。

Tornado的主要出发点是设计一个高吞吐,高性能的web server。虽然他也实现了部分web框架的其他功能,但其为人所道的仍多是其异步IO的设计理念,比其他web框架相比,极大地提高了并发访问的能力。但也由于其异步的设计,导致传统框架很容易的功能,比如WSGI的支持就很难。

也正是这样的设计理念,使得Tornado大多用于偏后段的处理模块,而其不擅长的偏前端功能,可以配合其它程序。

运维开发

运维部署框架

运维研发是Python语言另一个大放异彩的场景,小到运维人员日常的脚本,大到一个运维系统。Python程序本身或者开源软件都能很简单支撑运维人员日常的工作。日常工作本身可能也就Shell能和它一比。

Saltstack解决了运维人员最常见的一个任务:部署。当机器规模不大时,自己实现一个脚本就可以将程序分发到不同机器上。当需要部署的规模增大时,出现问题的概率增加,部署不成功的例子常见,这个时候还是用一个很弱的脚本去完成部署,则会困难重重。Saltstack采用master-agent的模式,在每台机器上都安装友agent,master和agent间通过消息机制进行通信,在无异常的情况下,通过可靠的消息机制即可以保证部署成功,即使出现异常状况,也可以通过master或者agent的信息很快定位到是什么问题,以至于在程序中加逻辑解决问题,重新部署。

除了部署外,筛查线上状态也是运维人员一个常见的操作。通过saltstack能很轻松的给机器上的agent发送命令,执行完筛查程序返回结果,然后再借助Django等WEB架构,可以轻松地开发出一个日常信息筛查展示的平台。

Ansible是另一个完成类似功能的程序。其设计理念更加简单,就是借助SSH的功能,将每个程序拷贝到每台主机上,这样部署的工作就不会依赖于类似agent这样程序的覆盖范围。或者更简单点,其实可以看做我们自己实现程序的一个稳定版本(假设运维认为一般情况下,自己开发的部署程序都是SSH到机器上)。

Ansible的缺点也非常明显,就是SSH被禁或者sshd程序异常的情况下,部署肯定是失败的。另外类似于筛查这样的工作,也会更复杂些,需要先将程序部署到机器上,然后运行获得结果,并传回中控机。

资源监控也是运维人员的日常工作,通过资源的异常及时发现业务可能受损的情况。资源监控设计到底层的实现,经常是由C来实现的,但是常见的资源监控平台或者软件ganglia、zabbix等都会支持Python的扩展。也就是说,即使没有Python实现的热门资源监控平台,Python也能让你很快的拓展这些框架或者平台。

数据展示

matplotlib应该是Python领域中最知名的图形框架了,通过它的名字也可以看出,他要追求matlab那样的数据展示能力。其支持的图形多种多样,柱状图,折线图,散点图,二维图,三维图,各种数学曲线等等,通过matplotlib的接口即可以轻松实现。

matplotlib也体现了Python简洁的思想,定义画图、定义坐标轴、传入需要画图的数据,matplotlib就会显示对应的图形。它另一个更大的有点,即是在其官网上有丰富的例子,点击图片即可查看实现的源码,设计的也很讨巧。

matplotlib数据展示

seaborn是一个基于matplotlib而成的,更优秀的数据展示库,对于matplotlib图形的一些小的"瑕疵”进行了优化。并且seaborn实现的图要比matplotlib更温柔,更现代(也就是好看点)。

其他

Python还会帮程序员解决搜索系统、科学计算、机器学习、常见编码、"泡妹子”等问题,待续...

文章来源于: 科技前沿先知道,版权归原作者所有,如有侵权,请联系 guanwang@163yun.com 删除。

python所有软件-这些Python开源软件解决了程序员几乎所有的问题相关推荐

  1. 软件协会发布开源软件与商业软件知识产权报告

        日前,中国软件行业协会发布了<有关开放源代码软件与商业软件知识产权的研究报告>(以下简称<研究报告>),明确提出"反对政府直接支持或干预任何形式的软件商业模式 ...

  2. 它们养活了一票国产软件!这些开源软件你知道吗

    点击上方"民工哥技术之路",选择"设为星标" 回复"1024"获取独家整理的学习资料! 现在各种国产软件已经牢牢占据了国内市场,无论是在浏览 ...

  3. 它们养活了一票国产软件!这些开源软件你知道吗?

    原文:http://pcedu.pconline.com.cn/916/9161990.html 「本文仅供技术学习参考」 ❝ 现在各种国产软件已经牢牢占据了国内市场,无论是在浏览器.下载软件.压缩软 ...

  4. python中fac函数是什么意思_好程序员Python教程系列之递归函数与匿名函数调用

    原标题:好程序员Python教程系列之递归函数与匿名函数调用 好程序员Python教程系列递归函数与匿名函数调用,函数是Python技术学习中重要的一个环节,深入掌握该阶段的知识内容,对于Python ...

  5. Python学习笔记(3)---B站黑马程序员

    Python学习笔记(1)-B站黑马程序员 Python学习笔记(2)-B站黑马程序员 Python学习笔记(3)-B站黑马程序员 文章目录 五.项目实战--飞机大战 001-Pycharm中安装py ...

  6. python电脑发音-Python之父发声:我们能为“996”程序员做什么?

    4月7日,知名开发者,编程语言Python之父Guido van Rossum在Python讨论区针对国内程序员996工作制发声. Guido发文称,"我们能为中国的"996&qu ...

  7. Python学习笔记(1)---B站黑马程序员

    Python学习笔记(1)-B站黑马程序员 Python学习笔记(2)-B站黑马程序员 Python学习笔记(3)-B站黑马程序员 文章目录 Linux基础 Python基础 一.Python介绍 0 ...

  8. 计算机技术与软件专业技术资格 (水平) 考试 - 初级 程序员 - 考试用书

    计算机技术与软件专业技术资格 (水平) 考试 - 初级 程序员 - 考试用书 全国计算机技术与软件专业技术资格水平考试指定用书 1. 程序员考试大纲 1.1. 考试科目设置 (1) 计算机与软件工程基 ...

  9. 开源的恶果,程序员正在「自掘坟墓」

    大家好,我是校长. 最近开源社区里发生了一件大事,在 IT 圈引起了轰动,那就是:faker.js 开源项目的作者删除了该项目的所有代码. 01 事情是这样的 作为一个著名的 nodejs 工具库,F ...

  10. 有人说中文编辑是解决中国程序员编程效率的秘密武器,请问他是一个银弹吗?...

    一."银弹" 首先在这里解释一下"银弹"的概念,顾名思义就是银质的子弹(Silver Bullet),是古老的欧洲民间传说中能杀死狼人的利器.当然现实中是没有狼 ...

最新文章

  1. 中国安全态势越来越好,专访山石网科CSO蒋东毅 | 拟合
  2. dede 会员中心编辑添加和修改图集的时候自定义的字段模型显示不出来的问题...
  3. 智能系统课件@丛爽老师-中国科学技术大学自动化系
  4. 51nod-猴猴的比赛【莫队,线段树】
  5. 关于郭安定 - 了解我更多
  6. 前端学习(1559):ng-classt隔行变色
  7. 浅谈SDN中的OverLay与UnderLay技术
  8. sql并行查询oracle,oracle 查看并行sql语句的并行数量
  9. pcl画圆球_PCL 可视化-阿里云开发者社区
  10. 自学python到什么程度就可以工作-Python学到什么程度可以面试工作?
  11. 小区停车管理系统(SQL,JDBC)
  12. kindlefire刷安卓系统_Kindle Fire平板刷入原生Android 4.0系统教程
  13. u12无线网卡linux驱动装不上,ubutu16.04 安装Tenda u12无线网卡驱动
  14. 达梦数据库备份还原使用
  15. SCI收录期刊——采矿和选矿
  16. 在pc电脑上使用地图(百度地图、高德地图等),地图软件是怎么获取pc电脑的所在位置的?
  17. 微服务化之无状态化和容器化
  18. 制作美联英语在线VIP页面----特色服务模块
  19. 【转】如何检测wifi信号强度? -- 不错
  20. stl文件怎么用Java读取_将STEP文件转换为STL

热门文章

  1. c语言计算1+2+3+4+......n
  2. 剑指offer面试题50. 第一个只出现一次的字符(哈希表)
  3. OpenCV总结:目标跟踪之CamShift算法
  4. Python 中的 - 是什么意思
  5. 总结const、readonly、static三者的区别【收藏、转载】20190614
  6. NodeMCU学习(四):与其他设备通信
  7. 第七部分:小插曲,Deferred
  8. 任务管理器中arcsom.exe和arcsoc.exe的个数问题
  9. SecureCRT或XShell软件
  10. detours安装和使用