python技术面试题(其三)

二十一, 谈谈正则的贪婪模式和非贪婪模式

在数量级匹配符中使用

默认为贪婪模式,用最多量的方式完成匹配

数量级匹配符后加?即为非贪婪 用最少的方式完成匹配

二十二, a=1 a=a+1 的堆栈内存过程

不可变类型,在调用栈里分配地址,地址直接对应值,如果修改会开辟一块新空间,存储新值,相互不影响

可变类型,在调用栈里分配地址,地址对应堆里分配的地址,堆的地址存储真正的值,如果修改会相互影响。

二十三, python的内存管理

从三个方面来说

一,对象的引用计数机制

二, 垃圾回收机制

三, 内存池机制

一, 对象的引用计数机制python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。

引用计数增加的情况

        1,一个对象分配一个名称

        2, 将其放入一个容器中(如列表,元组或字典)

 引用计数减少的情况:

        1, 使用del语句对对象别名显示的销毁

        2, 引用超出作用域被重新赋值 sys,getrefcount()函数可以获得对象的当前引用计数

多数情况下,引用计数比我们猜测的要大的多。对于不可变类型(如数字和字符串), 解释器会在程序的不同部分共享内存,以便节约内存

二、垃圾回收

1,当一个对象的引用计数归零时,它将被垃圾收集机制处理掉

2,当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。然而由于每个对象都包含一个对其他对象的应用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄漏)。为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。

三、内存池机制

python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统

        1,pymalloc机制,为了加速python的执行效率,python引入一个内存池机制,用于管理对小块内存的申请和释放

        2,python中所有小于256字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc.

        3,对于python对象,如整数,浮点数和list,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数

二十四, *arg和**kwarg作用

*arg代表位置的参数,它会接收任意多个参数并把这些参数作为元组传递给函数。

**kwargs代表的关键字参数,允许你使用没有事先定义的参数名。

位置参数一定要放在关键字参数的前面

作用:使用*args和**kwargs可以方便的定义函数,同时可以加强扩展性,以便日后的代码维护

二十五, is和==的区别

==是python标准操作符中的比较操作符,用来判断两个对象的value是否相等

is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同

二十六, filter, map, reduce的作用

filter()将符合条件的值过滤出来

map(lambda x:x*x, [12345]) # 根据提供的函数做指定序列的映射

reduce(function, iterable[,initializer]) # 对参数序列中的元素进行累计

二十七, 至少列举8个常用模板有哪些

1,sys 用于提供对解释器相关的访问以及维护,并有很强的交互功能

2,time:时间模块

3, os: 用于提供操作系统模块

4, ashlib: 用于加密相关的操作

5, random:生成随机变量

6,pickle:用于python特有类和python的数据类型间进行转换

7, datetime: data和time的结合体

8,re:正则表达式模块

二十八, json序列化时,可以处理的数据类型有哪些?如何定制支持datatime类型

json只能支持int\str\list\tuple\dict\

import json, datetime
from json import JSONEncoderclass ComplexEncoder(JSONEncoder):def default(self, obj):if isinstance(obj, datetime.datetime):return obj.strftime('%Y-%m-%d %H:%M:%S')else:return super(ComplexEncoder, self).default(obj)d = {'name': 'alex', 'data': datetime.datetime.now()}
print(json.dumps(d, cls=ComplexEncoder))  
# {"name": "alex", "data": "2018-09-28 14:49:42"}

自定义对datatime类型的序列化类, 继承JSONEncoder 使用里面的default方法,将编码失败的数据传入到这里,判断传入的对象是否是datatime类型,如果是则使用strtime方法进行还原成字符串。

三十, json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办

import jsona = json.dumps({"ddf": "你好"}, ensure_ascii=False)
print(a)
# {"ddf": "你好"}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:初步了解 二叉搜索树 🌹🌹期待您的关注 🌹🌹 ❀map与set 📒1.…

Scala Iterator(迭代器)

Scala Iterator(迭代器) Scala Iterator(迭代器)是一种用于访问集合元素序列的抽象数据类型。它提供了一种高效的方式来逐个访问集合中的元素,而不需要暴露其底层结构。Scala中的迭代器是不可变的,这意味着它们只能被单向遍历一次。一旦迭代器被消耗完,就不能再重新使用…

C# 实战-Controls属性

在C#窗体应用中,Controls是Control类或其派生类(如Form、Panel、GroupBox等)的一个属性。它表示控件集合,这个集合包含了控件的所有子控件。通过Controls属性可以访问、添加或删除控件。以下是几个详细的例子来说明如何理解和使用…

开发uniapp插件包aar文件,使uniapp可以调用jar包

背景 使用 uniapp 开发应用时,很多时候都需要调用第三方的sdk,一般以 jar 为主。为了应对这个问题,官方提供了插件方案,可以将第三方 jar 包进行封装为 aar 包后,再集成到 uniapp 中使用。 一、环境安装工具 1、jdk…

