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