Python 教程 01:Python 简介及发展历史

ℹ️说明:关于本教程的一些约定

① 教程后有(选读)的表示此教程为扩展内容,选读;

② 教程中涉及到的代码片段有时候并非代码块,而是图片,这是防止初学者直接复制代码粘贴的行为,想必各位来到这里是真的想学到一些东西,而不是只会复制粘贴吧?

③ 本教程无特殊情况,均在 Windows 操作系统下;

④ 本教程中所用 Python 版本均为 Python 3 系列,尽可能保持最新版本;

⑤ 无特殊情况,本教程一周更新一篇; 

目录

一、Python 简介

1.1 什么是 Python

1.1.1 大小写敏感

1.1.2 动态类型

1.1.3 解释型

1.2 Python 为什么叫 “Python”

1.2.1 Python 名称的由来

1.2.2 Guido van Rossum

1.2.3 Python 的口号

1.3 为什么选择 Python

1.3.1 Python 简单易学

1.3.2 Python 资料众多

1.3.3 Python 流行广泛

二、Python 的发展历史

2.1 开发之前

2.2 开发早期(1989-1991)

2.3 Python 1 时期(1991-2000)

2.4 Python 2 时期(2000-2020)

2.5 Python 3 时期(2008- 现在)


一、Python 简介

Python Logo

1.1 什么是 Python

Python 是一门 大小写敏感 的、动态类型 的、解释型 的编程语言。

1.1.1 大小写敏感

将大写英文字母和对应的小写英文字母视为不同的标识符,反之则视为相同的。

例如,Python 和 python 就是两个不同的标识符。

1.1.2 动态类型

Python 变量与其存储的值是分开的,没有必然的联系,因此 Python 变量的类型也就是动态的,因为其关联的数据的类型就是动态的。在我看来,这是一个非常好的特性。

1.1.3 解释型

Python 程序的运行一般需要依靠 Python 解释器对其进行解释,而不像 C 和 C++ 那样的编译型语言,编译完成后可以直接在对应平台上运行。这个特性给予了 Python 一些优点和缺点,优点是 Python 程序可以非常方便的进行修改和编辑然后马上重新解释运行,大大地加快了开发的速度,但缺点是 Python 程序的运行必须依靠 Python 解释器的存在。若对应的机器上没有 Python 环境,那么 Python 程序大概率无法直接运行。         

1.2 Python 为什么叫 “Python”

1.2.1 Python 名称的由来

Python 名称来源于 Python 创始人 Guido van Rossum 对 Monty Python 喜剧团体的喜爱。1989 年他开始编写 Python 解释器时,他需要一个简单,独特且有趣的名称,以便为其编写文档时引起人们的兴趣。因此,他选择了 Python 这个名称,并将其与 Monty Python 这个喜剧团体联系起来,以表达他的幽默感。

1.2.2 Guido van Rossum
Guido van Rossum

Guido van Rossum 是一名荷兰计算机科学家,被誉为是 Python 编程语言的创始人(实际创始人也是他),根据名字的发音,国内常简称他为“龟叔”。他于1982 年在荷兰莱顿大学获得了计算机科学学士学位,之后在荷兰国家数学与计算机科学研究所从事了 8 年的研究工作。在 1990 年代初,他开始开发 Python 编程语言,并于 1991 年公开发布了第一个 Python 版本。他在 Python 社区中担任着重要的领导角色,带领着该社区不断地发展壮大。他也曾在 Google 工作,担任技术研究员和软件工程师,并在 Google 期间继续对 Python 的开发和推广做出了重要贡献。

1.2.3 Python 的口号

在国内,Python 的口号是 “人生苦短,我用 Python”。Bruce Eckel 原话是 “Life is short, you need Python",但 “我用 Python” 是 Guido van Rossum 穿的 T 恤上印的话(见下图)。

右上三是 “龟叔”

这句口号简短地表明了 Python 最主要的特征,就是简单!人生并不是很长,如果你选择把时间花费在复杂冗长的语法上,而不是有用的逻辑上,岂不是十分的不值得?

这里我们可以与主流语言 Java 做对比,两者都是流行语言,但完成同样一件事情所需的代码量差异非常之大(毕竟 Java 语法的冗长比较明显)。下面是两段完成同一件事情所需的代码:

Java:

