python的編碼規則,描述python代碼的編碼規範

本文目錄一覽:

python是什麼編碼格式

python編碼總結:

1).首先python有兩種格式的字符串,str和unicode,其中unicode相當於字節碼那樣,可以跨平台使用。

str轉化為unicode可以通過unicode(),u,str.decode三種方式

unicode轉化為str,如果有中文的話,一般通過encode的方式

2).如果代碼中有中文的話,我們一般會添加 “# coding=utf-8″,這個是什麼作用呢,一般如下:

如果代碼中有中文注釋,就需要此聲明比較高級的編輯器(比如我的emacs),會根據頭部聲明,將此作為代碼文件的格式。程序會通過

頭部聲明,解碼初始化 u”人生苦短”,這樣的unicode對象,(所以頭部聲明和代碼的存儲格式要一致

所以,當我們填上編碼頭的時候,使用s=”中文”,實際上type(s)是一個str,是已經將unicode以utf-8格式編碼成str。

其次,如果我們在代碼中使用s=u’中文’,相當於將str以utf-8解碼成unicode。

推薦學習《python教程》。

python有哪幾種編碼方式

第一種:ASCII碼。是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,它是現今最通用的單字節編碼系統,並等同於國際標準IS/IEC

646。

由於計算機是美國人發明的,因此,最早只有127個字母被編碼到計算機李,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母a的編碼是97,後128個稱為擴展ASCII碼。

第二種:GBK和GB2312。能在計算機中顯示中文字符是至關重要的,然而ASCII表裡一個偏旁部首都沒有,所以我們需要一個關於中文和數字對應的關係表,一個字節只能最多表示256個字符,用處理中文顯然一個字節是不夠的,所以我們需要採用兩個字節來表示,所以中國制定了GB2312編碼,用來將中文編寫進去。

第三種:Unicode。因為各個國家都有一套自己的編碼,所以無法避免衝突,因此Unicode誕生了。它可以把所有語言都統一到一套編碼里,這樣就不會存在亂碼問題了,現代操作系統和大多數編程語言都直接支持Unicode。

第四種:UFT-8。基於節約的原則,出現了把Unicode編碼轉化為可變長編碼的UTF-8編碼。而UTF-8編碼把一個Unicode字符根據不同的數字大小編碼成1-6個字節,常用的英文字母被編碼成一個字節,漢字通常是3個字節,只有很生僻的字符才會被編碼成4-6個字節,如果你要傳輸的文本包含大量英文字符,用UTF-8編碼就能節省空間。

Python 字符集編碼 – UTF-8 編碼

Unicode 的編碼範圍為 0~0x10FFFF ,如此大的範圍,顯然沒辦法像 ASCII 編碼一樣使用一個字節存儲。為此,Unicode 制定了各種儲存編碼的方式,如: UTF-8 、 UTF-16 和 UTF-32 ,這些存儲格式被稱為 Unicode 轉換格式 UTF 。

每種 Unicode 轉換格式都會把一個編碼存儲為一到多個編碼單元,如 UTF-8 的編碼單元為 8 位的字節; UTF-16 的編碼單元為 16 位,即 2 個字節; UTF-32 的編碼單元為 32 位,即 4 個字節。

其中, UTF-8 是在互聯網上使用最廣泛的一種 Unicode 轉換格式,具有以下顯著的優勢。下面,我們就先來看看 UTF-8 具有哪些有點吧~

1. UTF-8 中每個 ASCII 字符只需要一個字節去存儲,因此一個 ASCII 文本本身也是一個 UTF-8 文本,即做到了向後兼容。

比如 A 的 ASCII 碼對應為 0x41 , a 的 ASCII 碼對應為 0x61 ,那麼 UTF-8 兼容 ASCII 也就意味着:

這裡,需要再次提醒一下:Unicode 是表現形式,UTF-8 是存儲形式;即 UTF-8 解碼之後為 Unicode ,Unicode 可以編碼成 UTF-8 。

2. UTF-8 採用字節為存儲單元,因此不存在字節的大端和小段的問題。

UTF-16 和 UTF-32 的存儲單元分別是 2 字節和 4 字節,因此在存儲時會涉及到大小端的問題。那什麼是大小端模式呢?下面我們來暫停補充一下~

關於如何獲知你的環境使用的是大端模式還是小端模式,這裡有個簡單的方式:定義一個 short 類型的數組即可:

數字 1 在 short 類型中表示為 0x0001 ,高位為 0x00 ,低位為 0x01 。我們可以很直觀地看到,數組在保存數據時,將高位 0x00 放在了高地址處,將低位 0x01 放在了低地址處。因此使用的就是小端模式。

那 UTF-8 為什麼可以使用字節來作為存儲單元,而不用擔心字節序的問題呢?這就涉及到了 UTF-8 巧妙的編碼規則~

UTF-8 最大的一個特點,就是它是一種變長的編碼方式。它可以使用 1~4 個字節表示一個符號,根據不同的符號而變化字節長度。UTF-8的編碼規則很簡單,只有二條:

1)對於單字節符號,字節的第一位設為 0 ,後 7 位為這個符號的 Unicode 碼。也就是我們上文提到的向後兼容:對於英文字母,UTF-8 編碼和 ASCII 碼是相同的。

