Python学习(7) ----- Python起源

news2025/6/9 17:38:00

🐍《Python 的诞生》:一段圣诞假期的奇妙冒险

📍时间:1989 年圣诞节

在荷兰阿姆斯特丹的一个寒冷冬夜,灯光昏黄、窗外飘着雪。一个程序员 Guido van Rossum 正窝在家里度假——没有会议、没有项目、没有 bug,只有一段难得的清闲时间。

但程序员的“清闲”永远不安分。

Guido 想:“我能不能写一种自己的编程语言呢?一种简洁、优雅、让人快乐的语言?不像 C 那么复杂,也不想要太死板的语法。”

💡灵感来源:一门叫 ABC 的“古老语言”

Guido 曾在工作中用过一种叫 ABC 的语言。它语法简单、易学,适合教学。但有个大毛病:你不能用它做真正的项目,比如你不能访问文件系统、扩展功能受限。

他想:“ABC 很漂亮,但太笨了。我能不能做一门语言,既漂亮又聪明?”

就像想造一辆车,ABC 是脚踏车,Guido 想造一辆——既优雅又能上高速的跑车

🧪他开始动手:造一门“快乐的语言”

于是 Guido 在圣诞节那几天里,边听音乐边编码,一行一行地写出了他心目中的语言蓝图:

  • 缩进表示结构(告别乱七八糟的括号)
  • 简洁明了的语法(没有多余的装饰)
  • 万物皆对象(统一而强大)
  • 动态类型、解释执行(开发更快)

这是他的圣诞礼物,一门新的编程语言,后来他给它取了个名字:

🐍 名字的来历:Python?不是蛇!

你以为 Python 是因为 logo 是蛇?错!

Guido 是个英国幽默迷,尤其喜欢一个喜剧团体 Monty Python(蒙提·派森),他们的节目《Monty Python’s Flying Circus》荒诞搞笑、充满创意。

他说:“我想给语言起个有趣的名字——不像 C++、Perl 那么冰冷技术,我要一个能让人记住的名字。”

于是,Python 诞生了。

🚀1991 年:第一版 Python 问世

他把 Python 0.9.0 版本上传到新闻组(类似早期的论坛),社区一下子炸锅了:

  • “这语言太优雅了!”
  • “缩进表示结构居然这么自然?”
  • “内建 list 和 dict,简直像做梦!”

Guido 不知不觉成了 Python 之父,也成了“仁慈的独裁者(BDFL)”——大家尊敬他,但也开玩笑说他统治了这门语言。


📈 后来的故事:从圣诞项目到世界主角

  • Python 越来越流行,从小工具用到大项目
  • 被 NASA 用来控制太空设备
  • 被 Google、YouTube 用来做后台服务
  • 被机器学习、数据分析工程师捧上神坛

甚至被小学生用来写小游戏,被科学家用来研究宇宙。


🎬 最后的彩蛋:Python 的哲学

Python 有个“禅”,也就是它的哲学。你在 Python 里输入这行代码:

import this

它会打印出一段话,第一句就是:

“Beautiful is better than ugly.”
“美丽优于丑陋。”

这,就是 Python 的灵魂。


import this 是 Python 语言里一个非常有趣的“彩蛋”。


🎁 一句话解释

执行 import this 会输出 Python 的设计哲学,又称 “The Zen of Python”(Python 之禅)

它由 Python 早期核心开发者 Tim Peters 撰写,包含 19 条哲学原则,影响了 Python 的语言风格与社区文化。


✅ 实际效果

在 Python 中输入:

import this

输出会是:

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

🧠 含义解读(部分)

原则意义
Beautiful is better than ugly.代码应该美观、整洁
Explicit is better than implicit.清晰优于隐晦,写代码要直白
Simple is better than complex.简单比复杂好
Readability counts.可读性非常重要
There should be one– and preferably only one –obvious way to do it.最好有一种显而易见的方式完成一件事
Namespaces are one honking great idea – let’s do more of those!命名空间非常棒,我们应该多用

🧩 技术细节

import this 本质上是导入了一个内置的“彩蛋模块”,在 Python 安装路径里,名字就叫 this.py

源代码大致是这样的(简化后):

