人工智能之編程進階 Python高級

第十章 知識點總結


(文章目錄)


前言

學到這裏基本上掌握了python的常用操作,但這些還未涉及到數據分析的部分,這些都只是對於語言的靈活運用,至於數據分析,將在後續欄目增加,一起努力學習,未來方向充滿不確定,我們能做的就是不斷學習,跟隨政策,擁抱人工智能,打好地基,方能不被脱節。


🐍 Python 重要知識點全景圖(從基礎到網絡編程)

目標​:掌握 Python 從變量到爬蟲的完整技術棧 ​結構​:由淺入深,層層遞進,每部分含核心概念 + 示例 + 注意事項


一、基礎語法與內置類型

1. 變量與動態類型

  • Python 是 ​動態類型語言​:變量無需聲明類型,類型在運行時確定。
x = 10        # int
x = "hello"   # str(合法!)
  • 變量本質是對象引用​:a = [1,2]; b = aab 指向同一列表。

2. 核心內置類型

類型 特點 示例
int,float,complex 數值類型 3,3.14,1+2j
str 不可變 Unicode 字符串 "你好",f"Hello {name}"
bool 布爾值(True/False bool(0) → False
NoneType 空值(單例) x = None

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  # 交集

💡 ​關鍵區別​:

  • list vs tuple:是否可變
  • dict vs set:是否有 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

七、併發與並行(見前文,此處簡述)

模型 模塊 適用場景
多線程 threading I/O 密集(網絡、磁盤)
異步 I/O asyncio 高併發 I/O(Web 服務)
多進程 multiprocessing CPU 密集(計算)
子進程 subprocess 調用外部程序

⚠️ 記住:Python 有 GIL,多線程不能並行 CPU


八、網絡編程與數據獲取(核心!)

1. 底層通信:socket

  • TCP/UDP 編程
  • 適合自定義協議

2. HTTP 客户端

工具 特點
urllib 標準庫,功能全但繁瑣
requests 第三方,簡潔強大,首選
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)

九、常用標準庫與第三方庫速查

類別 標準庫 第三方庫
時間 datetime,time arrow,pendulum
JSON json
正則 re
日誌 logging
單元測試 unittest,doctest pytest
Web 開發 http.server Flask,Django,FastAPI
數據分析 pandas,numpy
網絡請求 urllib,http.client requests,aiohttp
爬蟲 BeautifulSoup,Scrapy,selenium

十、最佳實踐與避坑指南

✅ 推薦做法

  1. 使用類型提示​(Python 3.5+):
    def add(a: int, b: int) -> int:
        return a + b
    
  2. 虛擬環境隔離依賴
  3. ​**用 pathlib 替代 os.path**​(更面向對象)
  4. logging 替代 print 做日誌
  5. with 管理資源​(文件、鎖、連接)

❌ 常見錯誤

  • 可變對象作為函數默認參數:def f(x=[]) → 改為 x=None
  • 在循環中拼接字符串:改用 ''.join(list)
  • 忽略編碼問題:始終指定 encoding='utf-8'
  • 在生產環境關閉 SSL 驗證:verify=False(危險!)

十一、學習路徑建議

  1. 基礎​:變量、控制流、函數、文件
  2. 進階​:OOP、異常、模塊、裝飾器
  3. 實用技能​:
    • requests + BeautifulSoup(靜態爬蟲)
    • selenium(動態爬蟲)
    • asyncio(異步編程)
    • Scrapy(工程化爬蟲)
  4. 擴展​:
    • 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 中高級開發能力!🚀


資料關注

公眾號:咚咚王

《Python編程:從入門到實踐》 《利用Python進行數據分析》 《算法導論中文第三版》 《概率論與數理統計(第四版) (盛驟) 》 《程序員的數學》 《線性代數應該這樣學第3版》 《微積分和數學分析引論》 《(西瓜書)周志華-機器學習》 《TensorFlow機器學習實戰指南》 《Sklearn與TensorFlow機器學習實用指南》 《模式識別(第四版)》 《深度學習 deep learning》伊恩·古德費洛著 花書 《Python深度學習第二版(中文版)【純文本】 (登封大數據 (Francois Choliet)) (Z-Library)》 《深入淺出神經網絡與深度學習+(邁克爾·尼爾森(Michael+Nielsen) 》 《自然語言處理綜論 第2版》 《Natural-Language-Processing-with-PyTorch》 《計算機視覺-算法與應用(中文版)》 《Learning OpenCV 4》 《AIGC:智能創作時代》杜雨+&+張孜銘 《AIGC原理與實踐:零基礎學大語言模型、擴散模型和多模態模型》 《從零構建大語言模型(中文版)》 《實戰AI大模型》 《AI 3.0》