2018-05-14 代碼考古-Python3官方教程字典常式

来源:https://www.cnblogs.com/program-in-chinese/archive/2019/03/08/10493620.html
-Advertisement-
Play Games

"知乎原鏈" 5. "Data Structures" 中的第一個常式: 大多數讀者也許都認為這些字元串和數字並沒有特別意義. 如果真是這樣, 這個常式還不如用 之類來的一目瞭然, 省去多餘的猜度. 不巧發現"guido"是Python創作者的名字(Guido van Rossum), 就覺得不該這 ...


知乎原鏈

  1. Data Structures中的第一個常式:
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
>>> list(tel.keys())
['irv', 'guido', 'jack']
>>> sorted(tel.keys())
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False

大多數讀者也許都認為這些字元串和數字並沒有特別意義. 如果真是這樣, 這個常式還不如用 dict = {'aa': 100, 'bb': 200} 之類來的一目瞭然, 省去多餘的猜度.

不巧發現"guido"是Python創作者的名字(Guido van Rossum), 就覺得不該這麼簡單. 根據python源碼27年前的commit6fc178f46d40aa068a713b509904d343ee55cfa6, 這個教程中的示例代碼是Guido本人編寫的. 因此與他1991年8月附近的經歷應該有關. 接著找到他的簡歷中的:

From 1986 till 1991 I was with the Amoeba project, headed by Sape Mullender

發現Sape也是人名, 基本可以確定是他的同事的名字. 接下去搜到這裡"Open Software Foundation"文末, Sape Mullender的電話是+20-592 4139, 可以印證常式中的變數tel應該指的是當時他們的電話號碼後四位.

接著找到Jack的號碼: +31 20 592 4098

另外還找到Guido用過4127這一號碼, 也許這是CWI那時的一個多人號碼, 如此文, 就能解釋這個代碼示例中還有"irv"也映射到了這個號碼.

原來, 這是一個電話簿. 考慮到Python創造之初, 主要用戶都是Guido的同事, 也是當時他寫教程的讀者, 這個示例代碼對於他們來說是很容易理解的. 但隨著幾十年Python的推廣, 它的含義也就被掩埋了.

英文代碼風格中不提倡縮寫名詞挺合理的. 如果原常式中的變數名是phone或者telephone, 也會比tel好理解一些. 字元串的首字母大寫也會更易於理解它們是人名. 漢化示例代碼時, 打算就用"電話簿"作變數名.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 環境搭建 使用的Eclipse版本: Oxygen.1a Release (4.7.1a) Build id: 20171005 1200, 通過添加 "Xtext Download" 上列出的Releases update site安裝xtext IDE和xtext SDK. 之後打開Eclips ...
  • 李際軍老師“面向對象程式設計”課程第一課筆記整理 面向對象程式設計概述 20世紀90年代以來面向對象程式設計(Object Oriented Programming, 簡稱OOP) 迅速地在全世界流行, 並一躍成為程式設計的主流技術。 現在,面向對象程式設計的思想已經被越來越多的軟體設計人員所接受, ...
  • 一、前言 裝飾模式實際上是一直提倡的組合代替繼承的實踐方式,個人認為要理解裝飾者模式首先需要理解為什麼需要組合代替繼承,繼承又是為什麼讓人深惡痛絕. 為什麼建議使用組合代替繼承? 面向對象的特性有繼承與封裝,但兩者卻又有一點矛盾,繼承意味子類依賴了父類中的實現,一旦父類中改變實現則會對子類造成影響, ...
  • dfdfd ...
  • 1.瞭解Spring Spring是一個基於IOC和AOP的結構J2EE系統的框架 Spring是一種單純的管理代碼的框架,和web編程沒什麼直接關係. 作用:調用類對象的時候不採用new的方式而是提前聲明這些類,第一種採用註解的方式(@),第二種採用xml代碼聲明 將核心業務和周邊功能編織在一起. ...
  • 一、數據類型 1位元組=8位 boolean 1位元組 false byte 1位元組 0 -128 127 char 2位元組 空 short 2位元組 0 -32768 32767 int 4位元組 0 -2,147,483,648 2,147,485,647 float 4位元組 0.0 double 8字 ...
  • (見前: "中文代碼示例視頻演示Python入門第五章 數據結構" 仍然基於官方文檔, 歡迎建議(尤其是如何取材). "5. Data Structures More on Lists 列表詳述" "5. Data Structures Using Lists as Stacks 用列表實現棧" " ...
  • 1.異常 當出現錯誤時,程式就會發生異常 輸入num1=3,num2=0,程式產生異常 除了除零異常,還有許多種異常: (1)異常捕獲 使用try…except…語句來捕獲異常 輸出結果: 也可以在except後面加上具體的異常 (2)處理多個異常 上面的例子不止會出現除零異常,如果我輸入的不是數字 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...