@FunctionalInterface
interface Formula {
    double calculate(double x);
}

public class Test {
    public static void main(String[] args) {
        Formula f = x -> 3 * x * x + 2 * x + 1;
        
        double result = f.calculate(2.5);
        System.out.println(result);
    }
}

Python:

f = lambda x: 3 * x**2 + 2 * x + 1

result = f(2.5)
print(result)

这里不是批评 Java 不好,这里只是做一个简单的对比,别无它意,仅此而已。

1.3 为什么选择 Python

1.3.1 Python 简单易学

Python 是一门对新手非常友好的编程语言,因为它语法简单,语义明确,能让我们用最接近自然语言的方式来编写程序,但你想学精也是有难度的(虽没有 C++ 那样难)。

1.3.2 Python 资料众多

Python 的学习资料非常多,包括此教程,也是 Python 学习资料之一。实际上,Python 官方也有教程和文档,甚至,官方还给出了中文版的(虽然不是 100% 完全翻译的)!

官方中文版文档链接(强烈建议多看几遍文档):Python Documentation

猜你想问: 既然有那么多教学资料,那为什么选择这个教程呢?

首先,这篇教程属于基于我个人理解编写而成的,我会从初学者的角度来进行讲述,但同时兼具深度和难度(保证和其他教程有很大不同);此外,我会及时对文章的评论做出回答,及时形成反馈。

1.3.3 Python 流行广泛

Python 主要方向有网络开发、网络爬虫、人工智能、大数据、科学计算等。但这些是 Python 比较流行的方向,并不代表 Python 在其他方面不够优秀。比如图形化编程,一直被认为不是 Python 合适的方向,但现在也在逐渐改变,尤其是两大 Qt 第三方库(PyQT 和 PySide)的引入,极大地提高了 Python 在 GUI 编程领域的水平。

Pythoon 的宗旨是简单明确且优雅,什么事情能够快速且准确地实现,速度或许会相对于其它编程语言要慢一些,但它开发速度快,出错的概率低,这不正是编写程序的一大目标吗?就算它比较慢,但 Python 官方近些年来一直尝试加快 Python 的运行速度(典型的就是 Python 3.11 版本更新极大地加快了运行速度,见下图)

Python 3.11 更新说明的宣传 Logo

在我看来,Python 若是运行速度能与主流编译型语言靠齐,那便是最好的编程语言,没有之一了。Python 社区也十分地活跃,每天都有很多的内容在产出。

Python 历年流行趋势图:TIOBE Index - TIOBE

1.3.4 Python 开源免费

这虽然不是一个重要的因素,但还是必须要提一下,免费开源的总是更加安全一些,更容易获得信任。

二、Python 的发展历史

2.1 开发之前

Python 编程语言实际有一个“前置”语言作为启发,那就是 ABC 语言。

ℹ️扩展知识:ABC 语言

ABC 语言是在 NWO(荷兰科学研究组织)旗下 CWI(荷兰国家数学与计算机科学研究中心)的 Leo Grurts,Lambert Meertens,Steven Pemberton 主导研发一种交互式,结构化高级语言,旨在替代 BASIC,Pascal 等语言,用于教学及原型软件设计。Python 创始人 Guido van Rossum 于20 世纪 80 年代曾在 ABC 系统开发中工作了数年。

—— ABC语言 百度百科

Python 有很多特点都是借鉴于 ABC 语言,或者说早期的 Python 就是 ABC 的改良版。 但 ABC 语言最后失败了,没有流行下去,就 Guido 本人看来,ABC 失败的原因是高级语言为时过早,并且平台迁移能力弱,难以添加新功能,仅仅专注于编程初学者,没有把有经验的编程人员纳入其中,其通过 Python 解决了其一些问题,让拓展模块的编写非常容易,并且可以在多平台进行运行。

2.2 开发早期(1989-1991)

在 1989 年圣诞节期间的阿姆斯特丹,龟叔为了打发圣诞节的无趣,决心开发一个新的脚本解释语言,作为 ABC 语言的一种继承,两年后的 1991 年,发布了第一个公开发行版。此时都是由龟叔进行开发和管理的。

2.3 Python 1 时期(1991-2000)

