1 Python的前世今生

news2024/11/15 14:23:16

为什么要学Python

        这个问题,仁者见仁,智者见智。编程界有一句名言:“人生苦短,我用Python”,这句话似乎道出了一些原因。Python是一门简单直观的语言,更是一门注重可读性和效率的语言。解决同一个问题,Python的代码量只有Java、C、C++这些语言的五分之一,且Python代码像纯英语那样容易理解。正是Python的这两大核心优势,让其在广大的开发者中大受欢迎。

        从下面两张图可以看到,Python使用率从2014年的谷底快速反弹,到2023年时,已经霸榜第一名的位置,使用率为12.46%。

Python的诞生

        Python的创始人为荷兰人Guido van Rossum,中文名为吉多·范罗苏姆,人称“龟叔”。

        1989年圣诞节期间,吉多在荷兰首都阿姆斯特丹为了打发圣诞节的无趣时间,决定开发一个新的脚本解释语言,作为ABC语言的继承。之所以选中Python作为该语言的名字,是因为吉多是一个叫Monty Python喜剧团体的爱好者,其本意并不是想选条蟒蛇(Python的中文翻译)。

        Python第一个公开版发行于1991年,所以这一年被当作Python的诞生年。

Python的发展历程

        Python 1.0:1994年1月发布,增加了lambda、map、filter、reduce等新的特性和接口。

        Python 2.0:2000年10月发布,增加了完整的垃圾回收机制,并支持Unicode,构成了Python语言框架的基础。

        Python 2.4:2004年11月发布,同年目前最流行的Web框架Django诞生。

        Python 2.6:2008年10月发布,该版本是一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。

        Python 2.7:2010年7月发布,该版本是最后一个Python 2.x版本,它除了支持Python 2.x语法外,还支持部分Python 3.1语法。

        Python 3.0:2008年12月发布,常被称为Python 3000。相对于Python的早期版本,这是一个较大的升级。为了不引入过多的累赘和负担,Python 3.0在设计的时候没有考虑向下兼容。因此,许多早期Python版本设计的程序无法在Python 3.0上正常执行。

        Python3.0以后,Python的发布节奏加快。Python 3.1发布于2009年,Python 3.2发布于2011年,Python 3.3 发布于2012年,Python 3.4发布于2014年,Python 3.5 发布于2015年,Python 3.6 发布于2016年。

        Python 3.11:2022年10月发布,增加了tomllib模块,并支持增强回溯中的错误位置、异常情况可以用注释来补充、新的类型标注等新特性。

        目前,Python由一个核心开发团队在维护,“龟叔”在其中仍然占据着至关重要的作用,指导其进展。

Python的特色

        简单易学:与C、C++、Java等语言相比,Python有更少的关键字、更简单的结构、更明确的语法,学习起来也更加简单。Python的学习成本和难度曲线比其他编程语言低不少,更适合新手快速入门。

        跨平台、可移植:Python已经支持Windows、Linux、Mac等主流操作系统。基于其开放源代码的特性,Python可以很容易地移植到其他平台上。

        可扩展:Python语言本身是由C语言编写而成的,你完全可以在Python中嵌入C或C++。如果你需要一段运行很快的关键代码,或者想要编写一些不希望开放源码的算法,你可以使用C或C++实现那部分程序,然后在你的Python程序中调用。

        面向对象:Python是完全面向对象的语言,函数、模块、数字、字符串等一切都是对象,支持继承、重载、多重继承、重载运算符,也支持泛型设计。

        强大的标准库:Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而Python标准库则提供了系统管理、网络通信、数据库接口、图形系统、文本处理、XML处理等强大的功能。

        社区活跃:Python社区提供了大量的第三方模块,功能覆盖Web开发、人工智能、科学计算、机器学习等多个领域。

Python的缺点

        任何编程语言都有缺点,Python也不例外。

        运行速度较慢:由于Python是解释型语言,与C、C++程序相比,运行速度会慢不少。Python代码在执行时,会逐行翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以会变慢。

        打包麻烦:Python当前没有比较好的方法来打包生成可执行文件,只能通过第三方工具解决,用起来比较麻烦。

        源码加密困难:与编译型语言不同,Python是直接运行源代码,因此对源代码进行加密是比较困难的(将需要加密的源码用C/C++来实现,在Python中进行调用,是一种可行的方案)。

Python的应用领域

        云计算:云计算领域最火的语言,没有之一,开源云计算解决方案OpenStack就是基于Python开发的。

        Web开发:基于Python的Web开发框架非常多,比如:Django、Tornado、Flask等。Youtube、Dropbox、豆瓣等大型知名网站均使用Python开发。

        科学运算:随着NumPy、SciPy、Matplotlib、pandas等典型库的推出,Python已经越来越适合于做科学计算、2D/3D图像绘制等任务。

        系统运维:Python作为运维人员首选的编程语言,在系统运维方面已经深入人心。大名鼎鼎的自动化运维工具Saltstack和Ansible,就是基于Python开发的。

        人工智能:人工智能的爆发,成就了Python,让Python在机器学习、神经网络、深度学习等领域成为主流的编程语言,得到广泛的支持和应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/811677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构空间复杂度

数据结构空间复杂度 空间复杂度常见的复杂度对比 空间复杂度 空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时额外占用存储空间大小的量度 。 空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的…

jmeter常用的性能测试监听器

jmeter中提供了很多性能数据的监听器,我们通过监听器可以来分析性能瓶颈 本文以500线程的阶梯加压测试结果来描述图表。 常用监听器 1:Transactions per Second 监听动态TPS,用来分析吞吐量。其中横坐标是运行时间,纵坐标是TPS…

