Python 指南:02 數據類型

Python 指南:02 數據類型

Python 指南:02 數據類型

數據類型導圖

1、標識符與關鍵字

創建一個數據項時,我們或者將其賦值給一個變量,或者將其插入到一個組合中。為對象引用賦予的名稱叫標識符

1.1 規則

有效的Python標識符是任意長度的飛空字符序列,其中包括一個“引導字符”,以及0個或多個“後續字符”,Python標識符必須符合兩條規則

  1. 只要是Unicode編碼的字母,都可以充當引導字符,包括ASCII字母、下劃線以及大多數非英文語言的字母。
  2. Python標識符不能與Python關鍵字同名。

如何查看Python關鍵字呢?只需兩行代碼:

Python 指南:02 數據類型

查看Python關鍵字

輸出結果如下:

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

1.2 約定

  1. 不要使用Python預定義的標識符名對自定義的標識符進行命名。
  2. 避免使用開頭和結尾都是下劃線的標識符。因為Python定義了各種特殊方法和變量,使用的就是這樣的名稱。

2、Integral類型

Python提供了兩種內置的Integral類型,即 int bool 。在布爾表達式中,0與False都表示False,其他任意整數與True都表示True。在數字表達式中,True表示1,False表示0。

2.1 整數

整數的大小隻受限於機器的內存大小。默認情況下,整數採用的是十進制。二進制以

0b引導,八進制以0o引導,十六進制以0x引導,大小寫都可以。

2.1.1 數值型操作符與函數

Python 指南:02 數據類型

數值型操作符與函數