s = "Gur Mra bs Clguba, ol Gvz Crgref\n..."
d = {}  # 凯撒加密的解码表
print("".join([d.get(c, c) for c in s]))

它用了一个简单的**凯撒加密(rot13)**来隐藏文本,在导入时自动解密并打印出来。


🎯 总结

import this 虽然不执行任何程序逻辑,但它代表了 Python 背后的美学和哲学思想,是每个 Pythoner 入门时值得一看的“宣言”。

如果你希望我解释每一条原则的实际意义与示例,我也可以一条条帮你解读。要试试看吗?

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

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

相关文章

破解HTTP无状态:基于Java的Session与Cookie协同工作指南

HTTP协议自身是属于“无状态”协议 无状态是指:默认情况下,HTTP协议的客户端和服务器之间的这次通信,和下次通信之间没有直接的关系 但在实际开发中,我们很多时候是需要知道请求之间的关联关系的 上述图中的令牌,通常就…

JS 事件流机制详解:冒泡、捕获与完整事件流

JS 事件流机制详解:冒泡、捕获与完整事件流 文章目录 JS 事件流机制详解:冒泡、捕获与完整事件流一、DOM 事件流基本概念二、事件捕获 (Event Capturing)特点代码示例 三、事件冒泡 (Event Bubbling)特点代码示例 四、完整事件流示例HTML 结构JavaScript…

算法专题七:分治

