Python學習日記-資料型別和變數

weixin_33670713發表於2017-12-21

本章目錄

  • Part One:Python數字
  • Part Two:變數

在Python中,一切皆物件,包括數字等,也就是說沒有基本資料型別的概念。Python的物件分為可變(mutable)和不可變物件(immutable)兩大類,元組、數值、字串屬於不可變物件;字典和列表屬於可變物件。
上述的幾個也組成了Python的五個標準的資料型別:

  • Numbers(數字)
  • String(字串)
  • List(列表)
  • Tuple(元組)
  • Dictionary(字典)

Python數字

數字資料型別用於儲存數值。他們是不可改變的資料型別,這意味著改變數字資料型別會分配一個新的物件。
Python中數字主要由三種:整數,浮點數和複數。

  1. 整數
    在Python中的2.x中,整數有兩種:整數(int)和長整數(long)。它會自動將超過整型長度的數字轉換為長整型(數字最後加上L字母表示長整形)。但是Python3中已經沒有long型別了,int和long都叫整型(int)。
    整數也包括負整數,和數學中所理解的整數一致,寫法也一樣,例如:100, -200, 0等。
    計算機由於使用二進位制,所以,有時候用十六進位制表示整數比較方便,十六進位制用0x字首和0-9,a-f表示,例如:0x69, 0xff00等。
    在Python中,還有一個整型常量池的概念。就是說,在實際開發過程中,對於頻繁出現的整型,快取到物件池中,這樣可以減少物件的建立。在Python互動模式中,整數常量池是[-5, 257)之間的數,而在統一程式碼塊中,下限-5是正確的,上限無。


    6879662-60089c6d8653ef76.png
    整型物件池.png
  2. 浮點數
    浮點數也就是數學上的小數,寫法類似於3.14, 2.58等。對於很大或者很小的浮點數,可以用科學計演算法表述,例如1.23x10的9次方就是1.23e9,0.000012可以寫成1.2e-5等等。
    跟Java一樣,整數是精確的,浮點數可能會存在四捨五入的誤差。
    浮點數沒有常量池的概念,不過作為同一程式碼組的時候,結果又是另一種情況,詳情參考下列連結:https://www.zhihu.com/question/53536750

    6879662-74d4a6553810d5ab.png
    浮點數.png

  3. 複數
    複數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裡的x和y都是實數。
    另外,經測試,負數沒有物件池這個概念。

  4. 布林值
    Python文件中bool(布林值)不屬於數字型別,但是這裡也把bool型別放在這裡來說,因為bool是int的子類。
    布林值和布林代數的表示完全一致,一個布林值只有True、False兩種值,要麼是True,要麼是False,在Python中,可以直接用True、False表示布林值(請注意大小寫)。

變數

  1. 變數
    變數儲存在記憶體中的值。這就意味著在建立變數時會在記憶體中開闢一個空間。基於變數的資料型別,直譯器會分配指定記憶體,並決定什麼資料可以被儲存在記憶體中。因此,變數可以指定不同的資料型別,這些變數可以儲存整數,小數或字元。
    比如,我們把先前說的四個物件型別分別列印出來:


    6879662-ff73cf1330ba2a93.png
    物件型別.png

    等號左邊是變數, 等號是賦值語句,等號右邊是變數的值。
    這種變數本身型別不固定的語言稱之為動態語言,與之對應的是靜態語言。靜態語言在定義變數時必須指定變數型別,如果賦值的時候型別不匹配,就會報錯。例如Java是靜態語言,和靜態語言相比,動態語言更靈活,就是這個原因。
    注意,等號是賦值的意思,並不是數學意義上的等於的意思。

  2. 空值
    空值是Python裡一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。
  3. 常量
    所謂常量就是不能變的變數,比如常用的數學常數π就是一個常量。在Python中,通常用全部大寫的變數名錶示常量。但事實上PI仍然是一個變數,Python根本沒有任何機制保證PI不會被改變,所以,用全部大寫的變數名錶示常量只是一個習慣上的用法。

相關文章