我學習 Python 的原因是想要寫一些腳本之類的程式,用來在瀏覽器上爬取一些自己想要的文字、圖片等資料。這些程式在 GitHub 上其實有很多,但是可惜的是我對後端的語言一竅不通,直接拿來用我也不會。
因此,我萌生了先學習 Python 基礎知識的想法。一直聽說廖雪峰的 Python 教程寫得不錯,這次趁著這個機會要好好研讀一番。雖然不指望能夠用得非常厲害,但至少希望能為自己薄弱的技術栈增添一點光彩,畢竟我曾經夢想成為一個全棧開發者。
下載安裝完 Python 環境後,就開始學習吧!
執行我的第一個 Python 程式#
print('hello,world')
資料類型#
在 Python 中,可以直接處理的資料類型有幾種,包括整數、浮點數、字串、布林值、空值和變數。
這與其他語言的差異並不大,資料類型基本上都是相似的,只有變數有自己的特性,所以我單獨拿出來記錄一下。
變數#
Python 是一門動態語言,可以在賦值時不斷改變變數的值,例如:
a = 123
print(a) # 輸出結果為 123
a = 'abc'
print(a) # 輸出結果為 abc
這是允許的,而在 Java 中則不行,因為 Java 是一門靜態語言,如果多次賦值會報錯。相對來說,動態語言更靈活,當然,各有利弊。
在賦值上有一個邏輯順序,例如定義一個 a = 'a'
的變數。在 Python 中實際上走了兩步,首先創造了一個字串 a
,然後將這個字串賦值給變數 a。
這在數學上其實有些反邏輯,x = x + 2
這個計算在數學上是行不通的,但是在計算機中,先計算 x + 2
,然後將其賦值給左側的 x
,這是計算機的邏輯。
x = 1
x = x + 2
print(x) # 輸出結果為 3
其實很多計算機語言都是如此,例如我們所熟悉的 JavaScript 等等。
如果有多個變數相互賦值的話,則是一行一行執行。
a = 1
b = a
a = 2
print(a)
print(b)
最後的輸出結果分別為 2
和 1
。
Python 支持多種資料類型,在計算機內部,可以把任何資料都看作是一個「物件」,而變數就是在程式中用來指向這些資料物件的,對變數賦值就是把資料和變數關聯起來。對變數賦值
x = y
是把變數x
指向真正的物件,該物件是變數y
所指向的。隨後對變數y
的賦值不影響變數x
的指向。注意:Python 的整數沒有大小限制,而某些語言的整數根據其儲存長度是有大小限制的,例如 Java 對 32 位整數的範圍限制在 -2147483648 到 2147483647。Python 的浮點數也沒有大小限制,但是超出一定範圍就直接表示為 inf(無限大)。---《廖雪峰的官方網站》
字串和編碼#
Python 提供了兩個處理編碼的函數,ord
和 chr
。
ord('舒')
# 33298
# 將字串轉換為整數表示
chr(33298)
# '舒'
# 將整數表示的內容轉換為字串
list#
list
類似於 JavaScript 中的 Array
,是多個資料的列表,寫法如下:
>>> classmates = ['a', 'b', 'c']
>>> classmates
['a', 'b', 'c']
這時候我們就可以說變數 classmates
是一個 list。
有一個 len()
函數可以輸出 list 元素的個數:
>>> len(classmates)
>>> 3
同時,list 也有索引,從 0 開始,最後一個索引是 len(classmates)-1
,如果想直接輸出最後一個元素,可以使用 classmates[-1]
。
>>> classmates[-1]
>>> 'c'
既然可以用 -1
表示最後一個元素,能不能用 -2
表示倒數第二個呢?答案是可以的。
>>> classmates[-2]
>>> 'b'
另外需要注意的是,在使用索引時不可超出範圍,否則會報錯。
>>> classmates[4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
list 是一個可變的有序列表,可以往裡面添加或者刪除元素。
append
在末尾添加元素
>>> classmates.append('d')
>>> classmates
['a', 'b', 'c', 'd']
insert
在指定位置添加元素
其中 1
是索引,表示在索引為 1 的位置插入元素,後面的元素自然往後順延。
>>> classmates.insert(1, 'd')
>>> classmates
['a', 'd', 'b', 'c']
pop
刪除末尾的元素
>>> classmates.pop()
'c' # 輸出被刪除的元素
>>> classmates
['a', 'b']
pop(i)
刪除指定位置的元素
>>> classmates.pop(1)
'b' # 輸出被刪除的元素
>>> classmates
['a', 'c']
>>>