所有二元數學操作符(+、-、*、/、//、%、與**)都有相應的增強版賦值操作符(+=、-=、*=、/=、//=、%=、與**=)。

2.1.2 使用數據類型創建對象

對象的創建可以通過給變量賦字面意義上的值,比如x=17,或者將相關的數據類型作為函數進行調用,比如x=int(17)。

使用數據類型創建對象時,有3種用例:

  1. 不使用參數調用數據類型函數。此時,對象會被賦值為一個默認值,比如x=int()會創建一個值為0的整數。所有內置數據類型都可以作為函數並不帶任何參數進行調用。
  2. 使用一個參數調用數據類型函數。如果給定的參數是同樣的數據類型,就會創建一個新對象;否則會嘗試進行轉換。
  • 如果給定參數支持到給定數據類型的轉換,但是轉換失敗,會產生一個ValueError異常,否則返回給定類型的對象。
  • 如果給定參數不支持到給定數據類型的轉換,就會產生一個
    TypeError異常。

整數轉換函數:

Python 指南:02 數據類型

3.給定兩個或多個參數——但不是所有數據類型都支持,而對支持這一情況的數據類型,參數類型以及內涵都是變化的。

2.1.3 整數位邏輯操作符

Python 指南:02 數據類型

2.2 布爾型

有兩個內置的布爾型對象:TrueFalse

布爾數據也可以當做函數進行調用——不指定參數時將返回False,給定的是布爾型參數時,會返回該參數的一個拷貝,給定的是其他類型的參數時,則會嘗試將其轉換為布爾數據類型。

所有內置的數據類型與標準庫提供的數據類型都可以轉換為一個布爾型值。

3、浮點類型

Python提供了3中浮點值:內置的float與complex類型,以及來自標準庫的decimal.Decimal類型。

float類型存放雙精度的浮點數。

3.1 浮點數

比較兩個float數是否相等(按機器所能提供的最大精度):

Python 指南:02 數據類型

Python的floatS通常會提供之多17個數字的精度。

3.2 複數

複數這種數據類型是固定的,其中存放的是一對浮點數,一個表示實數部分,一個表示虛數部分。複數的兩個部分都以屬性名的形式存在,分別為real與imag,例如:

Python 指南:02 數據類型

除//、%、divmod()以及三個參數的pow()之外,所有數值型操作符與函數都可以用於對複數進行操作,賦值操作符的增強版也可以。

複數類型有一個方法conjugate()用於改變虛數部分的符號,例如:

Python 指南:02 數據類型

要使用複數,可以先導入cmath模塊,該模塊提供了math模塊中大多數三角函數與對數的複數版,也包括一些複數特定的函數。

3.3 十進制數

decimal模塊可以提供固定的十進制數,其精度可以由我們自己指定。涉及Decimals的計算要比浮點數的計算慢。

Python 指南:02 數據類型

十進制數是由decimal.Decimal()函數創建,該函數可以接受一個整數或一個字符串作為參數——但不能以浮點數作為參數,因為浮點數不夠精確。

4、字符串

字符串是使用固定不變的str數據類型表示的,其中存放Unicode字符序列。

4.1 str()函數

str()函數的用法:

  • 創建字符串對象,參數為空時,返回一個空字符串,參數為非字符串類型時返回改參數的字符串形式,參數為字符串時,返回該字符串的拷貝。
Python 指南:02 數據類型

  • 轉換函數,此時要求第一個參數為字符串或可以轉換為字符串的其他數據類型,其後跟兩個可選的字符串參數,其中一個用於指定要使用的編碼格式,另一個用於指定如何處理編碼錯誤。

4.2 字符串的表示

  • 單引號:s = 'hello'
  • 雙引號:s = "hello"
  • 三引號:s = '''hello python'''s = """hello python"""

在引號包含的字符串中使用引號:

  • 使用與引號包含的字符串不同的引號,例如s = "this is a 'str'."
  • 如果兩者引號相同,那就需要使用轉義字符,例如s = "this is a "str"."

如果要寫一個長字符串,跨越了多行,如何表示?

  • 使用三引號(注意行尾的"",如果不加,則打印出來帶有換行符):
Python 指南:02 數據類型

  • 使用"+"和"":
Python 指南:02 數據類型

  • 使用圓括號:
Python 指南:02 數據類型

Python的“Idioms and Anti-Idioms”HOWTO文檔建議總是使用圓括號將跨越多行的任何語句進行封裝,而不使用專一的換行符

4.3 字符串的分片與步長

字符串的索引位置從0開始,直至字符串長度值減去1。使用負索引位置也可以,此時的計數方式是從最後一個字符到第一個字符。

假如我們設置s='Python',下圖展示了字符串所有有效索引位置:

Python 指南:02 數據類型

、字符串索引位

分片操作有三種語法:

  • seq[start] :從序列中提取start位置的數據項。
  • seq[start:end] :從start開始到end結束的數據項(不包含)。
  • seq[start: end:step] :從start開始到end結束的數據項(不包含)每隔step個字符進行提取。

其中seq可以是任意序列,比如列表、字符或元組。start、end與step必須是整數

第二和第三種語法,我們可以忽略任意的整數索引值:忽略起點索引值,就默認為0;如果忽略終點索引值,就默認為len(seq)

step可以為負值,如果為負值就從end開始往start方向提取,我們可以利用這一特性進行序列的倒序排列操作:

Python 指南:02 數據類型

4.4 字符串操作符與方法

由於字符串是固定序列,所有可用於固定序列的功能都可以用於字符串,包括使用in進行成員測試,使用+=進行追加操作,使用*進行復制操作等。

s = 'i like Python':

Python 指南:02 數據類型

Python還有一些其他庫模塊提供字符串相關的功能:

  • difflib,用於展示文件或字符串之間的差別
  • io模塊的io.StringIO類,用於讀寫字符串,就像對文件的讀寫操作一樣
  • textwrap,該模塊提供了用於包裹於填充字符串的函數和方法
  • string,其中定義了一些有用的常量,比如ascii_letters與ascii_lowercase

4.5 str.format()對字符串格式化

str.format()方法會返回一個新字符串,在新字符串中,原字符串中的替換字段被適當格式化後的參數所替代,格式化後的參數可以是字符串或數字類型:

Python 指南:02 數據類型

如果需要在格式化字符串中包含花括號,就需要將其複寫:

Python 指南:02 數據類型

str.format()替換字段可以使用下面的任意一種語法格式:

  • {field_name}
  • {field_name!conversion}
  • {field_name:format_specification}
  • {field_name!conversion:format_specification}

字段名是一個與某個str.format()方法參數對應的整數,或者是方法的某個關鍵字參數的名稱

Python 指南:02 數據類型

字段名可以引用集合數據類型,例如:列表

Python 指南:02 數據類型

從Python3.1開始,我們可以忽略字段名:

Python 指南:02 數據類型

本人《Python遊戲開發》專欄推薦:https://xiaozhuanlan.com/PythonGames

Python 指南:02 數據類型


分享到:


相關文章: