最近公司BOSS抽風,要公司的市場/產品什麼的學Python,特記錄一篇Python基礎內容,供有一點基礎的同事們快速入門。
Python和Pythonic
Python是一門計算機語言(這不是廢話麼),簡單易學,上手容易,深入有一定困難。為了逼格,還是給你們堆一些名詞吧:動態語言、解釋型、網路爬蟲、資料處理、機器學習、Web開發、等等等等。Python目前分為2.x和3.x兩個版本,與其它語言不一樣的是,它的這兩個版本是不相容的,雖然會其中一個就容易上手另一個,但是鑑於公司目前幾乎全是用Python2.7,建議同事們也可以從2.x版本開始,如果沒有歷史遺留問題,建議初學者直接上手Python3。
Pythonic指的是按照Python推薦的規範,乾淨美觀、可讀性強的逼格滿滿到程式碼風格,比如多使用Python內建的資料結構,不要重複造輪子。簡單來講,你可以在Python解釋環境裡輸入import this
瞭解一下Python之禪。Python的程式碼風格上,如果團隊有自己的風格則按照自己的風格,否則,比較推薦的是PEP8或Google Code Style。關於PEP8規範,請點選這裡。
開發環境搭建
在常見的*inx系統上,預設都安裝了Python直譯器,你可以直接在終端輸入python
進入預設的環境。在Windows系統上,你需要去Python官網下載Python的安裝包,安裝之後可以在“所有程式”中找到“IDLE”,也可以在cmd中通過輸入python
進入直譯器環境。
對於Python常用的IDE(整合開發環境),推薦使用PyCharm,如果土豪請購買正版,如果不是土豪又有情懷,請使用社群版(免費),如果既不土豪又沒有情懷,就用盜版吧(不推薦)。
Python之所以非常流行,離不開它千千萬萬的第三方庫,你可以將第三方庫理解為我寫了一個牛X的功能,釋出出來之後你可以直接使用。安裝第三方庫的話,推薦使用pip,在Ubuntu上,你可以通過apt-get install python-pip
安裝。
hello, world.
常見情況下,Python程式碼可以通過兩種形式執行:一是直接在剛才所講的解釋環境下(輸入python
命令後進入的地方)一行一行的執行,或者也可以儲存到一個.py
的檔案中,在終端輸入python 檔名
來執行。比如新建一個test.py
,檔案內容為print 'hello, world.'
,在終端輸入python test.py
,即可輸出hello, world.
。
注意⚠️:Python中沒有使用花括號{}
來表示程式碼間的層級關係而是使用縮排,這樣的好處是在語法層面上限制了不好的程式碼風格,但是初學者容易混淆。
變數、基礎資料型別
變數
Python中變數不需要宣告,你可以通過直接賦值的方式使用變數:
1 2 3 4 |
a = 1 b = True c = 1.0 a = 3+2j |
在Python中,你可以在給一個變數賦值為一種型別之後重新為其賦值為新的型別(如上面程式碼第1、4行)。
基礎資料型別
Python中的數字有:整型、長整型、浮點型、布林型、複數。
- 整形:
int
,常見的整數(正數/負數/0),通過sys.maxint
即可檢視當前平臺上最大的整型的值。 - 長整型:
long
,比整型最大的值還大或者比整型最小的值還小的整數。注意:Python中長整型沒有大小限制,你的記憶體有多大,它就能表示多大。 - 浮點型:
float
,即小數。 - 布林型:
bool
,常見形式為True
,False
,表示邏輯真和邏輯假,其實背後的實現是數字1和0. - 複數:
complex
,Python是為數不多語法層面上支援複數的語言,表現為形如1+2j
的形式。可以直接支援兩個複數的運算。
Python中的所有資料型別都是物件。你可以通過type()
函式檢視一個變數的型別。
Python中字串有4種表現形式:單引號、雙引號、三引號:
1 2 3 4 5 |
string1 = 'this is a str' string2 = "this is a str" string3 = '''this is a str 這裡還是string3的範圍''' string4 = """this is a str""" |
其中,第3/4種字串表現形式都是三引號引起來的。如果在字串的引號之前加上一個u
,則表示這是一個unicode字串,如果加上r
,則表示這是一個原始字串 ,這兩種型別,對於初學者暫不討論。值得注意的是,Python中沒有C-Like語言中的字元型別。
運算子、控制語句
運算子
Python中沒有類似於C/C++/Java的自增自減運算子,因為在Python中,數字是一種不可變型別(immutable),對數字的操作都會產生新的物件而不是修改原來的物件。但是i = i + 1
一樣可以寫為i += 1
。
注意:Python2.5以後的除法為地板除,即5/2=2
而不是5/2 = 2.5
。
Python常見的邏輯運算子為:
- !=, <>:不等於,表示兩邊的值不相等,推薦使用前一種。
1 != 2
。 - ==:等於,表示兩邊的值相等。
2 == 2
。 - and:邏輯與,如果兩邊的值都為True則整個值為True,反之為False。
1==1 and 2==2
。 - or:邏輯或,如果兩邊有一個值True則整個值為True,反之為False。
1==2 or 2==2
。 - not:邏輯非,如果值為True,則結果為False。
not 2==1
。
控制語句
條件語句:
Python中的條件語句只有if-elif-else,沒有switch-case,但是有經驗的開發者通常使用map這一結構來達到比switch-case更加優雅,更加Pythonic的實現,這個後續再說。
1 2 3 4 5 6 |
if 條件1: 語句塊1 elif 條件2: 語句塊2 else: 語句塊3 |
elif
類似於其它語言中的else if
。
迴圈語句:
Python中有兩種方式表達迴圈語句:
while 迴圈:
1 2 |
while 條件: 語句塊 |
for迴圈:
1 2 |
for 變數 in 集合: 語句塊 |
值得注意的是Python中沒有C-Like語言裡的for(int i=0; i<10; i++)的語法,不過可以使用
xrange
或者range
函式實現同樣的效果。前一個函式返回一個生成器,後一個函式返回list,一般推薦使用前一個,至於這兩個函式的異同,後面有時間細聊。
集合
Python中常見的集合型別有:list,tuple,set,dict。
list
list表達的是一列資料的集合,列表中的元素可以增加、刪除、查詢等操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
In [1]: l = ['this', 'is', 'a', 'list'] # 初始化一個list In [2]: type(l) Out[2]: list In [3]: l.index('is') # 查詢元素 Out[3]: 1 In [4]: l.append('new item') # 新增元素 In [5]: l Out[5]: ['this', 'is', 'a', 'list', 'new item'] In [6]: l.reverse() # 反轉列表 In [7]: l Out[7]: ['new item', 'list', 'a', 'is', 'this'] In [8]: l.remove('is') # 刪除元素 In [9]: l Out[9]: ['new item', 'list', 'a', 'this'] |
tuple
tuple類似於list,同樣表示一組資料的集合,不同的是,tuple是防寫的,即:tuple不可以對其元素做任何修改操作(新增、刪除等):
1 2 3 4 5 6 7 |
In [1]: t = (1,2,3) # 初始化 In [2]: t Out[2]: (1, 2, 3) In [3]: type(t) Out[3]: tuple |
set
set表示一個不重複元素的集合,值得注意的是:set是無序的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
In [1]: s = {'this', 'is', 'a', 'a', 'set'} # 初始化 In [2]: s Out[2]: {'a', 'is', 'set', 'this'} In [3]: type(s) Out[3]: set In [4]: s.add('new item') # 新增元素 In [5]: s Out[5]: {'a', 'is', 'new item', 'set', 'this'} In [6]: s.remove('a') # 刪除元素 In [7]: s Out[7]: {'is', 'new item', 'set', 'this'} |
dict
dict表示一組資料的對應關係,與set一樣,dict是無序的(你可以通過collections中的OrderDict來達到有序)。同時,對於初學者,dict與set的宣告方式容易混淆:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
In [1]: d = {'a': 'A', 'b': 'B'} # 初始化 In [2]: d Out[2]: {'a': 'A', 'b': 'B'} In [3]: d['a'] Out[3]: 'A' In [4]: d['c'] = 'C' # 新增元素 In [5]: d Out[5]: {'a': 'A', 'b': 'B', 'c': 'C'} In [6]: del d['a'] # 刪除元素 In [7]: d Out[7]: {'b': 'B', 'c': 'C'} |
函式(初步)
在Python中宣告函式的方式如下:
1 2 |
def add(num1, num2): return num1 + num2 |
通其它語言一樣,你可以在函式中通過return
返回值。不同的是,Python中函式可以有多個返回值,比如下面的函式,返回了兩個數的和以及差:
1 2 3 4 5 |
def calc(n1, n2): return n1 + n2, n1 * n2 add, sub = calc(5, 1) print add, sub # 6 4 |
其實這裡並不是真的返回了兩個值,而是將返回值組裝成一個tuple再返回。
小結
Python中最最最基礎的部分差不多就是這些了,後面會繼續分享一些Pythonic的Python程式碼寫法。
打賞支援我寫出更多好文章,謝謝!
打賞作者
打賞支援我寫出更多好文章,謝謝!