python笔记-简介

一Python的简介

一历史简介

Python诞生于1991年,目前有27年了,比1995年的JAVA语言都早了4年,为何大器晚成?
其一,在1990那个年代,计算机性能相比现在差很多,程序执行速度和效率很重要,快速开发不是第一要务,压榨机器性能才是。Python作为一门解释型动态语言,在解释方式上它天生就存在运行速度较慢的问题,因此不被当时编程界看好,其追求开发速度、强调简洁优雅、降低编程门槛的核心理念有点超越当时主流。而时至今日,计算机的硬件性能已经得到数量级的提高,计算能力不再是限制编程语言的最重要的因素,敏捷开发成为生产环境下对语言选择的重要因素,Python很好的满足了这一点,从而得到快速发展。
其二,作为对比的JAVA出身名门,其东家为SUN,当时互联网的头号公司,类似现在Google的地位,因而得到大力推广,并且有一群能力强、专职、有组织的团队进行开发和维护,所以很快获得成功,普及开来,至今仍然霸占着编程语言的榜首位置。而Python是个人编写的,寒门出身,龟叔没有三头六臂,个人时间精力都是有限的,虽然有一些志愿者帮忙做一些事情,但无疑和JAVA的正规军相比,能量还是要差了很多,这些都导致Python在初期发展得较为缓慢,甚至到如今都还未解决其被诟病的GIL问题。
二、Python语言的特点
1. 简单易学、明确优雅、开发速度快
简单易学:与C和Java比,Python的学习成本和难度曲线不是低一点,更适合新手入门,自底向上的技术攀爬路线。先订个小目标爬个小山,然后再往更高的山峰前进。
明确优雅:Python的语法非常简洁,代码量少,非常容易编写,代码的测试、重构、维护等都非常容易。一个小小的脚本,用C可能需要1000行,用JAVA可能几百行,但是用Python往往只需要几十行!
开发速度快:当前互联网企业的生命线是什么?产品开发速度!如果你的开发速度不够快,在你的产品推出之前别人家的产品已经上线了,你也就没有生存空间了,这里的真实例子数不胜数。那么,Python的开发速度说第二没人敢称第一!
2. 跨平台、可移植、可扩展、交互式、解释型、面向对象的动态语言
跨平台:Python支持Windows、Linux和MAC os等主流操作系统。
可移植:代码通常不需要多少改动就能移植到别的平台上使用。
可扩展:Python语言本身由C语言编写而成的,你完全可以在Python中嵌入C,从而提高代码的运行速度和效率。你也可以使用C语言重写Python的任何模块,从根本上改写Python,PyPy就是这么干的。
交互式:Python提供很好的人机交互界面,比如IDLE和IPython。可以从终端输入执行代码并获得结果,互动的测试和调试代码片断。
解释型:Python语言在执行过程中由解释器逐行分析,逐行运行并输出结果。
面向对象:Python语言具备所有的面向对象特性和功能,支持基于类的程序开发。
动态语言:在运行时可以改变其结构。例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言非常具有活力。
3. “内置电池”,大量的标准库和第三方库
Python为我们提供了非常完善的基础库,覆盖了系统、网络、文件、GUI、数据库、文本处理等方方面面,这些是随同解释器被默认安装的,各平台通用,你无需安装第三方支持就可以完成大多数工作,这一特点被形象地称作“内置电池(batteries included)”。
在程序员界,有一句话叫做“不要重复造轮子”。什么意思呢?就是说不要做重复的开发工作,如果对某个问题已经有开源的解决方案或者说第三方库,就不要自己去开发,直接用别人的就好。不要过分迷信自己的代码能力,要知道,能作为标准库被Python内置,必然在可靠性和算法效率上达到了目前最高水平,能被广泛使用的第三方库,必然也是经受了大量的应用考验。除非公司要求,不要自己去开发,请使用现成的库。那些造轮子的事情,就交给世界最顶尖的那一波程序员去干吧,没有极致的思维和数学能力,想创造好用的轮子是很难的。
4. 社区活跃,贡献者多,互帮互助
技术社区的存在就相当于程序员手中的指南针,没有指南针,很多时候,碰到了问题,就像无头的苍蝇只能到处乱飞,最终在茫茫的海洋中转晕致死。技术社区可以给我们对语言的学习和使用提供巨大的帮助,无论是前期的学习,还是日后的工作,只要有问题,技术社区的大牛都可以帮我们解决,有这些助力,可以帮我们更好地了解、学习和使用一门语言。技术社区同时还推动Python语言的发展方向,功能需求,促使公司企业更多的使用Python语言,招聘Python程序员。
然而、然而,上面说的是国外。在国内,好像没有比较成熟,影响范围广的Python技术社区,还是说我见识浅薄不知道而已?据本人分析,有历史原因和Python流行过程中形成的习惯等因素,国外Python高手都喜欢用邮件列表、wiki等方式进行交流,而国内喜欢的论坛、bbs等没有形成规模,所以造成现在的状况。
5. 开源语言,发展动力巨大
Python是基于C语言编写的,并且使用GPL开源协议,你可以免费获取它的源代码,进行学习、研究甚至改进。众人拾柴火焰高,有更多的人参与Python的开发,促使它更好的发展,被更多的应用,形成良性循环。Python为什么会越来越火就是因为它的开放性,自由性,聚起了人气,形成了社区,有很多人在其中做贡献,用的人越来越多,自然就提高了市场占有率,企业、公司、厂家就不得不使用Python,提供的Python程序员岗位就越来越多,这就是开源的力量。
这里附带跟大家说一个代码封闭的问题。Python写的源代码通常是不加密的,如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码基本是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。如果你不想让别人看到或抄袭你写的python代码怎么办?使用类似py2exe的包装工具,将python源码转换成一个类似于exe可执行文件的形式,但这个也不是绝对保险,只是增加了反编译的门槛和难度,对于有经验的人而言,一样可以获得你的源代码。
靠网站服务和移动应用卖服务的模式越来越多了,这种模式不需要把源码给别人。再说了,现在如火如荼的开源运动和互联网自由开放的精神是一致的,互联网上有无数非常优秀的像Linux生态圈一样的开源项目,我们千万不要高估自己写的代码真的有非常大的“商业价值”。在Python的世界,开源是王道,不要纠结你的代码被抄袭模仿,而是尽量提高自己的水平和能力,这才是立身之本。

