无处不在的Python,python介绍及课程简介

作者介绍:comyn,李学明。python大神,原大众点评运维平台架构师,腾讯广告部核心运维专家,饿了么Python运维开发高级总监,现就职于海淘公司。多年一线运维经验,参与过架构改造、平台迁移、自动化建设等运维核心项目,对开源系统都有深入理解,如LVS、Haproxy、MogileFS、Varnish、Nginx等,曾修改iptables内核实现实时流量镜像复制,奠定了大型公司流量无损压力测试模型。被广大网友称之为“扫地僧”,无所不能,从装机、到写代码、到千万PV 架构细节、都有深入研究。

021-python基础-python介绍及课程简介,021-python-python

一、PYTHON擅长的领域

WEB开发

      DjangopyramidTornadoBottleFlaskWebPy  

网络编程

  TwistedRequestsScrapyParamiko

科学运算

  SciPYPandasIpython

GUI图形开发

  wxPythonPyQTKivy

运维自动化

  OpenStackSaltStackAnsible腾讯蓝鲸

 

二、运维会了开发后可以干什么?

  • 帮助公司开发各种自动化工具,定制开发各种开源软件;
  •  帮助评估和优化业务技术架构;
  • 开发公司的内部办公系统、CRM、网站等;
  • 做个全栈工程师,全栈就是指什么都能做的样子。

三、课程介绍

疗程1:语言基础(5-6周)

  •   数据类型;
  •   流程控制;
  •   常用模块;
  •   函数、迭代器、装饰器;
  •   递归、迭代、反射;
  •   面向对象编程;
  •   购物车程序;
  •   ATM信用卡程序开发;
  •   计算器程序开发;
  •   模拟人生游戏开发。

疗程2:网络编程(4-5周)

  •   Socket c/s编程、Twisted异步网络框架、网络爬虫开发
  •   多线程、多进程、协程gevent、selectpollepoll
  •   生产者消费者模型
  • 审计堡垒机系统开发
  • FTP服务器开发
  • 批量命令、文件分布工具
  • RabbitMQ消息队列、SqlAlchemy ORM
  • 类SaltStack配置管理工具开发
  • ReidsMemCacheMongoDB缓存数据库

疗程3:Web基础开发(3-4周)

  • Html/CSS基础
  • Dom编程
  • 原生JS学习
  • Jquery/EasyUi/AngulaJS
  • Ajax异步加载
  • Highchart画图
  • Bootstrap

疗程4:算法&设计模式(1周)

  • 冒泡、二叉树、哈希、拆半等常见算法学习
  • 工厂模式、单例模式、享元模式、代理模式等常用设计模式学习

疗程5:PY WEB框架(5周)

  • MVC框架讲解
  • 自行开发一个WEB框架
  • DjangoTornadoFlaskBottleWebPy框架学习
  • Session中间件ORMCookieCSRFFROM......
  • Restful API框架
  • 权限管理后台开发
  • 开发BBS论坛
  • 开发WEB聊天室

疗程6:项目实战篇(6周)

  • 购物商场开发
  • 主机管理+任务编排+运维审计堡垒机开发
  • 分布式Nagion/Zabbix监控产品开发
  • CMDB资产管理开发
  • 基于用户视角的网站访问质量监测分析平台开发
  • Docker自动化管理平台开发
  • OpenStack二次开发

四、python是一门怎样的语言?

编程语言主要从以下几个角度为进行分类,编译型和解释型静态语言和动态语言强类型定义语言和弱类型定义语言,每个分类代表什么意思呢,我们一起来看一下。

1、编译与解释

编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时的控制权在用户程序。

解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。

编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.

2、动态语言和静态语言
通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。

