python编程a的x次方_「Python 面试」第四次更新

bVbuYzy?w=3484&h=2480

阅读本文大约需要 5 分钟。

15.说一说 GIL

前面有提到由于 Python 基于 C 语言编写的解释器中设置了一个 GIL 全局变量锁,该锁使得 Python 的多线程在处理 CPU 计算密集型任务时,同一时刻只能有一个线程在运行,这也是为什么说 Python 的多线程是一个「假性多线程」的原因。

解决 GIL 的办法在处理 CPU 计算密集型任务时,使用多进程 + 协程,发挥计算机多核的威力,而处理 I/O 密集型,则可以使用多线程。

16.说一说 Python 中的垃圾回收机制(GC)

引用计数清零

标记-清除

隔代回收

这里有一篇文章可以参考一下。垃圾回收机制

17.说一说 Python 中的函数式编程

lambda

lambda 匿名函数,使用匿名函数可以帮助我们简化代码,且节省程序由于显示创建函数的消耗。

示例:

# 冒号左边是参数, 右边是表达式,lambda 返回的是右边表达式的结果

L2 = lambda x : x * x

print(L2(5))

# 结果为 25

map

map(func,*Iterable),map 函数通过将可迭代对象传入 func 函数,全部执行。

示例:

# 相当于 [1*1, 2*2, 3*3, 4*4]

L2 = list(map(lambda x: x * x, range(1, 4)))

print(L2)

# 结果为

[1, 4, 9, 16]

reduce

reduce(func, *sequence),reduce 函数可以将函数 func 迭代调用。

示例:

from functools import reduce

# 相当于 ((1*2)*3)

L2 = reduce(lambda x, y: x * y, range(1, 4))

print(L2)

# 结果为

6

filter

filter(func,*Iterable),filter 函数通过将可迭代对象当做参数传递给 func 函数,并返回 func 函数中返回结果为 True 的值。

示例:

# 相当于 g = [x for x in range(10) if x < 3]

L2 = list(filter(lambda x: x < 3, range(10)))

print(L2)

# 结果为

[0, 1, 2]

18.is 和 == 的区别

a is b 比较的是 a 和 b 的「id」是否相同

a == b 比较的是 a 和 b 的「值」是否相同

19.range 和 xrange 的区别

对于现如今的 Python 3.x,这个问题其实已经没有什么意义了,由于其在各大面经中都出现过,这里简单解释下。在 Python 2.x 中,range和xrange最大的区别就是xrange生成的不是一个list,而是一个生成器,这两者的区别在问题 13 已经讲过,这里不在赘述。

Python 3.x 中已经移除了range()方法,并将xrange()方法更名为range()。

20.新式类和旧式类的区别

新式类和旧式类的变化主要讲的是 Python 中类的「继承」问题。

旧式类中,类的继承按照「从左往右,深度优先遍历」的原则。

新式类中,类的继承按照「C3 算法」的原则:如果子类在继承来自不同父类的方法是不一样的时候,会从下而上,先左后右的合并继承方法。如果有一样的方法,则会继承第一个方法然后舍弃另一个相同的方法,接着合并其他不同的方法。解决了旧式类继承中存在的二义性和单调性。

示例:

# 新式类

class B:

def __init__(self,name):

self.name = name

def get_name(self):

return 'B'

class C:

def __init__(self,name):

self.name = name

def get_name(self):

return 'C'

class BC(B, C):

pass

b = B('B')

c = C('C')

bc = BC('C')

print(bc.name)

name = bc.get_name()

print(name)

# 查看 c 在搜索方法时的先后顺序

print(bc.__mro__)

# 结果为

C

B

(, , , )

另外,新式类相对于旧式类还多了这么些变化。

__slot__:限制实例属性的设置范围。

__getattrbute__:获取实例属性值。

type与__class__:返回类型统一。

至此,有关 Python 知识点的面试题就已告一段落,下次更新数据库(MySQL,Redis)方面面试题。

所有内容均已上传至「GitHub」仓库,欢迎大家点击原文查阅。

欢迎大家关注个人微信公众号「PythonDeveloper」,所有内容第一时间更新于公众号。

所有内容均为本人一点一点敲出来的,难免会有错字、语句不通顺的地方,欢迎大家指正。

所有示例均已在 Python 3.5 环境下测试通过,如有出错地方,还请检查自身 Python 版本。

