人工智能之編程進階 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 = 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
  1. 虛擬環境隔離依賴
  2. pathlib 替代 os.path(更面向對象)
  3. logging 替代 print 做日誌
  4. with 管理資源(文件、鎖、連接)

❌ 常見錯誤

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

十一、學習路徑建議

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