Python面试十问

a9868a9756cb4d63a6674550c3b372aa.png

深浅拷贝的区别?

浅拷⻉: 拷⻉的是对象的引⽤,如果原对象改变,相应的拷⻉对象也会发⽣改变。

深拷⻉: 拷⻉对象中的每个元素,拷⻉对象和原有对象不在有关系,两个是独⽴的对象。

浅拷⻉(copy):拷⻉⽗对象,不会拷⻉对象的内部的⼦对象。

深拷⻉(deepcopy): copy 模块的 deepcopy ⽅法,完全拷⻉了⽗对象及其⼦对象。

装饰器及其应用场景?

装饰器(Decorator)是⼀种结构型设计模式,它可以动态地给⼀个对象添加额外的职责,同时⼜不改变其原有的接⼝和实现。通俗地说,就是通过组合的⽅式,为对象添加新的⾏为或特性。

  • ⽇志记录:可以定义⼀个装饰器函数,⽤于在函数调⽤时记录⽇志信息,如函数的参数、返回值等。
  • 性能分析:可以定义⼀个装饰器函数,⽤于在函数调⽤时计算函数的执⾏时间,以便进⾏性能优化。
import time
def time_it(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"函数 {func.__name__} 执⾏时间为:{end_time - start_time} 秒")
        return result
    return wrapper
@time_it
def my_function():
    time.sleep(2)
    print("Hello, World!")
my_function()

我们定义了⼀个装饰器函数time_it,它接受⼀个函数作为参数,并返回⼀个新的函数
wrapper。wrapper函数可以记录函数执⾏前后的时间,并输出执⾏时间信息。在my_function函数前⾯加上@time_it装饰器,表示对my_function函数应⽤time_it装饰器。

当调用my_function函数时,实际上会调⽤被time_it装饰过的wrapper函数,从⽽记录函数的执⾏时间。

装饰器的实质是什么 

装饰器是要把原来的函数装饰成新的函数,并且返回这个函数本身的⾼阶函数。

Python迭代器及场景?

Python中的迭代器是一个可以记住遍历的位置的对象,它实现了两个方法:__iter__()__next__()__iter__() 方法返回迭代器对象本身,__next__() 方法返回容器中的下一个值。当没有更多的元素时,__next__() 方法会抛出 StopIteration 异常。

迭代器常⽤于遍历序列、集合、字典等容器类型数据。它的优点是可以惰性计算,只有在需要时才会计算,避免了⼀次性加载所有数据的开销,同时也可以节省内存空间。

例⼦:

my_list = [1, 2, 3, 4, 5]
my_iterator = iter(my_list)
while True:
    try:
        item = next(my_iterator)
        print(item)
    except StopIteration:
        break
# 我们通过 iter() 函数将列表 my_list 转化为⼀个迭代器对象 my_iterator

Python⽣成器是什么

在Python中,⽣成器(Generator)是⼀种特殊的迭代器,它使⽤⽣成器函数来⽣成序列中的元素,⽽不是在内存中⼀次性⽣成所有元素。

 ⽣成器函数是使⽤yield关键字定义的函数,每次调⽤⽣成器函数时,它会返回⼀个迭代器对象,调⽤next()⽅法时,它会从上次暂停的位置继续执⾏,直到遇到下⼀个yield语句,然后返回⼀个值,并再次暂停。 

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

fib = fibonacci()
for i in range(10):
    print(next(fib))

Python多线程与多进程的区别

多线程中的多个线程共享同一个进程的内存空间,因此它们可以访问相同的变量和数据结构。这意味着线程之间的数据共享和通信比较容易,但也可能导致竞争条件和线程安全问题。相反,多进程中的每个进程有自己的独立内存空间,进程间的数据共享需要借助于进程间通信(IPC)机制,如管道、队列或共享内存等。创建和管理线程的开销通常小于进程,因为进程间的独立性使得它们需要更多的资源来维护。然而,由于线程之间共享内存,同步和协调线程的操作可能比在进程之间进行通信更复杂。

