Python常考基础面试题

2023-11-09

Python基础面试题

1、 Python 数据结构有哪些

  • 整数(int)
  • 浮点(float)
  • 字符串(str)
  • 布尔(bool)
  • 列表(list)
  • 元组(tuple)
  • 字典(dict)
  • 集合(set)

2、Python 中列表和元组的区别是什么?元组是不是真的不可变?

  • 列表:list 是可变类型、数据可以动态变化
  • 元组:是不可变类型,大小固定

3、什么是生成器和迭代器?它们之间有什么区别?

迭代器

  • 作用:简化循环的代码并可以节约内存
  • 是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退
  • 迭代器有两个基本的方法:iter() 和 next()。

生成器

  • 作用:节约大量内存
  • 使用了 yield 的函数被称为生成器、生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器
  • 原理:在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行

4、什么是闭包?装饰器又是什么?装饰器有什么作用?你用过装饰器吗?请写一个装饰器的例子

  • 闭包是指Python中将组成函数的语言和这些语言的执行环境打包到一起所得到的对象
  • 装饰器是一种增加函数或类功能的简单方法,它可以快速给不同的函数或类插入相同的功能。语法:“@装饰器名”加在函数之前
  • 例:
    在这里插入图片描述

5、什么是匿名函数,用匿名函数有什么好处?

匿名函数:使用lambda创建的函数,所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

好处

  • 1、使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
  • 2、对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
  • 3、使用lambda在某些时候让代码更容易理解。

应用场景:经常与一些内置函数相结合使用,比如说map()、filter()、sorted()、reduce()

表达式格式lambda 参数列表: lambda体

案例

frame.applymap(lambda x: '%.2f' % x)
frame.apply(lambda x: x.max() - x.min())

6、如何提高 Python 的运行效率吗

  • 使用生成器优化内存
  • 循环的优化:多个if elif条件判断,可以把最有可能先发生的条件放到前面写,这样可以减少程序判断的次数,提高效率
  • 优化算法时间:算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1)

7、用过类吗?知道继承吗?请写一个例子,用到继承。

  • 继承:指通过获取父对象的属性和能力,再加上自定义的属性和能力而成为一个对象的子对象或一个类的子类。
    在这里插入图片描述

  • 重写:方法名取一样,方法重写
    在这里插入图片描述

8、深拷贝和浅拷贝

  • 浅拷贝,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象;改变原始对象中为不可变类型的元素的值,不会响拷贝对象。
  • 深拷贝,除了顶层拷贝,还对子元素也进行了拷贝。经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了

9、列举8个常用模块都有那些?

os模块:提供了不少与操作系统相关联的函数.

sys模块:通用工具脚本经常调用命令行参数.

re模块:为高级字符串处理提供了正则表达式工具。对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案:

random模块:提供了生成随机数的工具。

json模块:提供Python解析json数据的方法,和python格式相互转化的方法

time模块:python中用于处理时间的模块

logging模块:python中关于日志处理的模块

xml模块:python爬虫中用于定位html标签的模块

10、Python垃圾回收机制?(知道即可)

python采用的是引用计数机制为主,标记-清除和分代收集(隔代回收、分代回收)两种机制为辅的策略

计数机制:Python的GC模块主要运用了引用计数来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”解决容器对象可能产生的循环引用的问题。通过分代回收以空间换取时间进一步提高垃圾回收的效率。

标记-清除::标记-清除的出现打破了循环引用,也就是它只关注那些可能会产生循环引用的对象
缺点:该机制所带来的额外操作和需要回收的内存块成正比。

