Python面试常见问题及答案8
一、基础部分
问题1: 解释Python中的切片(slicing)操作在列表、字符串上是如何工作的?
答案:
在列表和字符串中,切片操作可以获取其中的一部分元素。切片的语法是[start:stop:step]。
- 对于列表,例如
my_list = [1, 2, 3, 4, 5]。如果我们想要获取索引从1到3(不包括3)的元素,可以使用my_list[1:3],这将返回[2, 3]。如果省略start,则从开头开始,如my_list[:3]返回[1, 2, 3];如果省略stop,则到结尾,如my_list[1:]返回[2, 3, 4, 5];step表示每隔多少个元素选取一个,如my_list[::2]返回[1, 3, 5]。 - 对于字符串,例如
my_string = "Hello World"。my_string[1:5]会返回ello。同样的规则适用于省略start、stop和修改step。
问题2: Python中的异常处理机制是如何工作的?请举例说明。
答案:
Python使用try - except - else - finally结构来进行异常处理。
- try块:包含可能会引发异常的代码。
- except块:当
try块中的代码引发了指定类型的异常时,对应的except块中的代码会被执行。例如:
try:num = 10 / 0
except ZeroDivisionError:print("除数不能为零")
- else块:如果
try块中的代码没有引发异常,则else块中的代码会被执行。 - finally块:无论是否发生异常,
finally块中的代码都会被执行。例如:
try:f = open('test.txt', 'r')
except FileNotFoundError:print('文件不存在')
else:print(f.read())
finally:if 'f' in locals():f.close()
二、数据结构深入
问题3: 如何在Python中对字典按键(key)或值(value)进行排序?
答案:
- 按键排序:使用
sorted()函数,传入字典的items()方法返回的键值对元组列表,按照每个元组的第一个元素(键)排序。例如,对于字典my_dict = {'c': 3, 'a': 1, 'b': 2},sorted(my_dict.items())会得到[('a', 1), ('b', 2), ('c', 3)]。 - 按值排序:可以通过自定义函数作为
sorted()函数的key参数来实现。如对于上述字典,若要按值排序,可以使用:sorted(my_dict.items(), key = lambda item: item[1]),这将得到[('a', 1), ('b', 2), ('c', 3)]。
问题4: Python中的集合(set)有哪些操作?请举例说明交集、并集、差集操作。
答案:
- 集合的常见操作有添加元素(
add方法)、删除元素(remove或discard方法等)、查找元素(in关键字)等。 - 交集:使用
&或者intersection方法。例如,set1 = {1, 2, 3},set2 = {2, 3, 4},set1 & set2或set1.intersection(set2)都会得到{2, 3}。 - 并集:使用
|或者union方法。例如,set1 | set2或set1.union(set2)会得到{1, 2, 3, 4}。 - 差集:使用
-或者difference方法。例如,set1 - set2或set1.difference(set2)会得到{1}。
三、函数高级
问题5: 什么是装饰器(Decorator)?请编写一个简单的装饰器示例。
答案:
装饰器是一种函数,它可以在不修改被装饰函数源代码的情况下,增加额外的功能到函数中。它接受一个函数作为输入,并返回一个新的函数。
以下是一个简单的计算函数运行时间的装饰器示例:
import timedef timer(func):def wrapper(*args, **kwargs):start = time.time()result = func(*args, **kwargs)end = time.time()print(f"{func.__name__}运行时间为:{end - start}秒")return resultreturn wrapper@timer
def my_function():time.sleep(2)
四、面向对象拓展
问题6: 解释Python中的多态(Polymorphism)?
答案:
多态是一种面向对象编程的概念,它指的是不同对象对同一方法调用可以有不同的行为反应。在Python中,多态通常通过以下方式体现:
- 方法重写(Override):子类可以重写父类中的方法,当调用该方法时,根据对象的实际类型决定调用的是父类还是子类的方法。例如:
class Animal:def speak(self):passclass Dog(Animal):def speak(self):print('汪汪汪')class Cat(Animal):def speak(self):print('喵喵喵')dog = Dog()
cat = Cat()
dog.speak()
cat.speak()
- 鸭子类型(Duck Typing):如果一个对象看起来像鸭子(具有某些方法或属性),那么就可以像鸭子一样对待它。例如,有两个类都有
draw方法,不管它们的类名和继承关系如何,只要有draw方法就能在相同的逻辑下调用。
问题7: 什么是类方法(classmethod)和静态方法(staticmethod)?它们有什么区别?
答案:
- 类方法:使用
@classmethod装饰器定义。类方法的第一个参数是cls,表示类本身。类方法可以访问和修改类属性,并且可以通过类名或者实例调用。例如:
class MyClass:class_attr = 0@classmethoddef class_method(cls):cls.class_attr = 1
- 静态方法:使用
@staticmethod装饰器定义。静态方法不需要传递类或实例作为第一个参数,它类似于类中的普通函数,但逻辑上与类相关。例如:
class MyClass:@staticmethoddef static_method():print('这是一个静态方法')
- 区别:类方法可以操作类属性,它与类的关系更紧密;而静态方法更像是类中的工具函数,不能直接访问类属性(除非通过类名引用)。
五、模块与包
问题8: 如何在Python中创建自定义模块和包?
答案:
- 自定义模块:
- 创建一个
.py文件,例如my_module.py。其中可以包含函数、类等各种Python代码。 - 在其他文件中可以通过
import my_module来导入这个模块,然后就可以使用my_module中的代码。例如,如果my_module.py中有一个my_function函数,可以通过from my_module import my_function或者import my_module后使用my_module.my_function来调用。
- 创建一个
- 自定义包:
- 创建一个文件夹,例如
my_package,并在里面创建一个__init__.py文件(在Python 3中,这个文件可以为空,它的存在表示这个文件夹是一个包)。 - 在包内可以添加多个
.py模块文件,如module1.py,module2.py等。 - 在其他地方使用这个包时,可以通过
import my_package.module1或者from my_package import module1等方式。
- 创建一个文件夹,例如
问题9: 请解释Python中的__init__.py文件在包导入中的作用。
答案:
__init__.py文件在包导入中有以下作用:
- 它将一个文件夹标记为一个Python包,使Python可以把这个文件夹当作一个模块来导入。
- 可以在
__init__.py文件中编写导入相关的代码,例如提前导入包内的某些模块,方便外部使用包时直接引用。例如,在my_package的__init__.py文件中可以写from. import module1,这样在使用import my_package时就可以直接通过my_package.module1访问module1模块,而不需要再单独从my_package中导入module1。 - 它可以包含一些初始化的代码,例如设置包级别的变量、初始化数据库连接等在整个包导入时需要执行的操作。
问题10: 如何在Python中处理循环导入的问题?
答案:
循环导入是指两个或多个模块之间相互导入的情况。处理方法有:
- 重新组织代码结构:尽量避免模块之间的循环依赖,将共享的代码抽取到一个独立的模块中。
- 延迟导入:将一些导入语句放在函数内部,而不是放在模块的顶部,这样只有在函数被调用时才会触发导入。例如,在模块
A.py和B.py存在循环导入的情况下:
在A.py中:
# def my_function():
# import B
# # 使用B中的功能
在B.py中:
# def other_function():
# import A
# # 使用A中的功能相关文章:
Python面试常见问题及答案8
一、基础部分 问题1: 解释Python中的切片(slicing)操作在列表、字符串上是如何工作的? 答案: 在列表和字符串中,切片操作可以获取其中的一部分元素。切片的语法是[start:stop:step]。 对于列表࿰…...
ASP.net Core EntityFramework Code EF code 汇总
Entity FrameWork EF 总结 EF Core EF Core 如果实体模型很多,全部放在 上下文中的 OnModelCreating(ModelBuilder modelBuilder) 不太好维护 可以把实体模型 分离出去,每个类创建一个实体模型 public class BookConfiguration :IEntityT…...
u3d动画系统五【StateMachineBehaviour类】
一.StateMachineBehaviour概述 状态机行为是一类特殊脚本。与将常规 Unity 脚本 (MonoBehaviour) 附加到单个游戏对象类似,您可以将 StateMachineBehaviour 脚本附加到状态机中的单个状态。因此可编写一些将在状态机进入、退出或保持在特定状态时执行的代码。这意味…...
IS-IS协议
IS-IS协议介绍 IS-IS(Intermediate System to Intermediate System)协议是一种链路状态的内部网关协议(IGP),用于在同一个自治系统(Autonomous System, AS)内部的路由器之间交换路由信息。IS-I…...
使用C++实现RSA加密解密
一,RSA简介。 RSA,一种非对称加密方式。是目前为止最有影响力的加密算法之一,而且是第一个同时应用于加密和数字签名的算法。 其原理为:两个大素数相乘容易,但是若想将两个大素数相乘的积再分解为两个原始的素数很难…...
C++归并与快速
快排 #include<bits/stdc.h> #include<algorithm> using namespace std; void f(int,int); void cl(int,int,int); void q(int,int); int a[211]; int n; int main(){cin>>n;for(int i0;i<n;i){cin>>a[i];}q(0,n-1);for(int i0;i<n;i){cout<…...
金蝶云苍穹踩过的坑(慢慢更新)
IDEA不能用最新版,不然搜不到金蝶的插件。 我用的是2024.1.7/2023.1.7 IDEA里增加金蝶插件库的地址也变了,现在是 https://tool.kingdee.com/kddt/idea-updatePlugins.xml 金蝶云苍穹部署在服务器 MAC本地IDEA调试的时候,登录N次能成功一次…...
AndroidStudio——安卓项目结构与文件介绍
一、AndroidStudio界面 一个安卓项目界面主要由以下几部分组成: 1.菜单栏:位于顶部,基本的各项菜单操作 2.项目结构:通常位于左侧,展示当前项目的目录结构 3.编辑窗口:通常位于中间,可以用于编…...
华为自反ACL实验
一、实验背景 做这个实验的原因是最近公司里上了三台小程序服务器,由于三台服务器的端口都映射出去了,领导要求A网段的三台服务器不能访问内网B,C网段,同时B、C网段内网用户可以访问A段的94、95、96服务器; 也就是PC4\…...
yml和xml分别代表什么
YML 和 XML 是两种不同的数据序列化格式,它们在软件开发和数据交换中有着广泛的应用: YAML (YAML Ain’t Markup Language): YAML 是一种用于数据序列化的人类可读语言。它被设计为易于阅读和编写,特别适合于配置文件。YAML 使用缩进来表示数…...
Qt多线程编程
在Qt中,多线程编程是一个常见的需求,特别是当你需要执行耗时的后台任务而不希望阻塞用户界面时。多线程编程它允许应用程序同时执行多个任务,从而提高性能和响应速度。Qt提供了一套完善的多线程支持,包括线程类(QThrea…...
springboot438校园志愿者管理系统(论文+源码)_kaic
摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统校园志愿者管理系统信息管理难度大,容错率低&…...
PostgreSQL 常用运维SQL整理
一、查询并杀会话 -- 查询会话 select pid,usename,client_addr,client_port,query_start,query,wait_event from pg_stat_activity; -- 杀会话 select pg_terminate_backend(pid号); -- 使用如下命令自动生成杀会话语句 select datid,datname,pid,usesysid,usename,applicat…...
Debezium Oracle CTAS 解析器实现:基于 ANTLR 的 CREATE TABLE AS SELECT 语句解析
Debezium Oracle CTAS 解析器实现:基于 ANTLR 的 CREATE TABLE AS SELECT 语句解析 本文详细介绍了 Debezium Oracle 连接器中如何解析 CREATE TABLE AS SELECT (CTAS) 语句,通过具体的实现代码帮助读者理解 ANTLR 监听器在复杂 SQL 解析中的应用。 文章目录 Debezium Oracle…...
从零开始学docker(五)-可用的docker镜像
最近docker镜像都不能访问,目前亲测可用的docker镜像可用,并拉取mysql测试完成。 [缺点] docker search 查不到镜像的索引列表,只能手动查询索引目录(解决方案在最后)。 linux服务器vim打开镜像文件daemon.json vim /e…...
力扣——322. 零钱兑换
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示…...
.Net_比对Json文件是否一致
简介 该方法用于比较两个Json文件是否完全一致,仅考虑内容若两个文件中的内容只是顺序不一致,内容是一样的,那么也代表这两个文件是相等的 实现代码 调用 using CompareJsonFiles;Console.WriteLine(" 输入信息 ");Console.WriteL…...
科研笔记:ARR 与 ACL rolling
1 ARR 介绍 ARR 提供 评审服务 —— 仅限评审 —— 对于提交的论文。评审不会针对特定会议/场所,但评审标准与传统会议的主会场长文或短文提交要求相同(如 ACL 或其他由 ACL 主办的重要会议) 2 提交论文进行 ARR 评审 提交截止日期 每两个…...
【2024】Camunda常用功能基本详细介绍和使用-上 (1)
这里写目录标题 前言一、 介绍基本概念介绍1.BPMN2.Form3.DMN 二、Camunda使用1、下载安装1.1、camunda-modeler:BPMN绘画工具1.2、camunda-bpm-run:web端控制页面 2、创建流程2.1、部署一个基础流程2.2、添加用户任务2.2.1、绑定表单2.2.1.1、Generated…...
用人话讲计算机:Python篇!(十二)正则运算+re模块
目录 一、正则表达式 (1)什么是正则表达式 (2)它的结构及使用 示例: 1.字符 . (←这里有个小点哦) 2.字符 | 3.字符 [ ] 4.字符^ 5.字符\d (3)补充ÿ…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