AI大模型是真的贵

背景: 微软和谷歌母公司Alphabet最新公布的季度财报均显示,由于企业客户在人工智能服务上的投入增加,其云计算业务实现了显著的收入增长。尽管Meta在将人工智能技术转化为收益方面稍显滞后,但它表示,其相关努力对提高…

C语言练习02-数组

一、求最值 已知数组元素为{33,5,22,44,55}&#xff0c;找出数组中的最大值并打印在控制台 #include<stdio.h> #include<math.h>int main() {int arr[] {33,5,22,44,55};int max arr[0];int len sizeof(arr) / sizeof(int); //注意&#xff1a;sizeof(arr)计算…

力扣(2024.06.20)

1. 48——旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 标签&#xff1a;数组&#xff0c;数学&#xff0c;矩阵 代码…

【无线传感网】分簇路由算法介绍

目录 1、LEACH路由算法 2、PEGASIS 算法 3、TEEN 算法 5、APTEEN 5、LEACH-C 算法 无线传感网中的路由协议就是寻找一条路径让网络中节点沿着这条路径将数据信息传输出去。路由协议的两大关键要点就是路径的优化和数据的分组,在传统计算机网络中,是将网络的拓扑…

Linux系统安装Dify结合内网穿透实现远程访问本地LLM开发平台

文章目录 前言1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署大语言模型应用开发平台Dify,并结合cpolar内网穿透工具实现公网环境远程访问…

【驱动篇】龙芯LS2K0300之驱动示例

实验环境 开发板&#xff1a;龙芯LS2K0300久久派 网络配置&#xff1a;配置好ssh连接&#xff0c;通过网口可以scp文件到开发板&#xff0c;参考前一篇文章 串口配置&#xff1a;通过CH340T模块连接好开发板上的UART0 示例程序 驱动代码 #include <linux/init.h> #…

python数组列表操作简记

python数组列表操作简记 一、python列表、数组增删元素1.1列表增删元素1.2数组增删元素1.2.1array数组1.2.2numpy数组 二、python列表、数组排序2.1列表排序2.1.1数值类型或无数字字符串类型2.1.2数字和字母组成的字符串类型2.1.3多字段类型 2.2数组排序2.2.1array数组2.2.2num…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] API集群访问频次统计(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

thewall-文件包含-CAP_DAC_READ_SEARCH

thewalleasyAkamai 防火墙、绕过wall、fuzz、文件包含利用、exiftool提权、sudo提权、ssh私钥利用 **后续需要虚拟机的私信我&#xff0c;我会打包进行文章发布链接&#xff0c;请持续关注&#xff01;&#xff01;&#xff01;** 服务探测 ┌──(kali㉿kali)-[~] └─$ su…

C#如何把DLL打包进EXE制作单文件绿色程序

在C#中&#xff0c;将DLL打包进EXE通常涉及到一个过程&#xff0c;这个过程会将DLL的内容和EXE文件结合在一起&#xff0c;使得最终的EXE文件在运行时可以不依赖于外部的DLL文件。这个过程可以通过ILMerge工具或者.NET Core的发布功能来实现。 使用ILMerge ILMerge是一个开源…

Python酷库之旅-第三方库openpyxl(01)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

前端基础操作1——利用nvm任意切换(管理)node版本

在实际前端项目开发过程中&#xff0c;同时开发多个项目或者切换新项目时&#xff0c;因为node版本问题造成项目无法运行的问题比比皆是&#xff0c;这时候通过nvm管理切换不同版本的node&#xff0c;就能很快进入开发模式&#xff0c;避免因为环境问题浪费大量精力&#xff0c…

安卓系统安装linux搭建随手服务器termux平替软件介绍

引言 旧手机丢可惜&#xff0c;可以用ZeroTermux&#xff08;一款代替termux&#xff09;的超级终端&#xff0c;来模拟Linux&#xff08;甚至你可以模拟Win&#xff0c;只要性能够用&#xff09; ps&#xff1a;此软件只是termux的增强版&#xff0c;相当于增加右边菜单&…

校园任务平台系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;论坛管理&#xff0c;任务咨询管理&#xff0c;用户管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;任务资讯公告&#…

Spring (70)如何在Spring Boot中实现日志管理

在Spring Boot中实现日志管理通常涉及选择合适的日志框架、配置日志记录规则和级别、以及定义输出格式和目的地。Spring Boot默认使用Logback作为日志的实现框架&#xff0c;但也支持其他日志系统如Log4j2和JUL(Java Util Logging)。以下是实现日志管理的几个关键步骤&#xff…

Spring 项目结构和配置详解

Spring 框架是 Java 企业级开发中广泛使用的框架&#xff0c;提供了强大的依赖注入&#xff08;Dependency Injection&#xff09;和面向切面编程&#xff08;AOP&#xff09;功能。一个典型的 Spring 项目结构和配置是至关重要的&#xff0c;本文将详细介绍 Spring 项目的基本…