因本人水平有限,文章内容难免会有出错,欢迎大家评论指出,一起进步。

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

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

相关文章

Exploiting Vector Fields for Geometric Rectification of Distorted Document Images学习笔记

1 广告 [1] Exploiting Vector Fields for Geometric Rectification of Distorted Document Images 利用矢量场对变形文档图像进行几何校正。 2018年发表在ECCV会议上的一篇非深度学习的文档去扭曲。 本文提出了一种对手持相机捕获的扭曲文档图像进行几何校正的无分段方法。…

java 单元测试_在springboot中写单元测试解决依赖注入和执行后事务回滚问题

往期文章「Java并发编程」谈谈Java中的内存模型JMM面试官&#xff1a;说说你知道多少种线程池拒绝策略为什么不要在MySQL中使用UTF-8编码方式前言很多公司都有写单元测试的硬性要求&#xff0c;在提交代码的时候&#xff0c;如果单测通不过或者说单元测试各种覆盖率不达标&…

java编译_解析 Java 即时编译器原理。

↑ 点击上面 “时代Java”关注我们&#xff0c;关注新技术&#xff0c;学习新知识&#xff01;一、导读常见的编译型语言如C&#xff0c;通常会把代码直接编译成CPU所能理解的机器码来运行。而Java为了实现“一次编译&#xff0c;处处运行”的特性&#xff0c;把编译的过程分成…

ios nsstring根据ascii码大小排序_iOS(NSPredicate) 谓词的使用

参考iOS-谓词的使用详解NSPredicate 谓词NSPredicateA definition of logical conditions used to constrain a search either for a fetch or for in-memory filtering.一种逻辑条件的定义&#xff0c;可以根据定义的模糊查询条件&#xff0c;对内存对象进行过滤搜索。1.比较运…

恒位油杯故障原因_抽油烟机常见故障及处理方法

您知道抽油烟机常见故障及处理方法是什么吗&#xff1f;抽油烟机通电后不能启动&#xff0c;可能是因为电源线断路或接头脱焊&#xff0c;仔细查出断路点或脱焊点&#xff0c;重新焊牢。通断开关断路或触点接触不良&#xff0c;检查断路器处是否焊好&#xff0c;若触点接触不良…

会议容易中吗_在装配式建筑中重要又容易被忽视的部分,你中招了吗?

装配式 建筑装配式建筑大家应该都有听过&#xff0c;那么这种建筑又是怎样构成的呢&#xff1f;装配式建筑概览▲▲▲装配式建筑粘结方案▲▲▲密封胶作为装配式建筑中的重要材料&#xff0c;起到不可忽视的作用~SMP密封胶&#xff0c;1978年开始生产&#xff0c;最初是针对硅酮…

Document image dewarping using text-lines and line Segments学习笔记

1 核心思想 论文:Robust Document Image Dewarping Method Using Text-Lines and Line Segments 论文:Document Dewarping via Text-line based Optimization 代码:https://github.com/taeho-kil/Document-Image-Dewarping 传统的基于文本行的文档去扭曲方法在处理复杂布局…

官网mysql安装目录_官网下载MySQL 并安装

官网下载MySQL 并安装一、下载二、安装&#xff1a;这里不再叙述安装步骤三、MySQL环境变量配置不是必须的。MySQL环境变量作用&#xff1a;找到MySQL安装目录下的bin目录&#xff0c;才能使用MySQL相关命令。配置环境变量后就不必找到bin目录了。说到这里解释一下Java &#x…

ai二维码插件_送你60款AI脚本插件包,已整合成插件面板的形式,方便在AI中调用...

送你60款AI脚本插件包&#xff0c;已整合成插件面板的形式&#xff0c;方便在AI中调用。(领取方式见文章末尾)【AI脚本插件合集包】此AI插件包目前有66款ai脚本插件&#xff0c;已经整合成插件面板的形式&#xff0c;方便在AI中调用。软件内置刀模线绘制、二维码生成、条码制作…

ai圆角插件_【干货满满】AI软件技巧排版所需

今天给大家来一期关于AI软件的技巧&#xff0c;在画图的速度上能有所提升。下面是软件技巧。#1、在ai中&#xff0c;如何让文件背景是透明的&#xff1f;答&#xff1a;ctrl shift d2、在ai中&#xff0c;如何像快速放大缩小编辑区域&#xff1f;答&#xff1a;按住alt滚动鼠标…

