Python 為什麼不用分號作終止符?

来源:https://www.cnblogs.com/pythonista/archive/2020/05/27/12977205.html
-Advertisement-
Play Games

一般而言,編程語言中使用分號“;”來實現兩種目的: 作為語句分隔符:使用分號來分隔語句(statement),這樣就能在一行代碼中書寫多條語句(一行多句) 作為語句終止符:使用分號來終止語句,這樣就能把多行代碼識別為一條語句(一句多行) 單純看“分隔符”與“終止符”,它們都是必須的,然而是否都要用分 ...


一般而言,編程語言中使用分號“;”來實現兩種目的:

  1. 作為語句分隔符:使用分號來分隔語句(statement),這樣就能在一行代碼中書寫多條語句(一行多句)
  2. 作為語句終止符:使用分號來終止語句,這樣就能把多行代碼識別為一條語句(一句多行)

單純看“分隔符”與“終止符”,它們都是必須的,然而是否都要用分號來表示呢?這個問題沒有達成一致的標準。

Python 中使用了分號作為語句分隔符,但是不用分號作為終止符, 而是用了換行作為終止符。

若在一句完整的語句末尾加了分號,然後換行,那麼 IDE 一般會提示“Trailing semicolon in the statement”,提示著這個“尾隨分號”是多餘的。

按我粗淺的理解,尾隨分號實際會被當成分隔符,只不過它後面是“空語句”,然後是換行(即終止符)。分隔空語句是無必要的,所以尾隨分號就成了多餘的。

Python 不用分號作為終止符,大概有如下的原因:

  1. 它把縮進和換行當成文法的有效部分,可以表達出完整的語義,不會導致編譯時的歧義。這是最主要的原因,是跟“分號黨”的根本區別
  2. 不用分號與花括弧,但是使用縮進和冒號,這是一脈相承的思路,總體上形成了更高的可讀性、簡潔性和標準化。這體現了局部語法與整體規則的關係,1 + 1 > 2
  3. 可以少寫字元,也避免了在某些鍵盤上要敲“shift”鍵的麻煩
  4. 分號主要是給機器看的,但 Python 更註重於人性化。早期硬體有所限制,加分號可以提升解析/編譯的速度,但如今障礙已除,某些分號黨語言只是在延續 B/C 語言的老傳統
  5. 對於需要換行的語句,Python 中使用反斜杠(\)來連接,可以理解成它把換行給轉義了,能夠解決一句多行的問題

Python貓後臺回覆"0527"領取

關聯閱讀

1、A Brief History of the Semicolon in Programming

2、The End of the Semicolon Era

寫在最後

本文屬於“Python為什麼”系列文章(Python貓出品),該系列主要關註 Python 的語法、設計和發展等話題,以一個個“為什麼”式的問題為切入點,試著展現 Python 的迷人魅力。更多詳情:視頻地址


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

-Advertisement-
Play Games
更多相關文章
  • 第一步: 首先進入自己的博客園 -- 點擊<<設置>>--找到 <<博客側邊欄公告(支持HTML代碼) (支持 JS 代碼)>> 第二步: 加入如下代碼 <img style="width: 200px; height: 200px;" src="頭像路徑" alt="qq377905687的頭像" ...
  • 方法 說明 歸屬 alert(msg) 瀏覽器彈出警示框 瀏覽器 console.log(msg) 瀏覽器控制台列印輸出信息 瀏覽器 prompt(info) 瀏覽器彈出輸入框,用戶可以輸入 瀏覽器 程式示例: <!DOCTYPE html> <html lang="en"> <head> <met ...
  • 1.行內式js(很少使用) 以on開頭,如onclick HTML中推薦雙引號,JS推薦單引號 2.內嵌式js(常用) <script> alert('hello world'); <script> 3.外部js文件 <script src="my.js"></script> 利於代碼結構化 便於文 ...
  • 突發奇想,感覺ui組件的上傳圖片用著很方便,突然件想自己寫一個探索其原理 頭像上傳功能主要是前端通過formData將文件傳至伺服器然後伺服器將圖片保存至文件夾,並將其路徑返回至前端,前端渲染至頁面。 前端頁面如下所示(主要是為了寫一個簡單的例子): js部分:這裡使用的是原生的ajax請求將文件信 ...
  • 代碼示例:新聞頁面: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1 ...
  • 對於那些存在對象之間複雜交互關係的系統,中介者模式提供了一種簡化複雜交互的解決方案,即通過引入一個中介者,將原本對象之間的兩兩交互轉化為每個對象與中介者之間的交互 模式動機 以微信聊天為例,可以用戶與用戶直接聊天,也可以通過微信群聊天。前者的話,用戶要和別的用戶加為好友,即用戶和用戶之間存在多對多關 ...
  • 背景 阿裡雲上有個阿裡巴巴編碼規範認證,我估算一下時間成本很低,多個認證也沒什麼壞處,就花了1分錢報了個名。這個認證報名後就可以下載鏈接下的編碼規範,然後參加個考試應該就OK了。 共48頁的規範實際上每讀一遍都是要花一些時間的,因為每讀一遍就會發現上面有些東西我不信。我需要去證明。過去證明過的因為J ...
  • cartographer為Google提供的激光SLAM開源庫,通常通過其提供的ROS平臺封裝進行使用,該庫結構清晰,模塊完整,值得深入研究。 項目官網:https://google-cartographer.readthedocs.io/en/latest/ 項目Github:https://gi ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...