(1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

(2)静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

3、强类型定义语言和弱类型定义语言

(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

  强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
  例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。

通过上面这些介绍,我们可以得出,python是一门动态解释性的强类型定义语言。

 

五、python的优缺点

先看优点

再看缺点:

  当然,Python还有一些其它的小缺点,在这就不一一列举了,我想说的是,任何一门语言都不是完美的,都有擅长和不擅长做的事情,建议各位不要拿一个语言的劣势去跟另一个语言的优势来去比较,语言只是一个工具,是实现程序设计师思想的工具,就像我们之前中学学几何时,有的时候需要要圆规,有的时候需要用三角尺一样,拿相应的工具去做它最擅长的事才是正确的选择。

 

 

 

 

 

  

一、PYTHON擅长的领域 WEB开发 DjangopyramidTornadoBottleFlaskWebPy 网络编程 TwistedRequestsScrap...

1991年2月20号,后来被称为“仁慈的独裁者”的Guido van Rossum首次发布Python,当时这还只是作为一个名为Amoeba的操作系统项目中的辅助工具,Python甚至没有被正式立项。没有人会想到,Amoeba项目在1996年就停止开发,而Python却在20多年后发展成为最流行的编程语言之一。

为什么是要学编程

image.png

君子求诸己,小人求诸人

Guido van Rossum设计Python的初衷,是希望用它来简化系统管理工具的开发,这个目标确实达到了,大部分Linux操作系统以及macOS都内置Python,更不用说还有Fabric,Ansible, Saltstack这些基于Python系统的管理工具。然而,只把主业做好,从来不是Python的唯一目标。世界这么大,Python要去看看。

不知道大家有没有感受到云计算的威胁?我已经深深的感受到了来自公有云的威胁,虽然国内云环境还不成气候,但威胁无时不在。

不务正业的Python

当Python不再仅仅作为系统管理工具,迈出跨界的第一步时,就再也停不下来,从Web开发到科学计算,从3D建模到人工智能,从嵌入式开发到云计算和大数据,几乎每一个角落,都能看到Python的身影。

按照当前的发展趋势,运维,或者说中级运维的需求会越来越少,为什么会这样?因为随着自动化程度的提高,尤其像docker这样的容器技术的发展,更多的运维沦为操作工,而这是初级运维的事,我花5k请一个应届生能操作得很好,而且还听话,我干嘛要花15k去雇你。

系统管理工具

Python从一开始就是为了提高系统管理效率而开发的。内置的os模块可以在兼容大部分主流操作系统的情况下,提供基本一致的操作方式,系统管理员的脚本只需要写一次,就可以运行在不同的操作系统上。借助Python简洁高效的语法,Python在复杂系统管理任务上的开发效率要远远高于Shell,同时执行效率也是远高于需要不停进程切换的Shell。为了可以使用常用的Linux命令行工具,David Beazley用Python在几天之内在Windows上开发了一套Linux常用的工具集。

对于复杂的系统管理工作,目前流行的配置管理工具,如Fabric,Ansible,Saltstack等,可以让运维人员使用几行命令,让成百上千台服务器俯首帖耳。随着DevOps运动的发展,“基础设施即代码”的理念越来越深入人心,借助于molecule或者testinfra这样的工具,开发者可以像运行单元测试一样,对基础设施的配置进行测试。

image.png

然而,也并非所有运维都沦为操作工,那些在某一领域有深入研究的专家,在需要他的地方,永远是块宝,这样的人,无须我多说,属于行业里拔尖的那一小撮,不经过一番磨练,常人难以抵达那个高度。

Web开发

全世界第一个网站在1989年上线,而万维网(World Wide Web)在1994年被发明出来。可以说,Python是和互联网一起长大的。作为动态语言,并且具有更高的抽象层次的Python和Perl,很快就被开发者们发现更适合用于开发网站,并在早期互联网的兴起过程中发挥重要作用。

随着互联网的发展,很多以互联网为生的编程语言被发明出来,比如Java,PHP,Ruby等,逐渐超越了Python和Perl这些前辈。不过Python在Web开发领域仍然占有一席之地。比如著名的一站式Web框架Django,轻巧的Flask,高并发性能的Tornado等。一些著名的网站,也是在Python技术的支持下运行着,比如Youtube、Reddit、Pinterest、Dropbox、豆瓣等。

说到这里,大家该开始灰心丧气了,其实没必要,我为什么不能成为拔尖的那一小撮呢?

科学计算

在Web技术大行其道,Java、PHP等编程语言来势汹汹之时,Python的注意力却没有完全放在Web上面,随随便便的就把先发优势给放弃,转而搞科学计算去了。

Python在设计之初的一个理念是,尽可能的用英语或者高中代数中约定的表达方式来编程,所以尽管一开始的应用场景并没有考虑科学计算,但学术界却盯上了Python。1995年,一个研究如何让Python支持高效矩阵运算的小组成立,Python的创始人——Guido van Rossum也在这个小组之中,为了让Python能够更好地支持矩阵操作,还专门设计和修改了一些Python语法。就在这一年,Numeric数值计算库发布,在2006年,Numeric正式改名叫做NumPy。

image.png

进入新世纪,围绕NumPy,更多科学计算相关的工具包被开发出来,比如用于科学计算的SciPy,用于符号计算的SymPy,用于数据分析的Pandas,用于数据可视化的Matplotlib,以及可以实时画图的交互式开发环境IPython Notebook等。在Matlab等专业软件主导整个科学计算领域多年之后,Python用近10年的时间,在学术界赢得了一席之地。而当其他通用编程语言在Web浪潮中厮杀结束,回头也想要到科学计算中抢一块领地时,却发现事情已经变得比当年要难得多了。

成功没有捷径,但有的路好走一点,有的路难走一点,而通往高级运维的路,学一门编程语言可能是最好走的一条路。

云计算

在后互联网时代,云计算和大数据是被提起最多的两个概念。互联网的普及,带来了信息生产和交换成本的大幅降低,也因此导致了信息大爆炸。为了进一步降低成本,并释放数据的价值,云计算和大数据技术应运而生。

提到云计算,不得不提的就是OpenStack,目前已经成为了事实上的开源私有云平台标准。OpenStack选择Python作为主要开发语言,其最主要的原因,是Python作为胶水语言,可以和操作系统很好的交互,同时集成其他语言编写的工具库也很容易,而且Python自身的生态足够健壮,像分布式任务管理,Web开发等都能够很好的支撑。出于同样的原因,目前市场份额最大的公有云平台AWS在发布之初就提供Python SDK支持。

因为它一步一个脚印,你看得到。这句话怎么理解呢?我说我的一个小故事,在我刚毕业那段时间,我花了两个月时间去优化一个系统,所有PHP模块静态编译,甚至操作系统都换成了getoo,能静态编译的都静态编译了,最终卓有成效,平均响应时间从3秒提高到了2.8秒。这是何等的沮丧。

大数据

大数据技术的兴起,让很多新技术有了露脸的机会。比如Scala、R、Julia这些语言,曾经都是小众语言,但因为他们在大数据方面的优势,吸引了大量的开发者。除了这些小众语言之外,Java和Python算是在传统强势编程语言中没有掉队的两个。

Python的不掉队,要得益于其在科学计算领域的积累,比如Pandas和SciPy,这些曾经用在学术界的工具,在大数据处理中同样变得重要。因此,像Spark, H2O这样的大数据处理工具,核心部分并不是Python编写,但为了满足工具使用者的需求,都花了巨大精力来开发Python接口。除此之外,完全基于Python的工具,虽然不多,但还是存在,比如Airbnb开发的数据可视化工具superset和任务编排工具airflow。

image.png

后来,当我开始编程的时候,我每天,甚至每小时,我都能看到我的效果,虽然也有起伏,但一路上风景都很好。

仿真模拟

在程序员圈子里一提到Python,第一反应就是“上手简单”。正是由于简单,每个人都会写一点,就算不会写,也可以看懂,因此大家并不以会Python为多么骄傲的事情。相比Python,程序员们更愿意炫耀自己擅长Clojure或者Haskell这样相对复杂的编程语言。

不过简单也有简单的好。正是由于上手简单,让Python成为各种仿真模拟软件首选的脚本语言。比如大名鼎鼎的图片处理工具GIMP,3D模型制作工具3ds Max,Blender,电影特效工具Houdini, Maya,电影后期合成工具Nuke等等,都以Python作为脚本。

编程是一种创造,在创造的过程中,你能体会到造物主的乐趣。而且能给你启发。当我在程序的世界里徜徉一段时间之后,回头看我当年所作的优化,很多曾经难以理解的原理,瞬间清晰明了,因为我真正从怎么创造它的角度去看,去思考了,当你真正的想过怎么去创造,那么你必然明白为什么会这样。

人工智能

自从AlphaGo战胜李世乭开始,人工智能就火得一塌糊涂。然而,人工智能并不是什么新概念,其历史已经超过了半个世纪。在人工智能领域过去这几十年的发展中,传统的主流编程语言明明是Lisp,而后起之秀也是像Prolog这样的语言。但是当这一波人工智能真正开始流行起来时,人们发现,那些流行的框架和工具,要么是用Python写的,比如Theano,要么是C++写的,但是Python作为接口语言,比如TensorFlow,Caffe,MxNet等。仅有的非Python框架Torch,在2017年也抵不住压力,开发了PyTorch。

因为编程是一种创造,所以你总是能看清最本质的东西。

其他

在算法交易和量化投资领域,Python是最佳选择之一。

在嵌入式领域,广受欢迎的程序员玩具树莓派,选择Python作为主要编程接口。

在软件开发管理中,构建工具Scons和事务追踪工具Trac虽然不算特别流行,但也处于活跃的状态。

尽管Python的主要应用场景都在命令行,但不代表其不能做桌面软件开发,借助于PyQt和Kivy这些图形库,Python也可以开发出漂亮的桌面软件。

借用一句流行语:Python这么厉害,咋不上天呢?

事实上,NASA确实在使用Python来开发软件,主要是用于系统集成和卫星、火箭等的测试自动化方面。

[图片上传失败...(image-101f2c-1514355103274)]

为什么是Python

软件开发的万金油

看似Python没有在哪个领域成为最好的编程语言,但是Python在各个领域都数得上号。从最初的系统管理到互联网时代,云计算和大数据时代,再到现在的人工智能时代,只有“不务正业”的Python,在每一波浪潮之中都在。

在领域细分的时代,像Python这样的通而不专的语言在每一个领域之内收到的重视都不如领域中的主要语言。然而时代在变,数字化浪潮伴随着人工智能与物联网的东风,汹涌而来,企业为了能够快速应对,不得不做出改变。

业务没有线上与线下之分,只有已经数字化和即将数字化之分。

为了跟上需求的变化,原本的“分析-设计-开发-集成-测试-上线”这个瀑布式开发流程被不断压缩。在敏捷软件开发运动的推动下,首先是开发和测试的界限不再明确;后来DevOps运动兴起,开发与运维之间的墙被打破;实时大数据架构和数据驱动业务的出现,让曾经原本相对独立的数据团队,也要更紧密的参与到业务开发中。

当所有的角色都在同一个团队中,为了一个业务目标而写代码的时候,用同样的语言进行交流就变得异常重要。这时候,不掉队的Python,优势就显现出来了。“不务正业”的Python曾在不同的领域中都占有一席之地,这让分属于不同的部门、不同角色的团队成员有机会使用Python来统一工作语言。不论是开发、测试、运维,还是数据科学家,Python都是一个虽然不是最好、但还不错的选择。

Python是目前为止,上手最快的一门语言,而且它刚好够用

低成本试错的最佳选择

曾经,编程本身就是一项业务;现在,编程只是一个用来实现想法的工具。当年可以因为一个新概念,炒出很多新语言,比如面向对象技术的出现,并没有给企业的业务带来什么巨大创新,但却掀起了一波技术浪潮;而现在,一项新技术被提出来,企业首先要考虑能够在业务上带来什么收益。

像人工智能这样的新概念(或者说是老概念新提法),对于企业来说,本身的门槛相对较高,业务收益尚不明朗,如果要投入大量的人力和资金去学习全新的技术,对企业来说,风险是非常大的。然而为了创新,企业不能故步自封。尤其是作为追赶者或者初创企业,在互联网赢家通吃的规则下,创新甚至和企业的生死息息相关。因此,低成本试错是企业成功的关键。

利用开源软件或云服务,避免重新创造轮子,对于企业降低试错成本是非常有效果的。因为Python语言本身非常适合作为服务集成的“胶水”语言,所以很多开源软件和云服务都选择Python作为接口语言(比如Spark、TensorFlow、AWS等)。如果企业希望利用这些技术进行创新试验,Python是一个非常好的选择。

前面我们说了学习编程是一条通往成功的相对好走的路,然而,我现在要说的是,到目前为止,Python是这条路中最好走的一条。

Python之后是谁?

Python的流行,并不是从一开始就设计好的剧本。只是在特定的时间,对于编程语言有特定的需求,而刚好Python满足这样的需求。Python作为一门编程语言,并不比其他编程语言更优秀。

技术没有最好,只有最合适。

如果要预测未来什么编程语言更流行,就必须要知道未来对于编程语言有什么样的需求。当前对于编程语言的需求是能够让不同角色使用,并且可以集成或者重用已有技术或服务,而Python上手快,可读性高,和其他语言的互通性好,刚好能够满足这样的需求。

如果未来某一天,对于程序执行速度的关注,超过了其他需求,也许C语言或者Go语言,会成为更流行的语言;如果是对于编程语言的抽象能力有更高要求,也许Elixir、Scala或者Clojure会更加流行;如果是对程序员数量的需求更高,就需要降低入门难度,也许Java还会再次流行;再或者,未来对于编程的需求,对于目前所有编程语言来说,都没办法满足,就会有新的编程语言出现。所以,未来的编程会走向何方,要看企业对于编程提出什么样的需求。

Python不是最快的语言,Python不是功能做完备的语言,Python不是应用最广泛的语言,然而,Python是一门最容易上手的语言,而且它刚好够用。

结束语

也许Python还有很多缺陷,在每一个方面都不是特别出色,但是它可以串联所有的关键技术,降低引入新技术的成本,可以让团队的成员具有共同语言,企业何乐而不为呢?

纯粹的编程已经不再,玩跨界,Python可以,你可以么?

我为什么说Python是一门最容易上手的语言呢?现存的编程语言种类不比自然语言少,然而常用的就那些,大家可以去看编程语言排行榜,虽然那个榜单没什么指导意义,但是,前50种语言,已经包括了你所听说过的大多数语言,而这50种语言里,有很多你可能是第一次听说。鄙人不才,我用来实际开发过最终用于生产环境的项目的语言,也就五六种,而以我浅薄的见解,这其中,Python最容易上手。

我初次接触Python,是我大学二年级的时候,那个时候我刚刚学完谭浩强版的C语言,对编程完全没有一点概念,当时所写的最复杂的程序就是遍历单向链表,在其中插入和删除节点了。

那个阳光明媚的下午,其他同学要么在泡妞,要么在打魔兽,当时流行的还是冰封王座,我既没有妹子,又实在不会玩游戏,百无聊赖,忽然看到一本讲蟒蛇的书,花了一个下午,匆匆看完一半,忽然感觉像进了一个新的世界。原来编程还能如此简单,原来列表是内置数据结构,逆天的是,连字典都内置了,而且整形永远不会溢出。

然后我就对Python着迷了,一个周之后,我已经能用web.py开发简单的网站了,我资质鲁钝,到这一步,花了一个周,聪明的你,也许三天就能搞定。

所以,在我看来,现存的语言里,上手最快的就是Python,虽然说是一家之言,但是从Python的使用者分布,也大致可以看出一些。Python在生物学,数学,经济学等科学领域使用非常广泛,而IPython notebook这一工具,逐渐成为数据建模领域的重要工具。

科学家们大多数精力在搞科研,所以当然要选择容易上手的语言,它们可没时间像程序员那般去调教编程语言。

你也许要说,bash不是更容易上手吗?对,你说得对,但是bash并不够用,虽然也有人用bash开发出了贪吃蛇,甚至还有bash的web框架,然而bash并不够用,这点你也许比我清楚。

然而,Python却不同,它刚好够用,这是多么美妙啊,然而更为美妙的是,它在很长一个阶段,都是刚好够用,无论是你刚刚学习编程,用它处理一些简单的事情,还是你已经很资深,用它开发诸如dropbox这样的应用,它都刚好够用。想一想,这是多么美妙的一件事啊。

一开始,我可以用它来开发一些简单的脚步,只为一些用bash难以实现的需求,慢慢的,我能把我的脚本组合起来,逐渐成为一个工程,在后来,我的工程逐渐变大,我开始抽象出标准流程,你在开始打造一个平台,看一步一个脚印,向着一开始你只能仰望的目标前进,而Python都刚好够用。

当有一天,你发现它不够用了,那么恭喜你,你已经到了一个新的台阶了,那时候,我们该探讨一些其他更好玩的东西了。

本文由澳门威斯尼人平台登录发布于服务器&运维,转载请注明出处:无处不在的Python,python介绍及课程简介

相关阅读