一、Python 基础
1. Python 的特点
动态类型:变量无需声明类型。
解释型语言:逐行解释执行。
支持多种编程范式(面向对象、函数式、过程式)。
2. 列表(List)与元组(Tuple)的区别
特性
列表(List)
元组(Tuple)
可变性
可变
不可变
性能
较慢
较快
使用场景
数据需要频繁修改时
数据固定且不可更改时
3. 字典(Dict)与集合(Set)的区别
字典 :键值对存储,用于快速查找。
集合 :无序且唯一的元素集合,用于去重或集合运算。
4. GIL(全局解释器锁)是什么?
GIL 是 Python 解释器中的一个互斥锁,确保同一时间只有一个线程执行 Python 字节码。
影响:多线程在 CPU 密集型任务中性能较差,但不影响 I/O 密集型任务。
5. 深拷贝与浅拷贝的区别
浅拷贝 :只复制对象的引用,内部元素共享。
深拷贝 :递归复制对象及其内部元素。
python
复制代码
import copy
a = [1, 2, [3, 4]]
b = copy.copy(a) # 浅拷贝
c = copy.deepcopy(a) # 深拷贝
二、Python 进阶
1. 生成器与迭代器的区别
迭代器 :实现了 __iter__
和 __next__
方法的对象。
生成器 :通过 yield
关键字定义的函数,返回一个生成器对象。
python
复制代码
# 迭代器示例
class MyIterator:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
value = self.data[self.index]
self.index += 1
return value
# 生成器示例
def my_generator(data):
for item in data:
yield item
2. 装饰器的作用与实现
作用 :在不修改原函数代码的情况下扩展其功能。
实现 :
python
复制代码
def my_decorator(func):
def wrapper(*args, **kwargs):
print("Before function call")
result = func(*args, **kwargs)
print("After function call")
return result
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
3. 上下文管理器
使用 with
语句管理资源(如文件、数据库连接)。
实现方式:
使用类实现 __enter__
和 __exit__
方法。
使用 contextlib
模块的 contextmanager
装饰器。
python
复制代码
# 类实现
class MyContextManager:
def __enter__(self):
print("Entering context")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("Exiting context")
# 使用 contextlib
from contextlib import contextmanager
@contextmanager
def my_context_manager():
print("Entering context")
try:
yield
finally:
print("Exiting context")
4. 异步编程
python
复制代码
import asyncio
async def say_hello():
print("Hello")
await asyncio.sleep(1)
print("World")
asyncio.run(say_hello())
三、算法与数据结构
1. 常见排序算法
python
复制代码
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
python
复制代码
def quick_sort(arr):
if len(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. 查找算法
python
复制代码
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
四、Python 框架与工具
1. Django 与 Flask 的区别
特性
Django
Flask
复杂度
全栈框架,功能强大
微框架,轻量级
灵活性
较低
较高
适用场景
大型项目
小型项目或 API 开发
2. Pandas 常用操作
python
复制代码
import pandas as pd
df = pd.read_csv('data.csv')
python
复制代码
filtered_df = df[df['age'] > 30]
python
复制代码
grouped_df = df.groupby('category').sum()
3. NumPy 常用操作
python
复制代码
import numpy as np
arr = np.array([1, 2, 3])
python
复制代码
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
result = np.dot(matrix_a, matrix_b)