【后端面经】微服务构架 (1-6) | 隔离:如何确保心悦会员体验无忧?唱响隔离的鸣奏曲!

文章目录 一、前置知识1、什么是隔离?2、为什么要隔离?3、怎么进行隔离?A) 机房隔离B) 实例隔离C) 分组隔离D) 连接池隔离 与 线程池隔离E) 信号量隔离F) 第三方依赖隔离二、面试环节1、面试准备2、基本思路3、亮点方案A) 慢任务隔离B) 制作库与线上库分离三、章节总结 …

【Linux】TCP协议

​🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录 👉TCP协议&…

java设计模式-建造者(Builder)设计模式

介绍 Java的建造者(Builder)设计模式可以将产品的内部表现和产品的构建过程分离开来,这样使用同一个构建过程来构建不同内部表现的产品。 建造者设计模式涉及如下角色: 产品(Product)角色:被…

通过clone的方式,下载huggingface中的大模型(git lfs install)

1、如图:可以手动一个个文件下载,但是那样太慢了,此时,可以点击下图圈起来的地方。 2、点击【Clone repository】,在命令行中,输入【git lfs install】(安装了这个,才会下载大文件&a…

【Git】git企业开发命令整理,以及注意点

1.git企业开发过程 业务的分支大概有以下几个: master:代码随时可能上线 develop:代码最新 feature/xxx:实际业务开发分支 release/xxx:预发布分支 fix:修复bug分支 过程大概是这样的: 首…

机器学习知识经验分享之六:决策树

python语言用于深度学习较为广泛,R语言用于机器学习领域中的数据预测和数据处理算法较多,后续将更多分享机器学习数据预测相关知识的分享,有需要的朋友可持续关注,有疑问可以关注后私信留言。 目录 一、R语言介绍 二、R语言安装…

【1.3】Java微服务:Spring Cloud版本说明

✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏: 微服务 ✨特色专栏: 知识分享 &#x…

python实现递推算法解决分鱼问题

一、问题描述 A、B、C、D、E5个人合伙夜间捕鱼,凌晨时都已经疲惫不堪,于是各自在河边的树丛中找地方睡着了。第二天日上三竿时,A第一个醒来,他将鱼平分为5份,把多余的一条扔回河中,然后拿着自己的一份回家…

如何快速同步第三方平台数据?

前言 最近知识星球中有位小伙伴问了我一个问题:如何快速同步第三方平台数据? 他们有个业务需求是:需要同步全国34个省市,多个系统的8种业务数据,到他们公司的系统当中。 他们需求同步全量的数据和增量的数据。 全量…

Ray

public Ray(Vector3 origin, Vector3 direction); 射线:origin为起始点,direction为射线方向 public static bool Raycast(Ray ray); 物理射线监测:返回值为bool型,可以确定射线有无碰撞到碰撞体 public static bool Raycast(R…

isp调试工具环境搭建及其介绍!

一、isp调试环境搭建: 后期调试isp,是在rv1126提供的RKISP2.x Tuner工具上进行调试,所以我们大前提必须要把这个环境和一些操作先搞熟悉来,后面有一些专用术语,我们遇到了再去看,现在专门看一些专用术语&am…

Spring Cloud简单记录

1. Spring Cloud是什么 工作这么多年,哈哈。。。没深入理解spring,spring cloud也是没有用过。趁着周末,搞一搞概念,先搞清楚是什么,虽然是什么只有用过之后才能理解的更具体,但是还是需要先整体的熟悉一下…

联想拯救者如何开启独显直连

不同机型有不同的切换方式,下面就分别给大家讲一下: 显卡模式切换方式一: 打开联想电脑管家,选择游戏模式,在左侧菜单栏选择显卡模式,然后就能看到显卡的输出模式了,默认是混合模式&#xff0c…

React之组件的生命周期

React之组件的生命周期 一、概述二、整体说明三、挂载阶段四、更新阶段五、卸载阶段 一、概述 生命周期:一个事务从创建到最后消亡经历的整个过程组件的生命周期:组件从被创建到挂载到页面中运行,再到组件不用时卸载的过程意义:理解组件的生…

RT1052的定时器

文章目录 1 通用定时器1.1 定时器框图1.2 实现周期性中断 2 相关寄存器3 定时器配置3.1 时钟使能3.2 初始化GPT1定时器3.2.1 base3.2.2 initConfig3.2.2.1 clockSorce3.2.2.2 divider3.2.2.3 enablexxxxx 3.3 设置 GPT1 比较值3.3.1 base3.3.2 channel3.3.3 value 3.4 设置 GPT…

10-矩阵(matrix)_方阵_对称阵_单位阵_对角阵

矩阵及其运算 [ a 11 ⋯ a 1 n ⋯ ⋯ ⋯ a m 1 ⋯ a m n ] \begin{bmatrix} a_{11} & \cdots & a_{1n} \\ \cdots & \cdots & \cdots \\ a_{m1} & \cdots & a_{mn} \\ \end{bmatrix} ​a11​⋯am1​​⋯⋯⋯​a1n​⋯amn​​ ​ 矩阵就是二维数组&…

【Golang 接口自动化02】使用标准库net/http发送Post请求

目录 写在前面 发送Post请求 示例代码 源码分析 Post请求参数解析 响应数据解析 验证 发送Json/XMl Json请求示例代码 xml请求示例代码 总结 资料获取方法 写在前面 上一篇我们介绍了使用 net/http 发送get请求,因为考虑到篇幅问题,把Post单…

华为OD机试真题 Java 实现【输出指定字母在字符串的中的索引】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述说明: 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题&#x…