当前位置: 首页 > news >正文

学习一门语言——Python(自学版)

学习一门语言首先要了解它的发展历史,让我们先来了解一下Python的发展历史吧。

一、诞生背景(1989)

创始人:吉多・范罗苏姆(Guido van Rossum),荷兰程序员。 1989 圣诞假期,Guido 在荷兰 CWI 国家数学和计算机研究所,为打发假期,基于 ABC 语言开发新脚本语言。 取名 Python:源自他喜爱的喜剧《蒙提・派森》(Monty Python),本意希望语言简单、有趣、易读。

设计核心初衷

  1. 替代复杂难用的 Shell 脚本与 C;
  2. 解决 ABC 语言封闭、扩展性差的缺陷;
  3. 强调可读性、简洁、可移植

二、初代版本:Python 0.x 原型期

  • Python 0.9.0(1991 年 2 月)首个公开版本,已具备现代 Python 核心骨架:
    • 类、继承、异常处理;
    • 函数、动态类型;
    • if/for/while基础控制流;
    • 模块化编程(import); 标志性特色:缩进代替大括号,从这一版本定型。
  • 0.9.x 小版本完善列表、字典、字符串基础数据结构。

三、Python 1.x 稳定普及期(1994–2000)

  1. Python 1.0(1994)正式稳定发行,新增关键能力:
    • 函数式编程工具:lambdamapfilterreduce
    • 模块系统、类完整继承;
    • 支持跨平台(Unix、Windows、Mac)。
  2. 1.1 ~ 1.6 迭代更新
    • 1.2:引入异常捕获语法;
    • 1.4:支持关键字参数、内置复数类型;
    • 1.5(1997):加入完整正则库re、Tkinter GUI 标准库;
    • 1.6:Unicode 初步支持、垃圾回收优化。

痛点:1.x 字符串不区分字节与文本,编码混乱,埋下重大兼容隐患。

四、Python 2.x 全民主流时代(2000–2020)

1.Python 2.0(2000.10)里程碑大更新

彻底重塑语言,奠定长达 20 年的工业基础:

  • 垃圾回收引入引用计数 + 分代 GC,支持循环引用回收;
  • 列表推导式[x for x in ...]
  • Unicode 字符串类型unicode()
  • 统一跨平台标准库、网络模块;
  • 支持yield生成器。

2. 2.x 关键子版本

  • 2.2:新式类(object基类)、迭代器协议;
  • 2.4(2004):装饰器@语法、集合set
  • 2.5:with上下文管理器、try-except-finally
  • 2.6 / 2.7:过渡版本,大量兼容 Python3 语法,提供迁移工具2to3

2.x 致命缺陷

  1. 两套字符串:str(字节)、unicode(文本),极易编码报错;
  2. 整数除法3/2=1不符合直觉;
  3. 语法冗余、标准库设计混乱。

2020 年 1 月 1 日,Python 2 正式停止所有维护,全面淘汰。

五、Python 3.x 现代化重构(2008–至今,当前主流)

1. Python 3.0(2008.12):不兼容的彻底重构

Guido 下定决心打破兼容,根治 2.x 历史包袱,核心改动:

  1. 字符串统一:str= Unicode 文本,bytes单独表示二进制;
  2. 除法修正:3/2=1.5,整数整除用3//2
  3. print改为内置函数print(),不再是语句;
  4. 移除xrange,统一为range
  5. 异常语法、输入函数input()重构;
  6. 统一编码默认 UTF-8。

初期阻力极大:大量第三方库仅支持 2.x,迁移成本高,出现长达十年 “2/3 分裂期”。

2. 3.x 划时代重要版本

  • 3.3(2012):Windows 原生完整支持、yield from
  • 3.4(2014):标准库加入asyncio雏形异步框架;
  • 3.5(2015)重大更新
    • 原生异步语法:async/await
    • 类型注解def func(x: int) -> str
    • 矩阵乘法运算符@
  • 3.6(2016):f-string 格式化字符串(f"name={name}"),字典有序存储;
  • 3.7(2018):数据类@dataclass,延迟字典有序正式规范;
  • 3.8(2019):海象运算符:=,位置仅参数/
  • 3.9(2020):字典合并运算符|,类型注解简化;
  • 3.10(2021):模式匹配match-case(类 switch)、更好错误提示;
  • 3.11(2022):整体性能提升 60%,优化异常堆栈;
  • 3.12(2023):持续性能优化、简化语法;
  • 3.13(2024):官方实验 JIT 编译器,进一步提速。

六、发展时间线极简总结

