GIL 是 Python 解释器中的一个互斥锁,确保同一时间只有一个线程执行 Python 字节码。
影响:多线程在 CPU 密集型任务中性能较差,但不影响 I/O 密集型任务。
5. 深拷贝与浅拷贝的区别
浅拷贝:只复制对象的引用,内部元素共享。
深拷贝:递归复制对象及其内部元素。
import copy
a =[1,2,[3,4]]
b = copy.copy(a)# 浅拷贝
c = copy.deepcopy(a)# 深拷贝
二、Python 进阶
1. 生成器与迭代器的区别
迭代器:实现了 __iter__ 和 __next__ 方法的对象。
生成器:通过 yield 关键字定义的函数,返回一个生成器对象。
# 迭代器示例classMyIterator:def__init__(self, data):
self.data = data
self.index =0def__iter__(self):return self
def__next__(self):if self.index >=len(self.data):raise StopIteration
value = self.data[self.index]
self.index +=1return value
# 生成器示例defmy_generator(data):for item in data:yield item
2. 装饰器的作用与实现
作用:在不修改原函数代码的情况下扩展其功能。
实现:
defmy_decorator(func):defwrapper(*args,**kwargs):print("Before function call")
result = func(*args,**kwargs)print("After function call")return result
return wrapper
@my_decoratordefsay_hello():print("Hello!")
say_hello()
defbubble_sort(arr):
n =len(arr)for i inrange(n):for j inrange(0, n - i -1):if arr[j]> arr[j +1]:
arr[j], arr[j +1]= arr[j +1], arr[j]return arr
快速排序:
defquick_sort(arr):iflen(arr)<=1:return arr
pivot = arr[0]
left =[x for x in arr[1:]if x <= pivot]
right =[x for x in arr[1:]if x > pivot]return quick_sort(left)+[pivot]+ quick_sort(right)
2. 查找算法
二分查找:
defbinary_search(arr, target):
left, right =0,len(arr)-1while left <= right:
mid =(left + right)//2if arr[mid]== target:return mid
elif arr[mid]< target:
left = mid +1else:
right = mid -1return-1
四、Python 框架与工具
1. Django 与 Flask 的区别
特性
Django
Flask
复杂度
全栈框架,功能强大
微框架,轻量级
灵活性
较低
较高
适用场景
大型项目
小型项目或 API 开发
2. Pandas 常用操作
读取 CSV 文件:
import pandas as pd
df = pd.read_csv('data.csv')
数据筛选:
filtered_df = df[df['age']>30]
数据聚合:
grouped_df = df.groupby('category').sum()
3. NumPy 常用操作
创建数组:
import numpy as np
arr = np.array([1,2,3])
矩阵乘法:
matrix_a = np.array([[1,2],[3,4]])
matrix_b = np.array([[5,6],[7,8]])
result = np.dot(matrix_a, matrix_b)