每日 14
python:
- 
变量作用域与闭包 
 x = 10
 def func():
 print(x) # 尝试读取全局变量
 x = 20 # 局部变量赋值 → 触发 UnboundLocalError
 func()
 注意:在函数内修改全局变量需用 global 关键字,读取外层变量需用 nonlocal。
- 
可变对象作为函数参数 
 def modify(lst):
 lst.append(4)
my_list = [1, 2, 3]
modify(my_list)
print(my_list)  # [1, 2, 3, 4] → 原列表被修改
建议:若不想修改原对象,传入副本(如 lst.copy())。
- 深拷贝与浅拷贝
 import copy
 a = [[1, 2], [3, 4]]
 b = copy.copy(a) # 浅拷贝
 c = copy.deepcopy(a) # 深拷贝
 a[0].append(5)
 print(b[0]) # [1, 2, 5] → 浅拷贝共享嵌套对象
 print(c[0]) # [1, 2] → 深拷贝完全独立
- 异常处理的细节
 python
 复制
 try:
 1 / 0
 except: # 不指定异常类型 → 可能掩盖错误
 pass
正确做法:
try:
1 / 0
except ZeroDivisionError as e:
print(f"Error: {e}")
5. GIL 与多线程
import threading
CPU密集型任务用多线程反而更慢
def heavy_task():
sum(range(10**7))
threads = [threading.Thread(target=heavy_task) for _ in range(2)]
for t in threads:
t.start()
for t in threads:
t.join()  # 实际执行时间 ≈ 单线程的两倍(GIL限制)
替代方案:CPU 密集型任务使用 multiprocessing 模块。
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号