2)對於使用 X 個字節存儲的符號,第一個字節的前 X 位設置為 1 ,第 X+1 位設置為 0 ,後面字節的前 2 位一律設置為 10 ,剩下的位置一次填充這個符號的 Unicode 碼。

下表總結了編碼規則,字母 x 表示可用於編碼的位:

跟據上表,解讀 UTF-8 編碼也非常簡單:如果一個字節的第一位是 0 ,則這個字節單獨就是一個字符;如果第一位是 1 ,則連續有多少個 1 ,就表示當前字符佔用多少個字節。

下面,我們就來演示一下 UTF-8 編碼的過程。

首先,獲取漢字 魚 的 Unicode 碼:

我們不妨先對 魚 這個漢字使用 utf-8 編碼看看使用幾個字節存儲:

魚 在 UTF-8 編碼中使用 3 個字節存儲,因此其存儲的二進制的形式為 1110xxxx 10xxxxxx 10xxxxxx ,將 Unicode 1001 110001 111100 依次填充到佔位符 x 的位置就得到: 11101001 10110001 10111100 。

下面,我們將上述推導得出的 11101001 10110001 10111100 轉換為十六進制,驗證一下是否為 b’\xe9\xb1\xbc’ :

驗證無誤!

python程序有哪些編碼規範

編碼格式聲明

通常,編碼格式聲明是必需的。如果 python 源碼文件沒有聲明編碼格式,python 解釋器會默認使用 ASCII 編碼,一旦源碼文件包含非ASCII編碼的字符,python 解釋器就會報錯。以 UTF-8 為例,以下兩種編碼格式聲明都是合乎規則的。

縮進

統一使用 4 個空格進行縮進。絕對不要用tab, 也不要tab和空格混用。對於行連接的情況,我一般使用4空格的懸掛式縮進。例如:

引號

自然語言使用雙引號

機器標識使用單引號

正則表達式使用雙引號

空行

編碼格式聲明、模塊導入、常量和全局變量聲明、頂級定義和執行代碼之間空兩行

頂級定義之間空兩行,方法定義之間空一行

在函數或方法內部,可以在必要的地方空一行以增強節奏感,但應避免連續空行

導入模塊

導入總應該放在文件頂部,位於模塊注釋和文檔字符串之後,模塊全局變量和常量之前。導入應該按照從最通用到最不通用的順序分組,分組之間空一行

標準庫導入

第三方庫導入

應用程序指定導入

命名規範

模塊盡量使用小寫命名,首字母保持小寫,盡量不要用下劃線

類名使用駝峰(CamelCase)命名風格,首字母大寫,私有類可用一個下劃線開頭

函數名一律小寫,如有多個單詞,用下劃線隔開

私有函數可用一個下劃線開頭

變量名盡量小寫, 如有多個單詞,用下劃線隔開

常量採用全大寫,如有多個單詞,使用下劃線隔開

Python 源程序編碼注意事項?

默認情況下,Python 源文件是 UTF-8 編碼。在此編碼下,全世界大多數語言的字符可以同時用在字符串、標識符和注釋中 — 儘管 Python 標準庫僅使用 ASCII 字符作為標識符,這只是任何可移植代碼應該遵守的約定。如果要正確的顯示所有的字符,你的編輯器必須能識別出文件是 UTF-8 編碼,並且它使用的字體能支持文件中所有的字符。

你也可以為源文件制定不同的字符編碼。為此,在 #! 行(首行)後插入至少一行特殊的注釋行來定義源文件的編碼:

# -*- coding: encoding -*-

通過此聲明,源文件中所有的東西都會被當作用 encoding 指代的 UTF-8 編碼對待。在 Python 庫參考手冊 codecs 一節中你可以找到一張可用的編碼列表。

例如,如果你的編輯器不支持 UTF-8 編碼的文件,但支持像 Windows-1252 的其他一些編碼,你可以定義:

# -*- coding: cp-1252 -*-

這樣就可以在源文件中使用 Windows-1252 字符集中的所有字符了。這個特殊的編碼注釋必須在文件中的 第一或第二 行定義。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/301487.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-30 16:09
下一篇 2024-12-30 16:09

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29

發表回復

登錄後才能評論