初始阶段,Python 1 时期主要实现了基本的语法结构、数据类型、异常处理、模块系统等特性。Python 1.0 于 1994 年发布,引入了 lambda 表达式、map、filter 和 reduce 等函数式编程工具。Python 1.6 于 2000 年发布,是 Python 1.x 系列的最后一个版本。

2.4 Python 2 时期(2000-2020)

发展阶段,主要增加了许多新功能和改进,如 Unicode 支持、列表推导、垃圾回收机制、生成器、装饰器、迭代器协议、新式类等。Python 2.0 于 2000 年发布,引入了循环引用检测垃圾回收机制和全局解释器锁(GIL)。Python 2.4 于 2004 年发布,同年 Django 框架诞生。Python 2.7 于 2010 年发布,是 Python 2.x 系列的最后一个版本。Python 2.7 原定于 2015 年结束支持,后延长至 2020 年,并确认不会有 2.8 版本发布。

2.5 Python 3 时期(2008- 现在)

成熟阶段,主要进行了一些重大的改变和优化,如移除旧式特性、统一文本和二进制数据模型、增加类型注解、异步编程支持等。Python 3.0 于 2008 年发布,不完全兼容 Python 2.x,并提供了2to3 工具来帮助迁移代码。Python 3.6 于 2016 年发布,引入了格式化字符串字面量(f-string)等新特性。Python 3.9 于 2020 年发布,移除了 distutils 包等已弃用的 API。截至 2024 年 1 月,Python 3.12 是最新稳定版本。

下面是截至 2024 年 1 月,Python 的发布周期:

Python 发布周期

参考资料:

  1. Python的发展简史
  2. Python早期设计与开发:从ABC到Python

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB源码-第104期】基于matlab的MPSK和MQAM调制解调方式仿真,输出误码率曲线。

操作环境: MATLAB 2022a 1、算法描述 MPSK(多相位键控) MPSK是一种基于载波相位变化的数字调制技术。它的核心原理是通过改变载波的相位来表示不同的数字信息。这种技术可以分为几个不同的级别,其中最常见的包括: 1…

Open CASCADE学习|入门Hello world

目录 1、新建项目 2、写代码 3、配置 3.1配置头文件 3.2配置静态库文件 3.3配置动态库文件 4、编译运行 1、新建项目 新建一个Win32控制台应用程序,取名为HelloWorld,如下图所示: 2、写代码 测试所用的代码如下: // Use T…

通天星CMSV6车载视频监控平台 SQL注入漏洞复现

0x01 产品简介 通天星CMSV6车载视频监控平台是东莞市通天星软件科技有限公司研发的监控平台,通天星CMSV6产品覆盖车载录像机、单兵录像机、网络监控摄像机、行驶记录仪等产品的视频综合平台。通天星科技应用于公交车车载、校车车载、大巴车车载、物流车载、油品运输车载、警车…

字节跳动基础架构SRE-Copilot获得2023 CCF国际AIOps挑战赛冠军

近日,2023 CCF国际AIOps挑战赛决赛暨“大模型时代的AIOps”研讨会在北京成功举办,活动吸引了来自互联网、运营商、科研院所、高校、软硬件厂商等领域多名专家学者参与,为智能运维的前沿学术研究、落地生产实践打开了新思路。决赛中&#xff0…

基于Springboot的Timo商城

​ 目录 ​前言 开发环境和工具 项目功能 基础模块 商城功能 手机端 设计详情 后台登录页面 后台 手机端页面 小程序端页面 视频展示 源码获取 前言 本项目是一个基于IDEA和Java语言开基于Springboot的Timo商城。应用包含网页管理端,手机端&#xff0…

【v8漏洞利用模板】starCTF2019 -- OOB

文章目录 前言参考题目环境配置漏洞分析 前言 一道入门级别的 v8 题目,不涉及太多的 v8 知识,很适合入门,对于这个题目,网上已经有很多分析文章,笔者不再为大家制造垃圾,仅仅记录一个模板,方便…

PPT插件-大珩助手-免费功能-特殊格式介绍

上、下标切换 直接切换选中的字符为上、下标。 大小金额 支持超大金额的大写金额转换 当前日期 本次打开文件的时间 转二维码 将当前选中的文字,转为二维码图片,并插入到PPT当前位置 特殊字符 内置常用的特殊字符,点击使用 软件介绍 …

Flume基础知识(十一):Flume自定义接口

