Loading comments...Loading comments...
Python-001 探索
基於專案的因素,開始學習 Python 的語法以及框架知識, 此篇紀錄觀察有趣的學習點及差異點。
保持滾動式的更新😵💫
環境架設
在開始學習 Python 之前,需要先設置開發環境。以下是一些基本步驟:
- 安裝 Python:
- 前往 Python 官方網站 下載並安裝最新版本的 Python。
- 安裝完成後,打開終端機(Terminal)並輸入
python --version
確認安裝成功。
- 設置虛擬環境:
- 使用
venv
模組來創建虛擬環境,避免不同專案之間的依賴衝突。 - 創建虛擬環境:
python -m venv myenv
- 啟動虛擬環境:
- Windows:
myenv\Scripts\activate
- macOS/Linux:
source myenv/bin/activate
- 安裝必要的套件:
- 使用
pip
來安裝所需的套件,例如requests
、flask
等。 - 安裝套件:
pip install requests flask
- 設置 IDE:
- 推薦使用 VSCode 或 PyCharm 作為開發工具,我是用 VSCode。
- 安裝 Python 插件以獲得語法 highlight、code autocomplete 功能。
基礎語法
Python 和 JavaScript 都是直譯語言(interpreted languages),但它們的執行方式略有不同:
- Python: 通過 Python 直譯器(如 CPython)直接執行
- JavaScript: 主要在瀏覽器的 JS 引擎(如 V8)中執行,也可通過 Node.js 在伺服器端執行
兩者都是動態型別語言,在執行時才進行型別檢查,需要小心🥲。
主要差異:
- Python 使用縮排來定義程式區塊
- JavaScript 使用大括號來定義程式區塊
- Python 的命名習慣用 snake_case
- JavaScript 的命名習慣用 camelCase
Python 是一個動態型別的直譯語言,雖然在某些方面與 JavaScript 類似,但它們在語法結構和類型處理上有很大的差異。 以下是一些基本的 Python 語法特點:
String
字串在 Python 中可以用單引號或雙引號表示,多行字串則使用三個引號:
一些常見的字串方法:
len()
: 取得字串長度strip()
: 移除頭尾空白replace()
: 替換字串startswith()/endswith()
: 檢查字串開頭/結尾
需要注意的是,Python 中的字串是不可變的(immutable),這點與 JavaScript 相同。
Number
在 Python 中,數字的處理有許多有趣的特性和方法:
- Python 的數值運算非常直觀,但要注意整數除法(//)和一般除法(/)的區別
- 銀行家捨入法(Banker's Rounding)是為了減少累積誤差
- 使用 f-string 進行格式化時,可以使用多種對齊和格式化選項
- Python 的數值範圍相當大,但仍有上限
Bool
在 Python 中,布林值和控制流程的操作有一些獨特之處:
- Python 的 Bool 是
True
和False
(首字母大寫) - 支持短路求值(short-circuit evaluation)
- match 陳述句(Python 3.10+)提供強大的模式匹配功能
- 三元運算子的語法比較直觀,但不要寫太巢狀
- Python 中
0
、空字串
、空列表
、None
都會被視為False
- match 陳述句需要 Python 3.10 或更新版本
Loop
Python 提供了多種迴圈操作方式,以下是一些常見的用法:
enumerate()
函數可以同時獲取索引和值- Python 迴圈的
else
子句在迴圈正常完成時執行 break
會跳過else
子句- 迴圈變數在迴圈結束後仍然可用
- 注意變數作用域,Python 不像 JavaScript 有 block scope
else
子句在迴圈中的行為可能不直觀
List
Python 的列表(List)是最常用的資料結構之一,具有動態大小和靈活的操作方式:
- 列表是可變的(mutable)
- 支援多種操作方法:
append
、extend
、remove
、pop
等 - 列表解析提供簡潔的創建方式
- 使用星號(*)運算符可以解包列表
- 深拷貝和淺拷貝的區別要注意
- 列表修改會影響所有引用
- 大型列表操作要考慮性能影響
Set & Tuple
在 Python 中,Set 和 Tuple 是兩種不同的數據結構,各有特色:
- Tuple 適合存儲不變的數據序列
- Set 適合需要去重和集合運算的場景
- Tuple 比 List 佔用更少記憶體且創建更快
- Set 的元素必須是可雜湊的(hashable)
- Set 是無序的,不支持索引訪問
- Tuple 一旦創建就不能修改
- Set 不能包含可變物件(如列表)
Dict(字典)
Python 的字典(Dict)是一種鍵值對的資料結構,提供高效的資料存取:
- 字典的鍵必須是不可變(hashable)的
- 字典視圖比列表更節省記憶體
- 使用
.get()
可以避免鍵不存在時的錯誤 - Python 3.9+ 支援
|
運算符合併字典
- 字典是無序的(Python 3.7+ 保留插入順序)
- 大型字典操作要注意記憶體使用
- 避免直接訪問不存在的鍵
存址還是存引用
在 Python 中,變數的存儲機制與其他語言有些不同:
- 不可變物件(Immutable):
- 數字、字串、元組(tuple)
- 當值改變時,會建立新的物件
- 變數指向新的記憶體位置
- 可變物件(Mutable):
- 列表(list)、字典(dict)、集合(set)
- 修改值時,物件本身被修改
- 變數仍指向同一個記憶體位置
重要注意事項
在使用 Python 時,還有一些重要的概念需要注意:
- 型別提示(Type Hints):
- Python 3.5+ 支援型別提示
- 幫助提高程式碼可讀性和維護性
- 垃圾回收機制:
- Python 使用引用計數和循環垃圾回收
- 巨大的存儲操作要注意適時釋放記憶體
- 上下文管理器:
- 使用
with
語句自動管理資源 - 常用於檔案操作和資料庫連接
- 標準函式庫:
collections
: 提供額外的資料結構itertools
: 提供高效迭代工具functools
: 提供函式工具
- 命名規範:
- 變數和函式使用 snake_case
- 類別使用 PascalCase
- 常數使用大寫 SNAKE_CASE