python编程a的x次方_「Python 面试」第四次更新
阅读本文大约需要 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 版本。
因本人水平有限,文章内容难免会有出错,欢迎大家评论指出,一起进步。
python编程a的x次方_「Python 面试」第四次更新相关推荐
- python中的与或非_「Python基础」 While 循环语句
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件: 执行语句-- 执行语句可以是单个语句或语句 ...
- python编程能有什么用_揭秘python都能做什么?
Python作为一种功能强大,并井且简单易学的编程语言而广受好评,那么Python都能做么?概据起来有以下几个方面. Wob开发使用Python的二个基本应用就是进行Web开发,在国内,大一些的使用P ...
- python编程求n的阶乘_使用Python编程的阶乘
python编程求n的阶乘 Before we start implementing factorial using Python, let us first discuss what factori ...
- 会python编程可以做什么工作_学Python编程到底能做什么工作?
学Python编程能做什么工作?随着人工智能发展,学习python语言的人员有更多的岗位机会,python从事的职业广泛,从游戏到AI人工智能能都可以用Python实现.除了编程,各种岗位的人都应该学 ...
- 树莓派python编程入门先学什么_树莓派Python编程入门与实战
树莓派Python编程入门与实战 编辑 锁定 讨论 上传视频 本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 树莓派是一个只有信用卡大小的裸露电路板,它也是一个运行开源Lin ...
- python编程题自动评分系统_用Python为你的「颜值评分」,看看人工智能为你打几分?...
今天我们分享的Python程序,是一款用深度学习来为颜值评分的应用,在科技飞速发展的当今社会,我们可以通过机器学习实现自动驾驶.识别字体等,甚至连谷歌研发的Alphago都可以向人类的围棋事业发出挑战 ...
- python input输入多个变量_「Python 秘籍」1.2 解压可迭代对象赋值给多个变量
问题 需要从某个可迭代对象中分解出 N 个元素,但是这个可迭代对象的长度可能超过 N,这会导致出现"需要解包的值过多(too many values to unpack)"的异常. ...
- python编程英语单词怎么写_用Python写一个背英文单词程序
小朋友学习英文时背单词总是很困扰的一个问题,Ashing老师用Python开发了这个简易的背英文单词程序,帮助小朋友练习单词.功能虽简单却都很实用,只需帮他们用excel建立好单词表. 目前建立的功能 ...
- python文件之间的相互调用_「Python 系列」 Python 生成器函数详解
Python的生成器函数提供了一种强大的机制来管理数据和计算资源,但是对于Python的新手来说,它们不一定直观.在本文中,我将分解生成器的机制,同时还介绍我希望是一个有启发性的示例:用于管理和流传输 ...
最新文章
- awk 控制语句(if for do while)
- CSS中expression使用简介(转载)
- linux 终端 含义,ubuntu终端中@前后的字符串含义及修改-布布扣-bubuko.com
- 线性回归损失函数为什么要用平方形式
- 深入浅出extjs第2版_LINGO实例教程第2版第2期上线
- 【Maven学习】Maven打包生成包含所有依赖的jar包
- 前端学习(3310):redux的state hook对象
- c#重命名文件 递归_文件结构、文件操作及压缩解压操作
- linux curl
- KVM之一:安装准备(基于CentOS6.7)
- Android 4.0 NDK Updated
- Cocos2d-x学习:vs2010使用vld检测内存泄露
- android 贴吧列表,Android仿百度贴吧客户端Loading小球
- PS 图片清晰度
- java机票编程_携程预订机票后台java开发编程
- QQ/微信里被禁止访问的网页怎么处理 如何检测域名是否被QQ/微信 屏蔽
- php 促成交易,促成交易的方法
- 软件测试人员面试技巧总结
- Swift语法学习--数组
- 常用校验方式以及优缺点(奇偶校验,CRC校验,校验和)
热门文章
- MFC中文件打开与保存
- opencv--图像金字塔
- JQuery 方法查询大全
- WEB三大攻击之—XSS攻击与防护
- dict keys 取最后一个_一步一步学Python3(小学生也适用) 第十三篇: 字典Dict类型
- checksum命令 linux_linux命令详解:md5sum命令
- python数字转字符串_python如何将字符转换为数字
- JAVA入门级教学之(Object类中的equals方法)
- python虚拟环境 pyenv_Python 虚拟环境 pyenv、venv(pyvenv)、virtualenv之间的区别
- 深度linux 转中文,Linux Deepin 中文Linux系统的新希望?