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
繁體地址,請注明出處:http://hk.pswp.cn/web/82938.shtml
英文地址,請注明出處:http://en.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有太多得交互動作,從而會影響…