1.3.1 變量與內置數據類型
對象是Python最基本的概念之一,在Python中的一切都是對象,常用的內置對象如表1.3.1.1所示。除此之外,還有大量的標準庫對象和擴展庫對象,標準庫是Python默認安裝的,但需要導入之後才能使用其中的對象,擴展庫對象則需要先安裝擴展庫然後再導入並使用其中的對象。在Python中可以創建任意類型的變量,一般情況與對象的概念不作嚴格的區分。
對象類型 | 示例 | 簡要說明 |
數字 | 1234,3.14,1.3e5,3 + 4j | 數字大小沒有限制,且支持復數及其運算 |
字符串 | ‘swfu‘,"I love China",‘‘‘Python‘‘‘ | 字符串使用單引號、雙引號、三引號作為界定符 |
列表 | [1,2],[‘a‘,‘b‘,[‘c‘,2]] | 所有元素放在一對方括號中,元素之間使用逗號分隔 |
字典 | {1:‘food,2:‘taste‘,3:‘import‘} | 所有元素放在一對大括號中,元素之間使用逗號分隔,元素形式為“鍵:值” |
元組 | (2,-5,6) | 所有元素放在一對圓括號中,元素之間使用逗號分隔 |
文件 | f=open(‘data.dat‘,‘rb‘) | open是Python內置函數,使用指定的模式打開文件 |
集合 | set(a,b,c),{‘a‘,‘b‘,‘c‘} | 所有元素放在一對大括號中,元素之間使用逗號分隔,元素不允許重復 |
布爾型 | True,False | |
空類型 | None | |
編程單元 |
函數(使用def定義) 類(使用class定義) |
類和函數都屬於可調用對象 |
表1.3.1.1
在Python中,不需要想Java那樣事先聲明變量名及其類型,直接賦值即可創建各種類型的對象變量,並且變量的類型是可以改變的。例如,語句:
>>> x = 3
創建了整型變量 x , 並賦值為3
>>> x = ‘Hello World‘
創建了字符串變量 x , 並賦值為“Hello World”
>>> x = [1,2,3]
創建了列表對象 x , 並賦值為[1,2,3]。這一點同樣適用於元組、字典、集合以及Python其他任意類型的對象,以及自定義類型的對象。
雖然不需要再使用之前顯式地聲明變量機器類型,但是Python仍屬於強類型編程語言,Python解釋器會根據賦值來自動推斷變量類型。每種類型的對象支持的運算也不完全一樣,因此在使用變量時需要程序員自己確定所進行的運算是否合適,以免出現異常或者意料之外的結果。Python還是一種動態類型語言,也就是說,變量的類型可以隨時變化。如下代碼塊1.3.1.1所示:
1 >>> x = 3 2 >>> print(type(x)) #內置函數type用來返回變量類型 3 <class ‘int‘> 4 >>> 5 >>> x = ‘Hello World‘ 6 >>> print(type(x)) 7 <class ‘str‘> 8 >>> 9 >>> x = [1,2,3] 10 >>> print(type(x)) 11 <class ‘list‘> 12 >>> 13 >>> isinstance(3,int) #內置函數 isinstance()用來測試對象是否為指定類型的實例 14 True 15 >>> 16 >>> isinstance(‘Hello World‘,str) 17 True 18 >>>
代碼塊1.3.1.1
代碼塊1.3.1.1中首先創建了整型變量 x ,然後又分別創建了字符串和列表類型的變量 x 。當創建了煮飯吃類型的變量 x 之後,之前創建的整型變量 x 自動失效;創建列表對象 x 只有,之前創建的字符串變量 x 自動失效。可以將該模型理解為“狀態機”,除非顯式修改變量類型或刪除變量,否則變量將一直保持之前的類型。
小提示:在Python中可以使用變量表示任意大的數字,不用擔心範圍的問題,但是對於浮點數的計算由於精確度的問題偶爾可能會出現略顯奇葩的結果。如代碼塊1.3.1.2所示:
1 >>> 9999 ** 99 #這裏 ** 是冪乘運算符 2 990148353526723487602263124753282625570559528895791057324326529121794837894053513464
422176826916433932586924386677766244032001623756821400432975051208820204980098735552703
841362304669970510691243800218202840374329378800694920309791954185117798434329591212159
106298699938669908067573374724331208942425544893910910073205049031656789220889560732962
926226305865706593594917896276756396848514900989999 3 >>> 4 >>> 0.3 + 0.2 #實數相加 5 0.5 6 >>> 7 >>> 0.4 - 0.1 #實數相減 8 0.30000000000000004 #這個結果很奇怪吧,我再補充一篇文章來介紹這個吧 9 >>> 10 >>> 0.4 - 0.1 == 0.3 11 False 12 >>>
代碼塊1.3.1.2
Python支持復數運算,如代碼塊1.3.1.3所示:
1 >>> x = 3 + 4j #使用 j 或 J 表示復數虛部 2 >>> y = 5 + 6j 3 >>> 4 >>> #復數之間的加、減、乘、除 5 >>> x + y 6 (8+10j) 7 >>> x - y 8 (-2-2j) 9 >>> x * y 10 (-9+38j) 11 >>> x / y 12 (0.6393442622950819+0.03278688524590165j) 13 >>> 14 >>> abs(x) #復數的模 15 5.0 16 >>> x.imag #復數的虛部 17 4.0 18 >>> x.real #復數的實部 19 3.0 20 >>> x.conjugate() #復數 x 的共軛復數 21 (3-4j) 22 >>>
1.3.1 變量與內置數據類型