年份版本核心事件
1989项目启动Guido 圣诞假期开发
19910.9.0公开首发,缩进语法成型
19941.0稳定正式版,函数式特性
20002.0Unicode、垃圾回收、统治行业 20 年
20083.0重构不兼容,解决编码痛点
20153.5async/await、类型注解
2020Python2 停止维护全面进入 3.x 时代
20243.13官方 JIT,性能大幅提升

看完了它的发展史后,Python的特点有哪些呢?

1.易于学习:Python 有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

2.易于阅读:Python 代码定义的更清晰。

3.易于维护:Python的 成功在于它的源代码是相当容易维护的。

4.一个广泛的标准库:Python 的最大的优势之一是丰富的库,跨平台的,在 UNIX、Windows 和 Mac 兼容很好。

5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片段。

6.可移植:基于其开放源代码的特性,Python 已经被移植(也就是使其工作)到许多平台。

7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用 C 或 C++ 完成那部分程序,然后从你的 Python 程序中调用。

8.数据库:Python 提供所有主要的商业数据库的接口。

9.GUI 编程:Python 支持 GUI 可以创建和移植到许多系统调用。

10.可嵌入:你可以将 Python 嵌入到 C/C++ 程序,让你的程序的用户获得"脚本化"的能力。

Python环境搭建就自行去搭建吧,下面来学习python的基础语法

1.Python标识符

在 Python 里,标识符由字母、数字、下划线组成。

所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。

Python 中的标识符是区分大小写的。

以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。

以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。

Python 可以同一行显示多条语句,方法是用分号 ; 分开

2.行和缩进

Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。

缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。

在 Python 的代码块中必须使用相同数目的行首缩进空格数,建议你在每个缩进层次使用单个制表符两个空格四个空格, 切记不能混用。

好了,今天的学习就先到这儿吧,今天就仅仅了解了下Python的发展史以及一些基础语法,让我们明天继续!

http://www.jsqmd.com/news/1099506/

相关文章:

  • 你的输出第一行肯定和我不一样,且每次运行的输出肯定不一样。
  • 乳牙蛀了不用管?避开护牙误区,科学守护孩子恒牙健康
  • info = {“k1“:1,“k2“:“222“,“k3“:“guohan“} 可变类型不可以做字典的键(列表,字典,集合) 因此键可以是整数什么的如 info = {1:2}公
  • 闪迪 x300 2.5-sata
  • 通用二进制协议分析:基于AST的Protobuf动态解析与容错设计
  • — 一款针对 IT 团队开发的文档管理系统,基于 Golang 开发,内置项目管理,用户管理,权限管理等功能,可以用来储存日常接口文档,数据库字典,手册说明等文档。功能特色:
  • 零基础使用VMware虚拟机安装CentOS Linux超详细教程
  • 硬件学习第三天(阅读芯片手册)
  • c语言项目驱动学习--实例化(图书管理)--005-代码对比
  • 基于51单片机RFID车位车库管理系统/RC522读卡/车库收费系统2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • [智能体-612]:AGENTS.md 完整详解(OpenClaw 体系,对应 workspace 里的工作规范文件)
  • 技术速递|通过全新开放数据集,加速研究人员和开发者构建多语言 AI
  • 中餐厅摆台 点击UI图片拖拽预制体到桌面并 实现预制体拖拽
  • 家庭精细化洗护怎么选?海信全家筒·棉花糖 U7S 四筒洗衣机深度体验
  • MHmarkets:把产品理解成本做扎实,更谨慎的使用者更容易感受到的清单
  • 基于STM32单片机甲醛温湿度烟雾火灾报警 空气质量检测PM2系统2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • 全国大学真实生活环境一键查询工具(在线免费)
  • Spring MVC的工作流程
  • go ethereum之p2p
  • 59.可跨平台投产!标准 ST 语言 PLC 电机状态机控制完整源码
  • Keepalived简介与工作原理Keepalived是一个基于VRRP协议(虚拟路由冗余协议) 实现的高可用解
  • 买卖股票的最佳时机
  • 23 万 Star 的秘密知识库,运维和安全人员的工具箱
  • 3个步骤让Windows 11重获新生:Win11Debloat系统优化完全指南
  • 一文搞懂巴别鸟版本管理:从历史回溯到冲突解决的完整攻略
  • 基于STM32单片机老人防丢智能拐杖 盲人导航定位跌倒检测设计系统3(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 别只会堆功能!后端业务代码重构实战,告别祖传烂代码
  • App Store Connect CLI 1.5.4 官方版下载(夸克网盘+百度网盘,SHA256校验)
  • Mi-Create:小米穿戴设备表盘设计的完整技术指南与架构解析
  • 做虚拟资料,哪些内容绝对不能碰?一份版权风险排查清单