人工智能之編程進階 Python高級
第十章 知識點總結
@
目錄
- 人工智能之編程進階 Python高級
- 前言
- 🐍 Python 重要知識點全景圖(從基礎到網絡編程)
- 一、基礎語法與內置類型
- 1. 變量與動態類型
- 2. 核心內置類型
- 3. 容器類型(重點!)
- ✅ 列表 list
- ✅ 元組 tuple
- ✅ 字典 dict
- ✅ 集合 set
- 二、控制結構與函數
- 1. 條件與循環
- 2. 函數定義
- 高級特性:
- 三、面向對象編程(OOP)
- 1. 類與實例
- 2. 繼承與多態
- 3. 特殊方法(魔術方法)
- 四、模塊與包管理
- 1. 模塊導入
- 2. 包結構
- 3. 虛擬環境(必會!)
- 五、文件與異常處理
- 1. 文件讀寫
- 2. 異常處理
- 六、高級特性(提升代碼質量)
- 1. 列表推導式 / 生成器表達式
- 2. 裝飾器(Decorator)
- 3. 上下文管理器(Context Manager)
- 七、併發與並行(見前文,此處簡述)
- 八、網絡編程與數據獲取(核心!)
- 1. 底層通信:socket
- 2. HTTP 客户端
- 3. 動態頁面處理:selenium
- 4. HTML 解析:BeautifulSoup
- 5. 專業爬蟲框架:Scrapy
- 九、常用標準庫與第三方庫速查
- 十、最佳實踐與避坑指南
- ✅ 推薦做法
- ❌ 常見錯誤
- 十一、學習路徑建議
- 總結:Python 技術棧全景
- 資料關注
前言
學到這裏基本上掌握了python的常用操作,但這些還未涉及到數據分析的部分,這些都只是對於語言的靈活運用,至於數據分析,將在後續欄目增加,一起努力學習,未來方向充滿不確定,我們能做的就是不斷學習,跟隨政策,擁抱人工智能,打好地基,方能不被脱節。
🐍 Python 重要知識點全景圖(從基礎到網絡編程)
目標:掌握 Python 從變量到爬蟲的完整技術棧
結構:由淺入深,層層遞進,每部分含核心概念 + 示例 + 注意事項
一、基礎語法與內置類型
1. 變量與動態類型
- Python 是 動態類型語言:變量無需聲明類型,類型在運行時確定。
x = 10 # int
x = "hello" # str(合法!)
- 變量本質是對象引用:
a = [1,2]; b = a→a和b指向同一列表。
2. 核心內置類型
|
類型
|
特點
|
示例
|
|
|
數值類型
|
|
|
|
不可變 Unicode 字符串
|
|
|
|
布爾值( |
|
|
|
空值(單例)
|
|
3. 容器類型(重點!)
✅ 列表 list
- 有序、可變、允許重複
lst = [1, 2, 3]
lst.append(4)
lst[0] = 10
✅ 元組 tuple
- 有序、不可變、可哈希(可用作 dict key)
t = (1, 2, 3)
t = 1, 2, 3 # 省略括號
✅ 字典 dict
- 無序(Python 3.7+ 插入有序)、鍵值對、鍵必須可哈希
d = {"name": "Alice", "age": 30}
d["city"] = "Beijing"
for k, v in d.items(): ...
✅ 集合 set
- 無序、不重複、可變
s = {1, 2, 3}
s.add(4)
s1 & s2 # 交集
💡 關鍵區別:
listvstuple:是否可變dictvsset:是否有 value
二、控制結構與函數
1. 條件與循環
# if-elif-else
if x > 0:
print("positive")
elif x == 0:
print("zero")
else:
print("negative")
# for 循環(迭代器協議)
for i in range(5):
print(i)
# while
while n > 0:
n -= 1
2. 函數定義
def greet(name: str, age: int = 18) -> str:
"""文檔字符串"""
return f"Hello {name}, you are {age}"
# 調用
greet("Alice") # 位置參數
greet(age=20, name="Bob") # 關鍵字參數
高級特性:
- 默認參數(注意 mutable 默認值陷阱!)
- 可變參數:
*args(元組)、**kwargs(字典) - 作用域:LEGB 規則(Local → Enclosing → Global → Built-in)
三、面向對象編程(OOP)
1. 類與實例
class Person:
species = "Homo sapiens" # 類屬性
def __init__(self, name):
self.name = name # 實例屬性
def say_hello(self):
return f"Hi, I'm {self.name}"
p = Person("Alice")
print(p.say_hello())
2. 繼承與多態
class Student(Person):
def __init__(self, name, student_id):
super().__init__(name)
self.id = student_id
def say_hello(self): # 方法重寫
return f"Student: {self.name}"
3. 特殊方法(魔術方法)
__str__:用户友好字符串__repr__:開發者調試字符串__len__、__getitem__:使對象支持len()、obj[key]
四、模塊與包管理
1. 模塊導入
import os
from math import sqrt
from datetime import datetime as dt
2. 包結構
mypackage/
__init__.py # 標識為包(Python 3.3+ 可省略)
module1.py
subpackage/
__init__.py
module2.py
3. 虛擬環境(必會!)
python -m venv myenv # 創建
source myenv/bin/activate # Linux/macOS
myenv\Scripts\activate # Windows
pip install requests # 安裝到虛擬環境
五、文件與異常處理
1. 文件讀寫
# 推薦使用 with(自動關閉)
with open('data.txt', 'r', encoding='utf-8') as f:
content = f.read()
with open('output.txt', 'w') as f:
f.write("Hello")
2. 異常處理
try:
x = int(input("Enter number: "))
except ValueError:
print("Invalid input!")
else:
print("Success")
finally:
print("Always run")
✅ 最佳實踐:不要裸寫
except:,應捕獲具體異常。
六、高級特性(提升代碼質量)
1. 列表推導式 / 生成器表達式
# 列表推導
squares = [x**2 for x in range(10) if x % 2 == 0]
# 生成器(節省內存)
gen = (x**2 for x in range(10))
2. 裝飾器(Decorator)
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
print(f"{func.__name__} took {time.time()-start}s")
return result
return wrapper
@timer
def slow_func():
time.sleep(1)
3. 上下文管理器(Context Manager)
class MyFile:
def __enter__(self):
print("Opening file")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("Closing file")
with MyFile() as f:
pass
七、併發與並行(見前文,此處簡述)
|
模型
|
模塊
|
適用場景
|
|
多線程
|
|
I/O 密集(網絡、磁盤)
|
|
異步 I/O
|
|
高併發 I/O(Web 服務)
|
|
多進程
|
|
CPU 密集(計算)
|
|
子進程
|
|
調用外部程序
|
⚠️ 記住:Python 有 GIL,多線程不能並行 CPU
八、網絡編程與數據獲取(核心!)
1. 底層通信:socket
- TCP/UDP 編程
- 適合自定義協議
2. HTTP 客户端
|
工具
|
特點
|
|
|
標準庫,功能全但繁瑣
|
|
|
第三方,簡潔強大,首選 |
import requests
resp = requests.get("https://api.example.com/data")
data = resp.json()
3. 動態頁面處理:selenium
- 控制真實瀏覽器
- 執行 JavaScript、處理登錄、滑塊驗證等
4. HTML 解析:BeautifulSoup
- 提取結構化數據
- 支持 CSS 選擇器、XPath(需 lxml)
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')
titles = soup.select('h2.title')
5. 專業爬蟲框架:Scrapy
- 組件化:Spider、Item、Pipeline、Middleware
- 內置去重、併發、中間件、導出格式(JSON/CSV)
九、常用標準庫與第三方庫速查
|
類別
|
標準庫
|
第三方庫
|
|
時間
|
|
|
|
JSON
|
|
—
|
|
正則
|
|
—
|
|
日誌
|
|
—
|
|
單元測試
|
|
|
|
Web 開發
|
|
|
|
數據分析
|
—
|
|
|
網絡請求
|
|
|
|
爬蟲
|
—
|
|
十、最佳實踐與避坑指南
✅ 推薦做法
- 使用類型提示(Python 3.5+):
def add(a: int, b: int) -> int:
return a + b
- 虛擬環境隔離依賴
- 用
pathlib替代os.path(更面向對象) - 用
logging替代print做日誌 - 用
with管理資源(文件、鎖、連接)
❌ 常見錯誤
- 可變對象作為函數默認參數:
def f(x=[])→ 改為x=None - 在循環中拼接字符串:改用
''.join(list) - 忽略編碼問題:始終指定
encoding='utf-8' - 在生產環境關閉 SSL 驗證:
verify=False(危險!)
十一、學習路徑建議
- 基礎:變量、控制流、函數、文件
- 進階:OOP、異常、模塊、裝飾器
- 實用技能:
requests + BeautifulSoup(靜態爬蟲)selenium(動態爬蟲)asyncio(異步編程)Scrapy(工程化爬蟲)
- 擴展:
- Web 框架(Flask/FastAPI)
- 數據庫(SQLAlchemy / PyMongo)
- 部署(Docker, Gunicorn)
總結:Python 技術棧全景
基礎語法 → 函數/OOP → 文件/異常 → 模塊/包
↓
併發模型(threading/asyncio/multiprocessing)
↓
網絡編程(socket → urllib → requests)
↓
網頁解析(BeautifulSoup / lxml)
↓
動態渲染(selenium)
↓
工程化爬蟲(Scrapy)
↓
數據存儲(MySQL/MongoDB) + Web服務(FastAPI)
💡 核心思想:
Python 的優勢在於 “膠水語言” + 豐富生態。
不必精通所有細節,但要清楚 每個工具的定位與邊界,按需組合,高效解決問題。
這份總結涵蓋了從零基礎到網絡數據獲取的完整知識鏈,建議收藏並結合實踐反覆鞏固。掌握這些,你已具備 Python 中高級開發能力!🚀