字体垂直居中_海报设计技巧!垂直轴式

文/杨启梅 垂直轴式海报是比较常见的一种海报版式&#xff0c;该版式具有稳重、平和的特点&#xff0c;但是若不注重图文设计的技巧&#xff0c;则容易让该类版式海报落入呆板的窠臼。该文从垂直轴在版面中的位置、文字的易读性和美观性、抽象元素的添加三个方面&#xff0c;讲…

mysql cmd 实时监控_MySQL实时监控工具orztop的使用介绍

前言orztop是一款实时show full processlist的工具&#xff0c;我们可以实时看到数据库有哪些线程&#xff0c;执行哪些语句等。工具使用方便简单。解决了我们需要手动刷新show full processlist的痛苦。该工具为朱旭开发的一款可以查看mysql数据库实时运行的sql状况的工具&…

yii2 mysql update_yii2 + mysql 常用增删改查操作语法以及事务

关于数据库mysql的使用&#xff1a; 1.查询&#xff1a; Salesorderitem::find()-asArray()-where([order_id$order_id])-all()&#xff1b;Salesorderitem::find()-asArray()-where([order_id$order_id])-one()&#xff1b;Quote::findOne([customer_id $customer_id]); 2.插…

mysql 按日期拆分成多条记录_mysql性能优化2 设计规范 设计原则 结构优化 拆分 配置优化...

一、MYSQL数据库设计规范1、数据库命名规范a、采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线’_组成;b、命名简洁明确(长度不能超过30个字符);c、例如&#xff1a;user, stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀;d、除非是备份数…

python添加环境变量_windows系统下python学习-1 (python环境变量配置)

python安装完成后检测一下是否添加了环境变量&#xff08;基于你已经完成了python的安装&#xff09;使用 WindowsR 键调出运行窗口,输入 cmd 按回车调出命令提示符窗口&#xff0c;输入 python 回车已添加环境变量如果你回车后出现上图效果&#xff0c;可以进入python编程界面…

c 子类对象 访问父类对象受保护成员_java面向对象总结

前言&#xff1a;文章参考《java疯狂讲义》进行总结和归纳&#xff0c;知识要进行输出才算真正的有用。在java的世界里&#xff0c;一切皆为对象&#xff0c;类是对对象的抽象&#xff0c;来一个例子&#xff1a;Person类public 有了类&#xff0c;就可以创建者个类的对象了&am…

多次执行sql 后卡住_解Bug之路记一次中间件导致的慢SQL排查过程

解Bug之路-记一次中间件导致的慢SQL排查过程前言最近发现线上出现一个奇葩的问题&#xff0c;这问题让笔者定位了好长时间&#xff0c;期间排查问题的过程还是挺有意思的&#xff0c;就以此为素材写出了本篇文章。Bug现场我们的分库分表中间件在经过一年的沉淀之后&#xff0c;…

c++思维导图_40+张最全Linux/C/C++思维导图,你确定不收藏?

ID&#xff1a;技术让梦想更伟大整理:李肖遥申明&#xff1a;所有图片都源自网络素材&#xff0c;侵删。这是我自己收集的&#xff0c;并花大量时间整理的可说最全的Linux/C/C思维导图。有些图可能不是高清&#xff0c;但是放大即可看清楚。linux思维导图认识LinuxLinux学习路径…

fortran安装_如何在 CentOS 8 上安装 GCC

本文最先发布在&#xff1a;如何在 CentOS 8 上安装 GCC​www.itcoder.techGNU 编译器集合是一系列用于语言开发的编译器和库的集合&#xff0c;包括: C, C, Objective-C, Fortran, Ada, Go, and D等编程语言。很多开源项目&#xff0c;包括 Linux kernel 和 GNU 工具&#xff…

seata 如何开启tcc事物_分布式事务Seata-TCC源码分析

为了更好理解分布式事务&#xff0c;首先提出一个问题&#xff1a;假设数据库中有两个表ta&#xff0c;tb&#xff0c;我们要分别更改ta表中的ra记录和tb表中的rb记录&#xff0c;但要求ra和rb记录都修改成功&#xff0c;才认为此次操作时成功&#xff0c;或者需要失败回滚。针…