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

🐍《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 PetersBeautiful 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.pswp.cn/web/82938.shtml

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

相关文章

DiMTAIC 2024 数字医学技术及应用创新大赛-甲状腺B超静态及动态影像算法赛-参赛项目

参赛成绩 项目介绍 去年参加完这个比赛之后,整理了项目文件和代码,虽然比赛没有获奖,但是参赛过程中自己也很有收获,自己一个人搭建了完整的pipeline并基于此提交了多次提高成绩,现在把这个项目梳理成博客&#xff0c…

绘制饼图详细过程

QtCharts绘制饼图 说明:qcustomplot模块没有绘制饼图的接口和模块,所以用Qt官方自带的QtCharts进行绘制。绘制出来还挺美观。 1 模块导入 QT chartsQT_BEGIN_NAMESPACE以上这两行代码必须得加 2 总体代码 widget.h #ifndef WIDGET_H #defin…

本地windows主机安装seafile部署详解,及无公网IP内网映射外网访问方案

在Windows上部署Seafile服务器是一个相对直接的过程,但需要你具备一定的系统管理知识。Seafile是一个开源的文件共享和协作平台,类似于Dropbox或Google Drive。 以下是在Windows上部署Seafile服务器的步骤: 1. 准备环境 确保你的Windows系…

Vue学习之---nextTick

前言:目前来说,nextTick我们遇到的比较少,至少对我来说是这样的,但是有一些聪明的小朋友早早就注意到这个知识点了。nextTick 是前端开发(尤其是 Vue 生态)中的核心知识点,原理上跟Vue的异步更新…

MS2691 全频段、多模导航、射频低噪声放大器芯片,应用于导航仪 双频测量仪

MS2691 全频段、多模导航、射频低噪声放大器芯片,应用于导航仪 双频测量仪 产品简述 MS2691 是一款具有 1164MHz  1615MHz 全频段、低功耗的低噪声放大器芯片。该芯片通过对外围电路的简单配置,使得频带具有宽带或窄带特性。支持不同频段的各种导…

学习STC51单片机30(芯片为STC89C52RCRC)

每日一言 当你感到疲惫时,正是成长的关键时刻,再坚持一下。 IIC协议 是的,IIC协议就是与我们之前的串口通信协议是同一个性质,就是为了满足模块的通信,其实之前的串口通信协议叫做UART协议,我们千万不要弄…

python打卡day47@浙大疏锦行

昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 以下是不同卷积层特征图可视化的对比实现: import torch import matplotlib.pyplot as pltdef compare_conv_layers(model, input_tensor):# …

蓝桥杯单片机之通过实现同一个按键的短按与长按功能

实现按键的短按与长按的不同功能 问题分析 对于按键短按,通常是松开后实现其功能,而不会出现按下就进行后续的操作;而对于按键长按,则不太一样,按键长按可能分为两种情况,一是长按n秒后实现后续功能&…

数据导入技术(文档加载)

1. 简单文本的读取 用LangChain读入txt文档 # 读取单个txt文件 import os from langchain_community.document_loaders import TextLoader # 获取当前脚本文件所在的目录 script_dir os.path.dirname(__file__) print(f"获取当前脚本文件所在的目录:{script…

靶场(二十)---靶场体会小白心得 ---jacko

老样子开局先看端口,先看http端口 PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 10.0 |_http-title: H2 Database Engine (redirect) | http-methods: |_ Potentially risky methods: TRACE |_http-server-header:…

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…

|从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面

🐑 |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面 🐑 文章目录 🐑 |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面 🐑♈前言♈♈调取Deepseek大模型♈♒准备工作♒♒调用API♒ ♈将模型嵌入到ui界面中♈♈…

如何利用Elastic Stack(ELK)进行安全日志分析

在以下文章中,我将解释如何使用Elastic Stack(ELK)进行安全日志分析,以提高安全性和监控网络活动。ELK是一个功能强大的开源日志管理和分析平台,由Elasticsearch、Logstash和Kibana组成,适用于各种用例&…

网络安全-等级保护(等保)3-0 等级保护测评要求现行技术标准

################################################################################ 第三章:测评要求、测评机构要求,最终目的是通过测评,所以我们将等保要求和测评相关要求一一对应形成表格。 GB/T 28448-2019 《信息安全技术 网络安全等…

网络通讯知识——通讯分层介绍,gRPC,RabbitMQ分层

网络通讯分层 网络通讯分层是为了将复杂的网络通信问题分解为多个独立、可管理的层次,每个层次专注于特定功能。目前主流的分层模型包括OSI七层模型和TCP/IP四层(或五层)模型,以下是详细解析: 一、OSI七层模型&#…

gopool 源码分析

gopool gopool是字节跳动开源节流的gopkg包中协程池的一个实现。 关键结构 协程池: type pool struct {// The name of the poolname string// capacity of the pool, the maximum number of goroutines that are actually working// 协程池的最大容量cap int32…

【工作记录】接口功能测试总结

如何对1个接口进行接口测试 一、单接口功能测试 1、接口文档信息 理解接口文档的内容: 请求URL: https://[ip]:[port]/xxxserviceValidation 请求方法: POST 请求参数: serviceCode(必填), servicePsw(必填) 响应参数: status, token 2、编写测试用例 2.1 正…

Linux中su与sudo命令的区别:权限管理的关键差异解析

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…

乐观锁与悲观锁的实现和应用

乐观锁与悲观锁:原理、实现与应用详解 在并发编程和数据库操作中,乐观锁和悲观锁是两种重要的并发控制策略,它们在原理、实现方式和应用场景上存在显著差异。下面我们将通过图文结合的方式,深入探讨这两种锁机制。 一、基本概念 1…

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…