- Python中的深拷贝和浅拷贝的区别是什么?
a. 浅拷贝创建一个新的对象,但其中的可变元素仍然共享引用。只有对象的第一层被复制,而更深层次的嵌套对象仍然是引用。更改其中一个对象的属性会影响到其他对象。
b. 深拷贝创建一个完全独立的新对象,包括嵌套对象。深拷贝会递归复制整个对象树,因此每个对象及其嵌套对象都有自己的副本,互不影响。 - Python如何进行深拷贝和浅拷贝?
a. 浅拷贝
import copy
new_list = copy.copy(old_list) # 浅拷贝列表
new_dict = copy.copy(old_dict) # 浅拷贝字典
b. 深拷贝
import copy
new_list = copy.deepcopy(old_list) # 深拷贝列表
new_dict = copy.deepcopy(old_dict) # 深拷贝字典
c. 深拷贝与浅拷贝区别
import copy
# 原始列表
original_list = [1, 2, [3, 4]]
# 浅拷贝
shallow_copy_list = copy.copy(original_list)
# 深拷贝
deep_copy_list = copy.deepcopy(original_list)
# 修改嵌套列表的值
original_list[2][0] = 5
print(original_list) # 输出: [1, 2, [5, 4]]
print(shallow_copy_list) # 输出: [1, 2, [5, 4]]
print(deep_copy_list) # 输出: [1, 2, [3, 4]]
- python8种数据类型
a. 整数(int):用于存储整数值,例如1、2、-3等。
b. 浮点数(float):用于存储带有小数部分的数值,例如3.14、2.5等。
c. 字符串(str):用于存储文本数据,由一系列字符组成,例如"Hello, World!"、"Python编程"等。
d. 布尔值(bool):用于存储逻辑值,表示真或假,只有两个可能的取值:True和False。
e. 列表(list):用于存储多个有序元素的集合,元素之间用逗号分隔,可以包含不同类型的数据,例如[1, 2, 3]、[“apple”, “banana”, “orange”]等。
f. 元组(tuple):类似于列表,但是元组是不可变的,即创建后不能修改,用圆括号括起来,例如(1, 2, 3)、(“apple”, “banana”, “orange”)等。
g. 集合(set):用于存储无序且唯一的元素,元素之间用逗号分隔,用大括号括起来,例如{1, 2, 3}、{“apple”, “banana”, “orange”}等。
h. 字典(dict):用于存储键值对的集合,每个键值对之间用冒号分隔,键和值之间用逗号分隔,用大括号括起来,例如{“name”: “Alice”, “age”: 20, “city”: “New York”}等。 - Python中的迭代器(Iterator)和可迭代对象(Iterable)的概念,它们之间的区别
a. 可迭代对象是指那些具有__iter__()方法的对象。常见的可迭代对象包括列表、元组、字符串、字典、集合等。可迭代对象可以被用于for循环中,通过重复调用其__iter__()方法来获得一个新的迭代器对象。
b. 迭代器是指具有__iter__()和__next__()方法的对象。iter()方法返回迭代器对象本身,而__next__()方法返回迭代器的下一个元素。当没有更多元素时,next()方法会引发StopIteration异常。迭代器对象可以记住迭代的位置,因此可以在需要时从上一次停止的地方继续迭代。
c. 迭代器和可迭代对象之间的主要区别如下:
i. 可迭代对象是一个集合或序列,可以使用for循环遍历其元素。它提供了一个迭代器。
ii. 迭代器是一个对象,用于逐个访问可迭代对象的元素。迭代器在迭代过程中保持状态,以便记住当前位置。
my_list = [1, 2, 3, 4, 5] # 可迭代对象
my_iter = iter(my_list) # 获取迭代器对象
print(next(my_iter)) # 输出: 1
print(next(my_iter)) # 输出: 2
print(next(my_iter)) # 输出: 3
- Python中的异常处理机制(try-except语句)
try:
# 可能会引发异常的代码块
# ...
except ExceptionType:
# 处理异常的代码块
# ...
- Python装饰器的作用
a. 扩展函数的功能:装饰器可以在不改变函数定义的情况下,为函数添加额外的功能,例如日志记录、性能分析、输入验证等。
b. 代码重用和简化:装饰器可以将一些常用的代码逻辑封装起来,使其可以在多个函数中重复使用,从而简化代码。
c. 高级函数用法:装饰器可以用于实现一些高级的函数用法,例如缓存、单例模式等。
def uppercase_decorator(func):
# 装饰器函数,该装饰器接受一个函数作为参数,并返回一个新的函数wrapper
def wrapper():
result = func()
return result.upper()
return wrapper
@uppercase_decorator
def say_hello():
# 调用say_hello()函数时,实际上是调用了uppercase_decorator返回的wrapper函数
return "hello, world!"
print(say_hello()) # 输出: HELLO, WORLD!
互联网大厂测开经历,目前担任测试开发负责人,每天分享互联网面经,如果你有测试相关的问题,欢迎咨询,海鲜市场【简历优化】、【就业指导】、【模拟/辅导面试】,已辅导20位以上同学拿到心仪offer