書籍介紹-深入淺出Python(第二版)

自學Python, 網路上有很多資源, 官網也有不錯的文件內容, 加上Python本身相對一些語言算是較容易上手。不過自學容易漏掉一些細節, 所以有一本良好的書來帶領並釐清關鍵重點, 是很好的。這本O’Reilly出版由國內出版商發行的深入淺出Python中文版,自然是一本不錯的入門書。以下筆記一下學到的重要觀念。

串列集合:

  • 基本的有4種: list(串列)、set(集合)、dict(字典)、tuple(元組)
# list
alist = [v1,v2,v3,v4]
#set
aset = {v1,v2,v3,v4}
#dict
adict = {k1:v1,k2:v2,k3:v3,k4:v4}
#tuple
atuple = (v1,v2,v3,v4)
  • list, 可變動大小, 依循存入的順序。list[start: stop: step], 索引選項變化多樣
    • 3個索引選項都選用的, 省略時預設值為start=0, stop=list最大個數, step=1
    • Python的list索引支援以負數代表反向索引使用
    • var = alist[1:10], 沒有改變alist, 其實是建立一個副本給var
  • set, 可變動大小, 類似list, 但內容都是唯一不重複的, 無特定順序
    • 可做交集(intersection)、聯集(union)、差集(difference)
  • dict, 可變動大小, 是鍵/值對的類型, 無特定順序
  • tuple, 不可變動大小, 依循存入的順序
    • 單一項目的tuple要以atuple = (v1, )表示, 刮號內至少要有一個逗號,
    • atuple = (‘v’)這樣不是tuple而是str
#list取最右邊1個
alist[-1:] 
#list轉成str
''.join(alist[1:5])
  • 空集合的回傳
L = list() #L -> []
D = dict() #D -> {}
T = tuple() #T -> ()
S = set() #S -> set(), 因為和dict同樣是以大刮號表示, 
           #但dict已用了{}, 故set回傳的表示方式為set()

布林值:

  • True/False, 注意大小寫
  • true/false, 非布林, 會被當成變數
  • 0、0.0、"、[]、{}、None在Python中都是False
  • 1、-1、123、0.00000000000000000001、’word’、[1,3,5]、{a,b,c,}在Python中都是True

函式:

  • 函式的回傳型態和引數型態, 可以加上標示, 但就是不具有型態檢查功能
def MyFunction(v1: str, v2: list) -> None:
    ''' def description .......'''
    # do something here ......

模組:

  • Python找尋模組的位置僅限: 當前工作目錄、site-package位置、標準程式庫位置
    • import也無法指定路徑
  • 透過setuptools模組安裝到site-package, 3個主要步驟
  • 發行檔描述: setup.py
from setuptools import setup
setup(
    name='....',
    version='1.0',
    ....
    py_modules=['modulename'],
)
  • 建立發行檔。完成後產出.zip檔, 可分享或上傳PyPI
py -3 setup.py sdist
  • 安裝發行檔
py -3 -m pip install modulename.zip
  • 引數的傳值和傳址特性與其他語言較為不同。
    • 是依函式內部使用情況而決定
    • 傳入的實際應該是物件參考,即記憶體位置reference
  • list,dict,set會以傳址傳入
  • 字串,整數,tuple會以傳值傳入
  • 函式內的=號會用傳值處理
def doit(arg):
    arg.append('abcde')
    print(arg)


def dothat(arg):
    # =號右邊arg * 2會建立一個新參考, 再指定給=號左邊的arg,
    # 而右邊原來的arg舊參考仍存在, 故左右arg已是不同參考
    arg = arg * 2
    print(arg)


A=[123]
doit(A) #[123,'abcde']
A #[123,'abcde']
B=[1,2]
dothat(B) #[1,2,1,2]
B #[1,2]

PEP8:

  • Python之父撰寫風格
  • Python官方使用方式, 如下
py -3 -m pip install pytest
py -3 -m pip install pytest-pep8
py.test --pep8 modulename.py
  • VSCode的使用方式, Python套件內已有支援Formatting設定autopep8, 但也要有安裝autopep8套件, 如下
python.exe -m pip install -U autopep8

發表留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料