1. python中yeild和return的区别?
2. 介绍一下pytohn中的上下文管理器?
在Python中,上下文管理器(Context Manager) 是一种通过 with 语句管理资源的协议,确保资源(如文件、数据库连接、线程锁等)在使用后被正确释放,避免资源泄漏
class FileHandler:
def __init__(self, filename):
self.filename = filename
def __enter__(self):
self.file = open(self.filename, 'r')
return self.file # 返回资源对象
def __exit__(self, exc_type, exc_val, exc_tb):
self.file.close() # 确保文件关闭
# 使用示例
with FileHandler('test.txt') as f:
content = f.read()
3.python中的函数传参是传值还是传引用?
变量是对象的标签:Python中变量本身不存储值,而是存储对对象的引用(即内存地址)。
函数传参传递引用:调用函数时,传递的是对象引用的副本(即参数和原变量指向同一个对象)。
修改行为的差异:对参数的操作是否影响原变量,取决于对象是否可变(Mutable)。
不可变对象(如整数、字符串、元组)
def change(x):
x = 10 # 重新绑定局部引用
a = 5
change(a)
print(a) # 输出5(原变量未变)
可变对象(如列表、字典)
def append_item(lst):
lst.append(4) # 修改原对象
my_list = [1, 2, 3]
append_item(my_list)
print(my_list) # 输出[1, 2, 3, 4](原对象被修改)
-
深拷贝和浅拷贝
浅拷贝:copy(),共享引用,改一个值影响其他
深拷贝:deepcopy,完全独立 -
解释一下python装饰器的概念
装饰器的本质是一个高阶函数,它接受一个函数作为参数,返回一个新的函数。其实现依赖以下两个概念:(1)闭包(Closure)
内部函数保留对外部函数作用域的引用,即使外部函数已执行完毕。
(2)函数嵌套
在装饰器函数内部定义另一个函数,用于包裹原函数并添加额外功能