隔代回收
原理:将系统中的所有内存块根据其存活时间划分为不同的集合,每一个集合就成为一个“代”,垃圾收集的频率随着“代”的存活时间的增大而减小。也就是说,活得越长的对象,就越不可能是垃圾,就应该减少对它的垃圾收集频率。那么如何来衡量这个存活时间:通常是利用几次垃圾收集动作来衡量,如果一个对象经过的垃圾收集次数越多,可以得出:该对象存活时间就越长。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python常考基础面试题 的相关文章

  • tensorflow Protobuf编译问题

    我想为 google 对象检测 API 编译 protobuf 库 我按照官方教程输入protoc object detection protos proto python out 然后我得到的是 object detection prot
  • CVXPY 二次规划; ArpackNoConvergence 错误

    我尝试使用 Python 包 CVXPY 来解决第一种形式的凸二次规划问题 https www cvxpy org examples basic quadratic program html https www cvxpy org exam
  • Django:将博客条目查看次数增加一。这有效率吗?

    我的索引视图中有以下代码 latest entry list Entry objects filter is published True order by date published 10 for entry in latest ent
  • 只使用 Django 的某些部分?

    我喜欢 Django 但对于一个特定的应用程序 我只想使用它的一部分 但我对 Django 的内部工作原理还不够熟悉 所以也许有人可以指出我必须做什么的正确方向查看 具体来说 我想使用 模型和数据库抽象 The 缓存API http doc
  • Pandas 字符串提取所有匹配项

    我正在学习 pandas 系列字符串方法中的正则表达式操作 我能够从字符串中提取第一个数字 但我的正则表达式与第二个数字不匹配 如何捕获这两个数字 注意第二行 第二个元素在这里是 NAN CODE import pandas as pd d
  • 重新索引错误没有意义

    I have DataFrames大小在 100k 到 2m 之间 我正在处理这个问题的框架是如此之大 但请注意 我必须对其他框架执行相同的操作 gt gt gt len data 357451 现在这个文件是通过编译许多文件创建的 所以它
  • Python grpc protobuf 存根生成问题:--grpc_out: protoc-gen-grpc: 插件失败,状态代码 1

    正如问题所说 我从源代码编译了 grpc 并且也做了sudo pip install grpcio 但是 那which grpc python plugin不返回任何内容 这是一个问题 因为route guide的grpc python示例
  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • Spyder 导入模块出错

    我正在尝试在 Spyder 中使用 sklearn 一开始 当我尝试导入它时 我收到 ImportError No module named sklearn 然后我用 PYTHONPATH 管理器设置 PATH 然后使用工具菜单中的 更新模
  • Seaborn 热图中的自定义调色板间隔

    我正在尝试绘制一个heatmap https seaborn pydata org generated seaborn heatmap html使用seaborn库 绘图函数如下所示 def plot confusion matrix da
  • 类型错误:需要 Future 或协程

    我尝试在 asyncssh 上自动重新连接 ssh 客户端 SshConnectManager 必须留在后台并在需要时进行 ssh 会话 class SshConnectManager object def init self host u
  • pandas to_sql sqlalchemy 与 secure_transport 的连接

    我正在尝试将数据发送到具有 require secure transport ON 的服务器上的 mysql 数据库 当我尝试使用以下代码连接到它时 import pandas as pd import pymysql from sqlal
  • 如何绘制多类分类器的精度和召回率?

    我正在使用 scikit learn 我想绘制精度和召回曲线 我正在使用的分类器是RandomForestClassifier scikit learn 文档中的所有资源都使用二元分类 另外 我可以绘制多类的 ROC 曲线吗 另外 我只找到
  • 使用 Python 脚本打开特定文件类型?

    如何使 Python 脚本成为特定文件类型 例如 foo 的默认应用程序 例如 当我双击 Finder Explorer 中的文件时 我希望该文件在 Python 脚本中打开 这可以在 Win 和 或 OS X 中实现吗 如果重要的话 该应
  • Celery:每个工作人员的 task_acks_late 的不同设置/向 celery 添加自定义选项

    这个问题是后续问题django celery 禁用一个工作者的预取 有错误吗 https stackoverflow com questions 58290045 django celery disable prefetch for one
  • Scrapy的redirect_urls异常.KeyError

    我是 Scrapy 和 Python 的新手 最近推出了我的第一个蜘蛛 有一个功能似乎以前有效 但现在它只适用于我试图废弃的一些网站 代码行是 item url direct response request meta redirect u
  • 如何使用 pygame.mixer 重复音乐?

    我创建了以下使用 pygame mixer 播放 mp3 音乐的代码 然而 音乐不会重复 有什么想法可以让音乐重复播放吗 这是代码 playlist list playlist append put music here mp3 playl
  • 如何限制scrapy请求对象?

    所以我有一个蜘蛛 我认为它正在泄漏内存 结果当我检查 telnet 控制台 gt gt gt prefs 时 它只是从链接丰富的页面中抓取了太多链接 有时它会超过 100 000 个 现在我已经一遍又一遍地浏览文档和谷歌 但我找不到一种方法
  • Flask 扩展未在 app.extensions 中注册

    我想访问在我的 Flask 应用程序上注册的一些扩展 我尝试使用app extensions 但我初始化的一些扩展不在字典中 from flask import current app current app extensions get
  • 在多个图表上绘制一条线

    I don t know how this thing is called or even how to describe it so the title may be a little bit misleading The first a

