每日面经分享(python part1)

  1. Python中的深拷贝和浅拷贝的区别是什么?
    a. 浅拷贝创建一个新的对象,但其中的可变元素仍然共享引用。只有对象的第一层被复制,而更深层次的嵌套对象仍然是引用。更改其中一个对象的属性会影响到其他对象。
    b. 深拷贝创建一个完全独立的新对象,包括嵌套对象。深拷贝会递归复制整个对象树,因此每个对象及其嵌套对象都有自己的副本,互不影响。
  2. 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]]
  1. 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”}等。
  2. 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
  1. Python中的异常处理机制(try-except语句)
try:
    # 可能会引发异常的代码块
    # ...
except ExceptionType:
    # 处理异常的代码块
    # ...
  1. 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
海鲜市场

相关推荐

  1. C++ 每日一问(一)

    2024-04-04 07:24:05       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 07:24:05       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 07:24:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 07:24:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 07:24:05       18 阅读

热门阅读

  1. 探索STM32的外部中断/事件控制器(EXTI)

    2024-04-04 07:24:05       21 阅读
  2. Web框架开发-Django-model进阶

    2024-04-04 07:24:05       16 阅读
  3. 代克斯特拉演算法C代码

    2024-04-04 07:24:05       15 阅读
  4. 巧用lambda表达式构建各种“树”

    2024-04-04 07:24:05       18 阅读
  5. Rust 中的字符串类型:`&str` 和 `String`

    2024-04-04 07:24:05       14 阅读
  6. Cocos Creator 定时任务

    2024-04-04 07:24:05       15 阅读
  7. 数字资产与数据资产的区别

    2024-04-04 07:24:05       14 阅读
  8. 云原生数据库特征

    2024-04-04 07:24:05       11 阅读
  9. 对比传统交易模式与基于区块链的交易模式

    2024-04-04 07:24:05       12 阅读