1. Python中的基本資料型別、運算、變數
本文利用的是Python 3.x版本,建議學習3.x版本
Python中的基本資料型別、運算、變數
1. 基本資料型別
1.1 整數
py
可以處理任意大小的整數,例如 123
, 123456789132456
,任意大小,而像 C
, Java
等這種語言對整數大小是有要求的,換句話說就是大小是確定的,例如 C
中的 int
一般是 4
個位元組,範圍是 -2147483648~+2147483647
,至於為什麼 py
可以這樣,因為 py
內部會根據數的大小進行調整空間,讓空間可以儲存的下這個資料,因此沒有人會說 py
的 int
是 4
個位元組(實際上比 4
大很多)。
print(type(3)) #會輸出資料型別int
1.2 浮點數
其實就可以理解浮點數是實數,浮點數在計算機內部是以科學記數法表示的,要記住的就是浮點數的運算是有誤差的,而整數的運算是永遠精確的!!例如,你可以執行以下程式碼,看看結果是不是和你想的一樣
print(1.5-1.4)
可能會出現下圖的結果,這就是因為浮點數不是精確的
1.3 字串
用 "
或 '
括起來的字元,就是字串,如果字串內部有 '
,則可以用 "
括起來還可以用轉義符號反斜槓,以下是例項
print('hello') print("hello") print("I'am ") print('\'') print("'\"") # \n是換行,如果\n在字串裡不方便閱讀,還可以寫成如下形式 print('''line1 line2 line3''') # 等價於 print('line1\nline2\nline3') # print函式預設會輸出後換行,關於print的具體用法之後再說
1.4 布林值
布林值是 True
或 False
,要麼為真要麼為假,例如 (10<5)
這個式子是不正確的,則這個式子的布林值是 False
。一般布林值和布林運算用在判斷表示式中
and,or,not
是三個布林運算的操作符。 True and False
的結果為 False
,就是說用 and
運算的布林值,只要有一個是 False
,則結果為 False
,必須全為 True
,才能為 True
, True or False
的結果為 True
,用 or
運算的布林值只要有一個為 True
,則結果為 True
,全為 False
時結果才是 False
, not False
的結果是 True
, not
用來取反。例如以下程式碼
print(True or False) print(True and False) print(not True)
以下是布林運算真值表,包含了上面描述的情況。
1.5 空值
空值是 py
裡一個特殊的值,用 None
表示。 None
不能理解為 0
,因為 0
是有意義的,而 None
是一個特殊的空值。
總結
以上是 py
的基本資料型別,此外 py
還提供了列表、字典等多種資料型別,還允許建立自定義資料型別,以後會涉及到。
2. 表示式運算
有了資料以後,我們還得對資料進行運算以得到我們想要的結果。資料物件和操作符結合後,組成了表示式,一個簡單的表示式為 2 + 3
兩個運算元,一個操作符。以下是基本的數的運算操作符
1 + 2 #和 1 - 2 #差 1 * 2 #積 #以上的結果都是int,如果其中有一個數為float,則結果為float 1 / 2 #商,結果是float 3 % 2 #模運算,也就是求餘數 5 // 2 #整除運算,結果是2 2**3 #乘法運算,結果是8
以下是測試圖片
3. 變數
3.1 什麼是變數
變數基本和代數中變數是一個意思,例如我們在方程中最常用的 x
。只不過在計算機中變數可以代表各種各樣的資料型別。
變數在程式中就是用一個變數名錶示了,變數名必須是大小寫英文、數字和_的組合,且不能用數字開頭。在程式語言中,等號 =
不再是數學上相等的概念了,而是賦值的意思,也可以說是分配值,例如以下程式碼
pi = 3.14159
左邊的 pi
代表變數,右邊的 3.14159
代表值,將值利用 =
賦予給變數 pi
,這就是以上程式碼的含義。值儲存在計算機的記憶體中,可以看成是將這個值和一個名字進行了繫結,當我們需要使用這個值的時候,只需使用 pi
即可。就像我們每個人都有名字一樣,一個名字對應了一個人(不考慮重名)。
為什麼要給值一個名字呢,為了我們使用方便,例如
pi = 3.14159 r = 2.2 area = pi*(r**2) ##計算圓的面積
不用每次都使用 3.14159
,而且顧名思義,變數是會發生變化的,在程式執行中途可能發生變化,我們無法提前預知,所以這個時候更加展現出了變數的作用。我們看以下程式碼
x = 5 x = x + 1 print(x) #結果為6
如果按照數學上的理解 x=x+1
是不成立,但是在計算機中 =
是賦值號,所以這個式子的意思是將 x+1
的值賦予給 x
, x+1
的值是 6
,所以最後將 6
賦予給 x
,所以 x
最終的結果為 6
3.2 改變變數的值
我們可以重新繫結變數和值,使用一個賦值式子即可,例如
x = 6 print(x) x = 5 print(x) #輸出為6和5
現在 x
和 5
繫結在了一起, 6
這個值依然儲存在計算機的記憶體中,但是可能沒有變數和其繫結,所以我們再也不能使用這值了,就算我們新分配一個 6
給 x
,這個 6
也不是之前的 6
了。所以可以說之前這個 6
是一個廢值, py
內部會有垃圾回收機制,檢測到這個值是垃圾後,會回收這塊空間供之後分配的值使用。我畫了以下的圖便於理解。
我們也可以將 x
繫結為其他資料型別,例如
x = 5 x = True
如果讀者會類似於 C
或 Java
(靜態語言)的語言的話,會覺得如上的寫法不可思議,會報錯,但是在 py
這就可以使用,因為 x
僅僅是一個名字,和哪個值繫結完全取決於我們,但是不建議這樣更改繫結的資料型別,最好從始至終讓變數保持一種資料型別。
例如兩個人合作寫程式碼,第一個人開始將 x
作為 int
使用,後來當作字串使用,第二個人在閱讀第一個人寫的程式碼時,稍有不慎就會將 x
的資料型別搞錯,從而帶來不必要的麻煩。
最後
以上只是快速理解和學習的入門級知識,不涉及深入的理解,例如動態語言、物件、引用等概念,可以自己搜尋瞭解。不過建議學習時,首先有一個總體的把握,首先理解這是個什麼東西,等大致都清楚後,再深究細節,這樣的學習方法我認為比較好。不然一上來就深究細節,對於已經入門的同學來說倒沒什麼,要是還沒入門就深究細節,怕是要勸退。
題外話,知識本來就應該反覆的學習,溫故而知新,一層層的學習。先搞清楚這是什麼,怎麼來的,有什麼用,這樣學習起來不會迷茫。國內的教學,例如數學方面,有些不好的地方在於,上來就是公式,定理,而忘了最根本的問題,為什麼會有這個公式?這個公式有什麼用?(不是做題),例如矩陣的特徵值,特徵向量,可以用來解決生態系統中的動力方程的問題。這樣學起來恐怕就不會那麼迷茫了吧~
如果覺得不錯,可以分享~可以關注公眾號~