随机推荐

  • 1.3 起步 - Git 基础

    1 3 起步 Git 基础 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 18 初稿 目录 文章目录 1 3 起步 Git 基础 版本说明 目录 Git 基础 1 直接记录快照 而非差异比较 Figure 4 存储每个文
  • python报错:ValueError: not enough values to unpack

    报错 ValueError not enough values to unpack 分析具体原因 这个错误的信息是 期望有7个返回值 但其实函数只有4个返回值 解决方法 检查函数和接收函数返回值的参数个数是否一致 改成一致即可
  • MySQL - 一文了解MySQL的基础架构及各个组件的作用

    1 概述 不管是开运 运维 测试 都或多或少的要接触MySQL 了解MySQL的基础架构及各个组件之间的关系 有助于我们更加深入的理解MySQL 下面由一张MySQL基础架构图来一起走进MySQL MySQL可以基本划分为Server层和存
  • helm的安装、使用以及自定义Chart

    Helm概述 Helm 是一个 Kubernetes 的包管理工具 类似 Linux 的包管理器 如RedHat系的yum Debian的apt 可以很方便的将之前打包好的 yaml 文件部署到 Kubernetes 上 Helm主要解决以
  • Open3D 基于法线的双边滤波

    目录 一 算法原理 1 算法概述 2 计算步骤 3 参考文献 二 代码实现 三 结果展示 1 原始点云 2 滤波结果 四 相关链接 一 算法原理 1 算法概述 Fleishman 等人提出一种网格双边滤波器 双边滤波器最早应用于灰度图像 该
  • Linux下挂在SATA硬盘时的诡异现象

    ata1 SATA link down SStatus 1 SControl 300 ata1 EH complete ata1 exception Emask 0x10 SAct 0x0 SErr 0x4000000 action 0xa
  • Windows下配置Mask-RCNN环境(各种踩过的坑)

    Windows下配置Mask RCNN pytorch环境 各种踩过的坑 安装Anaconda 1 1 下载和安装Anaconda 安装maskrcnn benchmark项目 2 1 官方建议的安装需求 2 2 逐步安装过程 1 创建虚拟
  • TCP通讯客户端怎样判断与服务器端断开,该如何处理

    TCP通讯客户端怎样判断与服务器端断开 大虾们 神们 C winform里面 采用多线程监听端口 接收方式为阻塞式 创建单一线程进行监听函数 这样阻塞时只阻塞单一线程 对主线程没有影响 并使用异步通信模式 来一个连接后回调函数进行解析入库
  • 动态修改模板字符串中图片--简单解决

    document addEventListener error function e var elem e target if elem id toLowerCase imgurl infowindow 在这内部可以发请求拿到动态的地址 i
  • IP地址,子网掩码、默认网关,DNS的设置和工作原理(总结)

    概念 1 概述 IP地址 人们在Internet上为了区分数以亿计的主机而给每台主机分配的一个专门的地址 通过IP地址就可以访问到每台主机 子网掩码 不能单独存在 它必须结合IP地址一起使用 子网掩码只有一个作用 就是将某个IP地址划分成网
  • Blender教程之魔方全自动特效教学

    魔方玩家在我看来分为三种 一是不懂原理的佛系玩家 三阶魔方可能都要拧很久才能还原 第二种是明白怎么玩的玩家 其实还原一个被打乱的魔方就是做一道层先法的数学题 而第三种就是像我这样虽然不懂解密 但会用Blender做一个魔方来让它 自动还原
  • Android Bluetooth

    Android Bluetooth 使用Android蓝牙API来进行蓝牙通信的四个任务 设置蓝牙 检索周围匹配的或者可用的设备 连接设备 设备间传输数据 所有蓝牙APIs在android bluetooth 包中 创建蓝牙连接所要用到的类
  • 一、人脸识别starter-需求分析

    一 需求来源 对于一些需要本人刷脸认证的场景 比如注册时需要刷脸认证 要求上传身份证必须是本人的 等此场景 二 需求分析 考虑到这是个单独并且可复用的模块 所以决定写一个springboot starter来实现 starter可以上传到自
  • 定位、浮动

    Position 定位 一 position 1 属性描述 设置或获取元素的定位方式 2 版本变更 有 3 语法模板 position static relative absolute fixed 4 默认值 static 尽量避开影响其他
  • C++编译知识笔记(一)——基本知识

    文章目录 一 编译的基本步骤 1 1 预处理阶段 1 2 编译阶段 1 3 汇编阶段 1 4 链接阶段 二 核心常用基本概念 2 1 o目标文件 2 2 符号 2 3 静态链接库 2 4 动态链接库 三 链接和加载 3 1 o文件和静态库的
  • python 内置函数——enumerate( )函数

    发音 nu m re t 枚举 列举 enumerate 是python的内置函数 适用于python2 x和python3 x 用来将一个可迭代对象转化为枚举对象 利用它可以同时获得每个元素的索引下标和值 即需要 index 和 valu
  • Ueditor富文本编辑器客制化功能添加

    文章目录 ueditor简介 主要配置文件 要实现的功能展示 实现过程 修改 ueditor all js 配置页面的内容 setcellattribute html 添加多语言配置 添加CSS样式 ueditor css 开放属性白名单
  • Say0l的安全开发-弱口令扫描工具-My-crack【红队工具】

    写在前面 终于终于 安全开发也练习一年半了 有时间完善一下项目 写写中间踩过的坑 安全开发的系列全部都会上传至github 欢迎使用和star 工具链接地址 https github com SAY0l my crack 预览 My Cra
  • 【GD32F427开发板试用】USB FS 键盘

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动 更多开发板试用活动请关注极术社区网站 作者 Charles 一 试用介绍 GD32F427RK支持USBFS和USBHS 我试用的是USBFS功能 所以在此只关注FS相关特
  • Python常考基础面试题

    文章目录 Python基础面试题 1 Python 数据结构有哪些 2 Python 中列表和元组的区别是什么 元组是不是真的不可变 3 什么是生成器和迭代器 它们之间有什么区别 迭代器 生成器 4 什么是闭包 装饰器又是什么 装饰器有什么