1)案例需求 使用 Flume 采集服务器本地日志,需要按照日志类型的不同,将不同种类的日志发往不同的分析系统。 2)需求分析 在实际的开发中,一台服务器产生的日志类型可能有很多种,不同类型的日志可能需要 发送…

卫星互联网与MEC融合方案研究

卫星互联网与MEC融合方案研究 作者:温特、王立中、司鹏、颜明明、马恬、郭伊蒙 中国卫通集团股份有限公司 本文首发:第十九届卫星通信学术年会 摘 要:在卫星互联网中引入移动边缘计算(MEC)技术可有效提高用户体验质量,降低运营成…

Android studio环境配置

1.搜索android studio下载 Android Studio - Download 2.安装 3.配置环境 配置gradle,gradle参考网络配置。最后根据项目需求选择不同的jdk。

SpringDoc注解解析

一、什么是SpringDoc SpringDoc注解的使用,它是基于OpenAPI 3和Swagger 3的现代化解决方案,相较于旧版的Swagger2(SpringFox),SpringDoc提供了更简洁、更直观的注解方式。 二、SpringDoc的注解分类 2.1 作用于类的注解 1. Tag 用于说明…

docker部署simpleDocker

1,安装docker,请参考 linux安装docker 2,安装docker-compose,请参考 Docker-Compose 3,安装simpleDocker 准备docker-compose.yml文件 version: 3 services:redis:container_name: redisimage: redis:latestweb:conta…

未完成销量任务的智己汽车突发大规模车机故障,竞争压力不小

2024年刚开年,智己汽车便上演了一出“开门黑”。 近日,不少车主在社交平台发帖,反映智己LS6出现大规模车机故障,包括但不限于主驾驶屏幕不显示车速、档位、行驶里程,左右转盲区显示失效,无转向灯、雷达提醒…

时钟的实现(MFC)

文章目录 1.预备知识1.日期和时间类1.概述2.构造3.CTime类主要成员函数3.CTimeSpan类主要成员函数 2.计时器1.创建计时器2.销毁计时器 3.位图类1.构造2.初始化3.属性4.操作 2.实验目的3.实验内容4.代码实现1.准备工作2.基类CClockBaseClockBase.hClockBase.cpp 3.时钟背景类CCl…

【大数据】Zookeeper 数据写入与分布式锁

Zookeeper 数据写入与分布式锁 1.数据是怎么写入的2.基于 Zookeeper 实现分布式锁 1.数据是怎么写入的 无论是 Zookeeper 自带的客户端 zkCli.sh,还是使用 Python(或者其它语言)实现的客户端,本质上都是连接至集群,然…

1982-2022年GIMMS 标准化差异植被指数

GIMMS 标准化差异植被指数 1982-2022 PKU GIMMS 归一化植被指数数据集(PKU GIMMS NDVI,版本 1.2)提供了从 1982 年到 2022 年以半个月为间隔、分辨率为 1/12 的一致的全球 NDVI 数据。其主要目标是解决现有领域中普遍存在的关键不确定性。全…

BMS电池管理系统带充放电控制过流过压保护

2.4G无线采集BMS开发板(主从一体) 全新升级 (赠送上位机源码TTL 上位机,可以改成自己想要的界面) 12串电池TTL上位机 CAN通信上位机源码有偿开源,供项目二次开发。 增加STM32平台 USB转TTL通信 CAN通信 增加…

C++面向对象核心-继承

1、继承 1.1 概念 继承是面向对象的三大特性之一,体现了代码复用的思想。 继承就是在一个已存在的类的基础上建立一个新的类,并拥有其特性。 已存在的类被称为“基类”或者“父类”新建立的类被称为“派生类”或者“子类”对象间没有继承关系 #include &…

数据恢复与并发控制例题

例1: (1)重做(REDO):T1,T2,T3; 撤销(UNDO):T4。 (2)重做:T1,T2; 撤销:T3。 (3)重做:T1; 撤销:T2,T3. (4)重做:T1; 撤销…

手机上下载 Linux 系统

我们首先要下载 Ternux 点击下载以及vnc viewer (提取码:d9sX),需要魔法才行 下载完以后我们打开 Ternux 敲第一个命令 pkg upgrade 这个命令是用来跟新软件的 敲完命令就直接回车,如果遇到需要输入 Y/N 的地方全部输入 Y 下一步 #启动TMOE…