*args和**kwarg作⽤

*args代表位置参数,它会接收任意多个参数并把这些参数作为元组传递给函数。**kwargs代表的关键字参数,允许你使⽤没有事先定义的参数名。位置参数⼀定要放在关键字参数的前⾯

is和==的区别

==是python标准操作符中的⽐较操作符,⽤来⽐较判断两个对象的value(值)是否相等(布尔计算);

is:用于判断两个变量是否引用自相同的对象,即它们在内存中的地址是否相同。当使用 is 进行比较时,只有当两个变量指向同一个内存地址时,结果才为 True

Python垃圾回收机制

  • 每个对象都有一个引用计数,当引用计数变为0时,对象会被立即回收。
  • 对于一组对象互相引用形成闭环的情况,Python会定期检查并回收这些无法通过简单引用计数回收的对象。
  • Python对每一代采用不同的回收策略,通常年轻代的对象更频繁地进行垃圾回收。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/557146.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

selenium_定位tag_name

第一个input """需求:1. 使用tag_name定位方式,使用注册A.html页面,用户名输入admin方法:1. driver.find_element_by_tag_name("") # 定位元素方法2. send_keys() # 输入方法3. driver.quit() # 退出方…

最小生成树算法的实现c++

最小生成树算法的实现c 题目链接:1584. 连接所有点的最小费用 - 力扣(LeetCode) 主要思路:使用krusal算法,将边的权值进行排序(从小到大排序),每次将权值最小且未加入到连通分量中…

6、Lagent AgentLego 智能体应用搭建(homework)

基础作业 完成 Lagent Web Demo 使用,并在作业中上传截图。文档可见 Lagent Web Demo 0 环境准备 conda create -n agent conda activate agent conda install python3.10 conda install pytorch2.1.2 torchvision0.16.2 torchaudio2.1.2 pytorch-cuda11.8 -c py…

【Linux】动态扩容根目录

Linux:解决centos-root 根目录磁盘空间不足,动态扩容,不删数据 默认安装的root分区只有50G,/home分区有大几百G,可以考虑重新挂载分配空间,不用删除数据,不需要停业务。 查看系统空间 df -h解…

【PDF技巧】PDF文件带有密码,该如何解密?

PDF文件带有打开密码、限制编辑,这两种密码设置了之后如何解密? 不管是打开密码或者是限制编辑,在知道密码的情况下,解密PDF密码,我们只需要在PDF编辑器中打开文件 – 属性 – 安全,将权限状态修改为无保护…

深入理解C语言结构体和位域

目录标题 1. **结构体基础**2. **结构体的定义和使用**3. **结构体内存布局**4. **结构体与函数**5. **位域的定义和使用**6. **位域的实际应用**7. **结构体与位域的混合使用**8. **注意事项和最佳实践**9. **结语** C语言中的结构体和位域是存储和管理数据的重要工具&#xf…

孟德尔随机化(三)—— 再也不用担心网络或其他各种报错啦 | 从数据库下载数据到本地的数据处理方法

前几天咱们分享了看完不会来揍我 | 孟德尔随机化万字长文详解(二)—— 代码实操 | 附代码注释 结果解读,很多小伙伴们反映在使用代码下载数据时会遇到各种网络或其他报错问题,令人头大的那种!不要慌!从数据…

每日一题---合并两个有序数组

文章目录 1.前言2.题目2,代码思路3.参考代码 1.前言 上次我们做了移除元素这道题,下来我们看一下合并两个有序数组 2.题目 2,代码思路 创建三个变量,创建三个变量,分别是n1,n2,n3,分别指向nums1[m-1],nums…

华为ensp中Hybrid接口原理和配置命令

作者主页:点击! ENSP专栏:点击! 创作时间:2024年4月19日14点03分 Hybrid接口是ENSP虚拟化中的一种重要技术,它既可以连接普通终端的接入链路,又可以连接交换机间的干道链路。Hybrid接口允许多…

排序算法。

***冒泡排序: 基本&#xff1a; private static void sort(int[] a){for (int i 0; i < a.length-1; i) {for (int j 0; j < a.length-i-1; j) {if (a[j]>a[j1]){swap(a,j,j1);}}}} private static void swap(int[] a,int i,int j){int tempa[i];a[i]a[j];a[j]temp…

【YOLOv5】使用yolov5训练模型时报错合集

文章目录 前言问题1 -- VsCode终端无法进入Anaconda创建的虚拟环境【问题描述】【问题分析】【解决方式】方法一方法二 问题2 -- 怎么在VsCode中为项目配置Anaconda创建的虚拟环境【问题描述】【解决方式】 问题3 -- yolov5训练模型时报错RuntimeError: result type Float cant…

代码随想录-算法训练营day12【休息,复习与总结】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 ● day 12 周日休息&#xff08;4.14&#xff09; 目录 复习与总结 0417_图论-太平洋大西洋水流问题 0827_图论-最大人工岛 复习与总结 二刷做题速度提升了一大截&#xff0c;ヾ(◍∇◍)&#xff89;&#xff9e;加…

Linux重启网络后导致容器网络无法连接的解决办法

背景 有时候莫名奇妙的在一顿操作后&#xff0c;容器网络就坏了。然后外部无法访问容器的服务了。以前以为是操作了防火墙导致了容器无法被访问。但是最近经过仔细比较&#xff0c;防火墙规则并没有变化&#xff0c;但是容器就无法访问了。 分析 对于容器网络的讨论&#xff…

(六)PostgreSQL的组织结构(3)-默认角色和schema

PostgreSQL的组织结构(3)-默认角色和schema 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;57771 默认角色 Post…

校园水电预付费系统

一、引言 校园水电预付费系统是一种现代化的管理方式&#xff0c;它改变了传统的后付费模式&#xff0c;实现了先付费后使用的理念&#xff0c;有效提高了校园资源的使用效率和管理效能。本文将从系统功能、操作流程、优点和实施策略四个方面详细介绍这一系统。 二、系统功能…

【五十六】【算法分析与设计】线段树之add+query操作,pair表示节点,自定义类型表示节点,真树结构实现线段树与数组实现线段树

线段树解决的问题 给你一个nums数组&#xff0c;1.L~R区间上的值全部加C。2.L~R区间上的值全部变成C。3.对L~R区间上求和操作。 对于第一个方法&#xff0c;如果正常遍历L~R加C&#xff0c;时间复杂度是O(N)。 对于第二个方法&#xff0c;如果正常遍历L~RC&#xff0c;时间复…

实时数据同步之Maxwell和Canal

文章目录 一、概述1、实时同步工具概述1.1 Maxwell 概述1.2 Canal概述 2、数据同步工作原理2.1 MySQL 主从复制过程2.2 两种工具工作原理 3、MySQL 的 binlog详解3.1 什么是 binlog3.2 binlog 的开启3.3 binlog 的分类设置 4、Maxwell和Canal对比5、环境安装 二、Maxwell 使用1…

upload-labs第十一十二关

第十一关 $is_upload false; $msg null; if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_ext substr($_FILES[upload_file][name],strrpos($_FILES[upload_file][name],".")1);if(in_array($file_ext,$ext_arr)){$temp_file $_FILES[upload_fil…

前端学习之DOM编程案例:点名案例和秒表案例

点名 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>点名案例</title><style>*{margin: 0;padding: 0;}</style> </head> <body><div id"container">…

软考135-上午题-【软件工程】-软件配置管理

备注&#xff1a; 该部分考题内容在教材中找不到。直接背题目 一、配置数据库 配置数据库可以分为以下三类&#xff1a; (1) 开发库 专供开发人员使用&#xff0c;其中的信息可能做频繁修改&#xff0c;对其控制相当宽松 (2) 受控库 在生存期某一阶段工作结束时发布的阶段产…