快排 1.颜色分类 题目链接:75. 颜色分类 - 力扣(LeetCode) class Solution {public void swap(int[] nums, int i, int j){int t = nums[i];nums[i] = nums[j];nums[j] = t;}public void sortColors(int[] nums) {int left=-1 ,i=0 ,right=nums.length;while(i<right){i…

Vue中虚拟DOM的原理与作用

绪论 首先我们先了解&#xff0c;DOM&#xff08;Document Object Model&#xff0c;文档对象模型&#xff09; 是浏览器对 HTML/XML 文档的结构化表示&#xff0c;它将文档解析为一个由节点&#xff08;Node&#xff09;和对象组成的树形结构&#xff08;称为 DOM 树&#xf…

使用vue3+ts+input封装上传组件,上传文件显示文件图标

效果图&#xff1a; 代码 <template><div class"custom-file-upload"><div class"upload"><!-- 显示已选择的文件 --><div class"file-list"><div v-for"(item, index) in state.filsList" :key&q…

【Linux】Ubuntu 创建应用图标的方式汇总,deb/appimage/通用方法

Ubuntu 创建应用图标的方式汇总&#xff0c;deb/appimage/通用方法 对于标准的 Ubuntu&#xff08;使用 GNOME 桌面&#xff09;&#xff0c;desktop 后缀的桌面图标文件主要保存在以下三个路径&#xff1a; 当前用户的桌面目录&#xff08;这是最常见的位置&#xff09;。所…

LangGraph--Agent工作流

Agent的工作流 下面展示了如何创建一个“计划并执行”风格的代理。 这在很大程度上借鉴了 计划和解决 论文以及Baby-AGI项目。 核心思想是先制定一个多步骤计划&#xff0c;然后逐项执行。完成一项特定任务后&#xff0c;您可以重新审视计划并根据需要进行修改。 般的计算图如…

Spring Boot 常用注解面试题深度解析

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot 常用注解面试题深度解析一、核心…

Linux系统的CentOS7发行版安装MySQL80

文章目录 前言Linux命令行内的”应用商店”安装CentOS的安装软件的yum命令安装MySQL1. 配置yum仓库2. 使用yum安装MySQL3. 安装完成后&#xff0c;启动MySQL并配置开机自启动4. 检查MySQL的运行状态 MySQL的配置1. 获取MySQL的初始密码2. 登录MySQL数据库系统3. 修改root密码4.…

408第一季 - 数据结构 - 栈与队列

栈 闲聊 栈是一个线性表 栈的特点是后进先出 然后是一个公式 比如123要入栈&#xff0c;一共有5种排列组合的出栈 栈的数组实现 这里有两种情况&#xff0c;&#xff0c;一个是有下标为-1的&#xff0c;一个没有 代码不用看&#xff0c;真题不会考 栈的链式存储结构 L ->…

【RTP】Intra-Refresh模式下的 H.264 输出,RTP打包的方式和普通 H.264 流并没有本质区别

对于 Intra-Refresh 模式下的 H.264 输出,RTP 打包 的方式和普通 H.264 流并没有本质区别:你依然是在对一帧一帧的 NAL 单元进行 RTP 分包,只不过这些 NAL 单元内部有部分宏块是 “帧内编码” 而已。下面分步骤说明: 1. 原理回顾:RFC 6184 H.264 over RTP 按照 RFC 6184 …

Redis实战-消息队列篇

前言&#xff1a; 讲讲做消息队列遇到的问题。 今日所学&#xff1a; 异步优化消息队列基于stream实现异步下单 1. 异步优化 1.1 需求分析 1.1.1 现有下单流程&#xff1a; 1.查询优惠劵 2.判断是否是秒杀时间&#xff0c;库存是否充足 3.实现一人一单 在这个功能中&…

(三)Linux性能优化-CPU-CPU 使用率

CPU使用率 user&#xff08;通常缩写为 us&#xff09;&#xff0c;代表用户态 CPU 时间。注意&#xff0c;它不包括下面的 nice 时间&#xff0c;但包括了 guest 时间。nice&#xff08;通常缩写为 ni&#xff09;&#xff0c;代表低优先级用户态 CPU 时间&#xff0c;也就是进…

佰力博科技与您探讨材料介电性能测试的影响因素

1、频率依赖性 材料的介电性能通常具有显著的频率依赖性。在低频下&#xff0c;偶极子的取向极化占主导&#xff0c;介电常数较高&#xff1b;而在高频下&#xff0c;偶极子的取向极化滞后&#xff0c;导致介电常数下降&#xff0c;同时介电损耗增加。例如&#xff0c;VHB4910…

K8S认证|CKS题库+答案| 4. RBAC - RoleBinding

目录 4. RBAC - RoleBinding 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、查看SA和role 3&#xff09;、编辑 role-1 权限 4&#xff09;、检查role 5&#xff09;、创建 role和 rolebinding 6&#xff0…

React 新项目

使用git bash 创建一个新项目 建议一开始就创建TS项目 原因在Webpack中改配置麻烦 编译方法:ts compiler 另一种 bable 最好都配置 $ create-react-app cloundmusic --template typescript 早期react项目 yarn 居多 目前npm包管理居多 目前pnpm不通用 icon 在public文件夹中…

AI编程在BOSS项目的实践经验分享

前言 在人工智能技术革新浪潮的推动下&#xff0c;智能编程助手正以前所未有的速度重塑开发领域。这些基于AI的代码辅助工具通过智能提示生成、实时错误检测和自动化重构等功能&#xff0c;显著提升了软件工程的全流程效率。无论是初入行业的开发者还是资深程序员&#xff0c;…

数学:”度量空间”了解一下?

度量空间是现代数学中一种基本且重要的抽象空间。以下是对它的详细介绍&#xff1a; 定义 相关概念 常见的度量空间举例 度量空间的类型 度量空间的作用 度量空间是拓扑空间的一种特殊情况&#xff0c;它为拓扑空间的研究提供了具体的模型和实例。同时&#xff0c;度量空间在…

jenkins脚本查看及备份

位置与备份 要完整备份 Jenkins 的所有脚本和相关配置&#xff0c;包括 Jenkinsfile、构建脚本&#xff08;如 .sh / .bat&#xff09;、Job 配置、插件、凭据等&#xff0c;你可以从两个层面入手&#xff1a; ✅ 一、完整备份 Jenkins 主目录&#xff08;最全面&#xff09; …

用电脑通过网口控制keysight示波器

KEYSIGHT示波器HD304MSO性能 亮点: 体验 200 MHz 至 1 GHz 的带宽和 4 个模拟通道。与 12 位 ADC 相比,使用 14 位模数转换器 (ADC) 将垂直分辨率提高四倍。使用 10.1 英寸电容式触摸屏轻松查看和分析您的信号。捕获 50 μVRMS 本底噪声的较小信号。使用独有区域触摸在几秒…