三 应用的场景
1-常规软件开发-Python支持函数式编程和OOP面向对象编程,能够承担任何种类软件的开发工作,因此常规的软件开发、脚本编写、网络编程等都属于标配能力。
2-科学计算 随着NumPy, SciPy, Matplotlib, Enthought librarys等众多程序库的开发,Python越来越适合于做科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更广泛,有更多的程序库的支持。虽然Matlab中的许多高级功能和toolbox目前还是无法替代的,不过在日常的科研开发之中仍然有很多的工作是可以用Python代劳的。
3-自动化运维 这几乎是Python应用的自留地,作为运维工程师首选的编程语言,Python在自动化运维方面已经深入人心,比如Saltstack和Ansible都是大名鼎鼎的自动化平台
4-云计算 开源云计算解决方案OpenStack就是基于Python开发的
5-web开发 基于Python的Web开发框架不要太多,比如耳熟能详的Django,还有Tornado,Flask。其中的Python+Django架构,应用范围非常广,开发速度非常快,学习门槛也很低,能够帮助你快速的搭建起可用的WEB服务。
6-网络爬虫 也称网络蜘蛛,是大数据行业获取数据的核心工具。没有网络爬虫自动地、不分昼夜地、高智能地在互联网上爬取免费的数据,那些大数据相关的公司恐怕要少四分之三。能够编写网络爬虫的编程语言有不少,但Python绝对是其中的主流之一,其Scripy爬虫框架应用非常广泛。
7-数据分析 在大量数据的基础上,结合科学计算、机器学习等技术,对数据进行清洗、去重、规格化和针对性的分析是大数据行业的基石。Python是数据分析的主流语言之一。
8-人工智能 Python在人工智能大范畴领域内的机器学习、神经网络、深度学习等方面都是主流的编程语言,得到广泛的支持和应用。
四 Python的缺点
第一个缺点就是运行速度相对慢点,和C程序相比慢不少,这是解释型语言的通病,你的Python代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以会变慢。
GIL(Global Interpreter Lock)全局解释器锁,这是一种防止多线程并发执行机器码的互斥锁,功能和性能之间权衡后的产物。这是在设计Python语言的时候留下的一个历史性遗留问题,也是限于当时技术团队实力有限。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stestack

你的鼓励是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值