首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python面试必须要看15个问题

某些问题甚至涉及多个领域。 之前还没有出过和这些题目一样难面试题,如果你能轻松地回答出来的话,赶紧去找份工作吧! 问题1 到底什么是Python?...这就是为什么前两个元素是0和1了。 不明白的话就试着运行下面的代码吧: 问题7 “猴子补丁”(monkey patching)指的是什么?这种做法好吗?...问题8 这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?...args和kwargs这两个标识符是约定俗成用法,你当然还可以用*bob和**billy,但是这样就并不太妥。 下面是具体示例: 为什么提这个问题?...答对这道问题说明你理解了继承和Python中super函数用法。 问题11 阅读下面的代码,它输出结果是什么?

1.2K90

Python | 详解Python协程,为什么说它底层是生成器?

它和线程一样可以调度,但是不同是线程启动和调度需要通过操作系统来处理。并且线程启动和销毁需要涉及一些操作系统变量申请和销毁处理,需要时间比较长。...生成器(generator) 生成器我们也在之前文章当中介绍过,为什么我们介绍协程需要用到生成器呢,是因为Python协程底层就是通过生成器来实现。...yield这个语句,那么它就是一个普通Python函数。...比如我把刚刚写函数上加上注解之后再来执行这两个函数都会得到True: import asyncio @asyncio.coroutine def test(k): n = 0 while...建议大家可以先了解一下go语言当中协程概念和用法再来学习Python当中async用法,很多不明白地方清晰很多。

69210
您找到你想要的搜索结果了吗?
是的
没有找到

怎么理解面向对象?

最近有粉丝提问:面相对象这里听得晕头转向,根本听不明白什么个意思,大概知道了个class,但是在我看来定义一个类来执行程序和直接def一个函数没什么区别啊,也是可以重复使用,不明白为什么面相对象就要class...在 Python 中“类”和“类实例”都称为 对象 ( Object ),因为 Python 类是更顶级 type 实例化后对象,也就是常说Python 里万物皆对象”;而在 Java 等静态语言中...): >>> a.introduce_self() 是大强子 这里解释一下 Human 代码,虽然设定了每个人都要工作,但如何工作需要到具体到不同类型的人,所以在基类里我们并没有定义 work 方法内容...然后我们继续完成想法,需要给泥人增加两种性别,并且异性之间能结婚,我们开始在刚才泥人模型基础上(继承于基类),构思出两种性别的泥人区别(设置不同属性),然后让他们都可以工作,但工作内容不一样(调用相同方法出现不同结果...# 多态性使相同方法产生不同结果 ...

44630

python 面向对象

代表 即使不实例化,这个Dog类本身也是已经存在内存里对不对, yes, cool,那实例化时,产生什么化学反应呢? ? 根据上图我们得知,其实self,就是实例本身!...你实例化时python自动把这个实例本身通过self参数传进去。 你说好吧,假装懂了, 但下面这段代码你又不明白了, 为何sayhi(self),要写个self呢?...你拉着说你有些犹豫,怎么这样子?...为了暴露自己智商,此时你假装懂了,但又问, __init__(…)懂了,但后面的那几个函数,噢 不对,后面那几个方法 为什么也还需要self参数么?... 自动帮你转成 Role.buy_gun(r1,'B21') 执行结果 #Alex has just bought B21  依然没给self传值 ,但Python还是自动帮你把r1 赋值给self

56720

WTF Python:有趣且鲜为人知Python特性

虽然下面的有些例子并不一定会让你觉得 WTFs,但它们依然有可能告诉你一些你所不知道 Python 有趣特性。觉得这是一种学习编程语言内部原理好办法,而且相信你也从中获得乐趣!...Output (Python version): >>> 触发语句 出乎意料输出结果 (可选):对意外输出结果简短描述。 说明: 简要说明发生了什么以及为什么会发生。...阅读输出结果, 确认结果是否如你所料。 确认你是否知道这背后原理。 如果不知道, 深呼吸然后阅读说明 (如果你还是看不明白, 别沉默!...下面的例子可以很好说明这点, >>> [] == [] True >>> [] is [] # 这两个空列表位于不同内存地址....因此,所有的函数都是使用最后分配给变量值来进行计算。 可以通过将循环变量作为命名变量传递给函数来获得预期结果为什么这样可行?因为这会在函数内再次定义一个局部变量。

1.2K50

Python飞:50个有趣而又鲜为人知Python特性

虽然下面的有些例子并不一定会让你觉得 WTFs,但它们依然有可能告诉你一些你所不知道 Python 有趣特性。觉得这是一种学习编程语言内部原理好办法, 而且相信你也从中获得乐趣!.../Python, 可否带飞? * > goto, but why?/goto, 但为什么? * > Brace yourself!...Output (Python version): >>> 触发语句 出乎意料输出结果 (可选): 对意外输出结果简短描述。 说明: 简要说明发生了什么以及为什么会发生。...如果您是一位经验丰富 Python 程序员, 那么大多数时候您都能成功预期到后面的结果。 阅读输出结果, 如果不知道, 深呼吸然后阅读说明 (如果你还是看不明白, 别沉默!...可以通过将循环变量作为命名变量传递给函数来获得预期结果. 为什么这样可行? 因为这会在函数内再次定义一个局部变量。

73710

Python飞:50个有趣而又鲜为人知Python特性

虽然下面的有些例子并不一定会让你觉得 WTFs,但它们依然有可能告诉你一些你所不知道 Python 有趣特性。觉得这是一种学习编程语言内部原理好办法, 而且相信你也从中获得乐趣!.../Python, 可否带飞? * > goto, but why?/goto, 但为什么? * > Brace yourself!...Output (Python version): >>> 触发语句 出乎意料输出结果 (可选): 对意外输出结果简短描述。 说明: 简要说明发生了什么以及为什么会发生。...如果您是一位经验丰富 Python 程序员, 那么大多数时候您都能成功预期到后面的结果。 阅读输出结果, 如果不知道, 深呼吸然后阅读说明 (如果你还是看不明白, 别沉默!...可以通过将循环变量作为命名变量传递给函数来获得预期结果. 为什么这样可行? 因为这会在函数内再次定义一个局部变量。

61320

为什么递归函数返回None

问: 有一个调用自己函数: def get_input(): my_var = input('Enter "a" or "b": ') if my_var !...: Type "a" or "b": a got input: a 但是,如果输入别的东西,然后输入 "a" 或 "b",我会得到这样结果: Type "a" or "b": purple You...Type "a" or "b": a got input: None 不明白为什么 get_input() 函数返回是 None,因为它本应只返回 my_var。这个 None 是从哪里来?...该如何修复函数呢? 答: 它返回 None 是因为当你递归调用它时: if my_var != "a" and my_var !...因此,尽管递归确实发生了,但返回值却被丢弃了,然后你函数末尾退出。在函数末尾退出意味着 Python 隐式地返回 None,就像下面这样: >>> def f(x): ...

8710

Python 51 个秘密曝光,Github 获 2 万星

虽然下面的有些例子并不一定会让你觉得 WTFs, 但它们依然有可能告诉你一些你所不知道 Python 有趣特性. 觉得这是一种学习编程语言内部原理好办法, 而且相信你也从中获得乐趣!...如果您是一位经验丰富 Python 程序员, 那么大多数时候您都能成功预期到后面的结果. 阅读输出结果, 如果不知道, 深呼吸然后阅读说明 (如果你还是看不明白, 别沉默!...时候, Python 解释器创建一个新对象, 然后同时引用第二个变量(译: 仅适用于3.7以下, 详细情况请看这里). 如果你在不同行上进行赋值操作, 它就不会“知道”已经有一个 wtf!...hash(WTF()) == hash(WTF()) # 哈希值也应该不同 True >>> id(WTF()) == id(WTF()) True 说明: 当调用 id 函数时, Python 创建了一个...在对象被销毁之后, 或被创建之前, 其他对象可以具有相同id值. 那为什么 is 操作结果为 False 呢?

45720

python基础(5):深入理解 python赋值、引用、拷贝、作用域

>>> values = [0, 1, 2] >>> values[1] = values >>> values [0, [...], 2] 预想应当是  [0, [0, 1, 2], 2] 但结果却为何要赋值无限次...过程如图所示: 往更深处说,values[:] 复制操作是所谓「浅复制」(shallow copy),当列表对象有嵌套时候也产生出乎意料错误,比如 a = [0, [1, 2], 3] b ...因为 3k 中 exec 由语句变成函数了,而在函数中变量默认都是局部,也就是说 你所见到两个 a,是两个不同变量,分别处于不同命名空间中,而不会冲突。...在函数参数传递时候,Python其实就是把参数里传入变量对应对象引用依次赋值给对应函数内部变量。...5.3 为什么修改全局dict变量不用global关键字 为什么修改字典d值不用global关键字先声明呢?

1.4K70

深度辨析 Python eval() 与 exec()

compile() 也是个神奇函数翻译上一篇文章《Python骚操作:动态定义函数》就演示了一个动态定义函数操作。...至于为什么 locals() 取出结果有 y,为什么它不能代表真正局部命名空间?为什么局部命名空间无法被动态修改?...4、为什么要慎用 eval() ? 很多动态编程语言中都会有 eval() 函数,作用大同小异,但是,无一例外,人们告诉你说,避免使用它。 为什么要慎用 eval() 呢?...5、安全替代用法 既然有种种安全隐患,为什么要创造出这两个内置方法呢?为什么要使用它们呢? 理由很简单,因为 Python 是一门灵活动态语言。...与静态语言不同,动态语言支持动态地产生代码,对于已经部署好工程,也可以只做很小局部修改,就实现 bug 修复。 那有什么办法可以相对安全地使用它们呢?

62220

Pythonrandom是怎么回事?

今天马哥教育要跟大家分享文章是Pythonrandom是怎么回事?如何增加输出结果不确定性?...就是说,我们输入内容之后,至于输出什么,我们是不知道python入门新手和正在python学习小伙伴快来看一看吧,希望能够对大家有所帮助 ! 如何增加输出结果不确定性?...今天就来说说,如何用Python自带随机数模块,给我们小游戏增加不确定性。 引入模块方法: from 模块名 import 方法名 看不懂没关系,这东西以后我们反复用到。...我们课程,也才刚刚开始。如果你有不理解地方,有想要深入了解地方、有想要问一万个为什么地方,别着急,先一一记录下来,继续学习,这节课疑问,也许下节课就解决了呢?...现在想不明白,也许某一时刻就突然来了灵感,豁然开朗了呢?

95230

Python for死循环

根据之前东西,Java实现for死循环如下。 ? 同样逻辑,用到Python上也是非常简单,如图所示。 ? 但是这样写运行出来并不是一个死循环,结果如图所示。 ? 为什么会出现这样结果?...可能是因为for i in rangei和i = 0i不是同一个i,是不是同一个可以通过使用id这个内置函数查看内存地址就行。不要只知其然,还要知其所以然! ? 为什么会选择从300开始循环?...从结果中我们也非常容易看出来,因为地址不同,两个i并不是同一个i。...for死循环(不会爆内存) 自定义可迭代对象 之前讲过,要想让一个类实例化出来是一个可迭代对象,必须实现__iter__和__next__两个魔法方法,在这里完全可以对这两个方法动点手脚,实现无限迭代...这里使用内置模块sys里面的getsizeof函数来查看对象占用多少个字节,可以发现0和10^50这两个整数占用字节并不一样,总有一个无限大整数会把内存给爆掉,具体多少懒得算了。

9.8K20

python中return与yield区别详解

看做return之后再把它看做一个是生成器(generator)一部分(带yield函数才是真正迭代器),好了,如果你对这些不明白的话,那先把yield看做return,然后直接看下面的程序,你就会明白...,这个时候和上面那个差不多,不过不同是,这个时候是从刚才那个next程序停止地方开始执行,也就是要执行res赋值操作,这时候要注意,这个时候赋值操作右边是没有值(因为刚才那个是return出去了...函数例子,这个例子就把上面那个例子最后一行换掉了,输出结果: starting... 4 ******************** res: 7 4 先大致说一下send函数概念...:此时你应该注意到上面那个紫色字,还有上面那个res为什么是None,这个变成了7,到底为什么,这是因为,send是发送一个参数给res,因为上面讲到,return时候,并没有把4赋值给res...这就结束了,说一下,为什么用这个生成器,是因为如果用List的话,会占用更大空间,比如说取0,1,2,3,4,5,6…1000 你可能这样: for n in range(1000): a=n

73010

深度辨析 Python eval() 与 exec()

compile() 也是个神奇函数翻译上一篇文章《Python骚操作:动态定义函数》就演示了一个动态定义函数操作。...至于为什么 locals() 取出结果有 y,为什么它不能代表真正局部命名空间?为什么局部命名空间无法被动态修改?...4、为什么要慎用 eval() ? 很多动态编程语言中都会有 eval() 函数,作用大同小异,但是,无一例外,人们告诉你说,避免使用它。 为什么要慎用 eval() 呢?...5、安全替代用法 既然有种种安全隐患,为什么要创造出这两个内置方法呢?为什么要使用它们呢? 理由很简单,因为 Python 是一门灵活动态语言。...与静态语言不同,动态语言支持动态地产生代码,对于已经部署好工程,也可以只做很小局部修改,就实现 bug 修复。 那有什么办法可以相对安全地使用它们呢?

2.9K00

Python】教你一步步编写banner获取脚本

用“ip地址+协议+端口号”来唯一标识网络中一个进程,这就是socket 无论使用何种网络协议,最本质上都是在进行数据接收和发送,“发送”和“接收”这两个动作就是socket处理数据主要方式。...脚本运行结果如下,成功取得banner: ? 这样基础代码就完成了,关于socket模块详细使用方法,将在近期推出。接下来,我们一步一步来完善这个程序。...3、添加异常处理功能 为什么需要添加异常处理功能呢?? 程序运行过程中难免出现错误,当Python检测到错误时,解释器就无法继续执行下去,于是抛出相应信息,这些统称为异常信息。...修改代码如下: 4、函数封装 为了方便多次调用,将代码根据功能分成不同模块,改写代码如下: ?...Part.3 完结篇 全代码 好啦,到此我们代码就全部完成了,涉及了大量python基础知识,没看明白小伙伴,可以针对不明白函数在百度查询,可以轻松获取解答哦。 最后附上完整代码: ?

1.5K30

深度辨析 Python eval() 与 exec()

至于为什么 locals() 取出结果有 y,为什么它不能代表真正局部命名空间?为什么局部命名空间无法被动态修改?...4、为什么要慎用 eval() ? 很多动态编程语言中都会有 eval() 函数,作用大同小异,但是,无一例外,人们告诉你说,避免使用它。 为什么要慎用 eval() 呢?...5、安全替代用法 既然有种种安全隐患,为什么要创造出这两个内置方法呢?为什么要使用它们呢? 理由很简单,因为 Python 是一门灵活动态语言。...与静态语言不同,动态语言支持动态地产生代码,对于已经部署好工程,也可以只做很小局部修改,就实现 bug 修复。 那有什么办法可以相对安全地使用它们呢?...ast 模块 literal() 是 eval() 安全替代,与 eval() 不做检查就执行方式不同,ast.literal() 先检查表达式内容是否有效合法。

53850

【笨办法学Python】习题15读取文件

不同点是:当你说 txt.read 时,你意思其实是:“嘿 txt!执行你 read 命令,无需任何参数!”脚本剩下部分基本差不多,不过就把剩下分析作为加分习题留给你自己了。...你应该看到结果 脚本叫 “ex15_sample.txt”,以下是执行结果: $ python ex15.py ex15_sample.txt Here's your file 'ex15_sample.txt...比如搜索一下“python open”。 3. 使用了“命令”这个词,不过实际上它们名字是“函数(function)”和“方法(method)。上网搜索一下这两者意义和区别。...只是用 raw_input 写这个脚本,想想那种得到文件名称方法更好,以及为什么。 6. 运行 pydoc file 向下滚动直到看见 read() 命令(函数/方法)。...现在能告诉你是, sys 是一个代码库,这句话意思是从库里取出 argv 这个功能来,供 使用。后面你学到更多相关知识。

70230

强化学习开源项目:自己动手创建虚拟自动驾驶汽车

贝尔曼方程用于说明未来奖励,它通常是一系列导致积极结果动作。在Q学习函数(Q-Learning)中,我们使用这些奖励来更新可以告诉我们某个状态有好坏Q值。...强化学习与我们学习方式进行比较是: 我们采取行动产生正面或反面的后果。如果它是正面的,我们再次采取行动,反之亦然。就这么简单! 现在开始构建我们虚拟自动驾驶汽车,让我们来看看构建过程。...使用了一个名为Kivypython包来创建UI。 ? 我们从一张空地图开始。“汽车”目标是在地图左上角到右下角之间来回移动。 ? 但是,可以在地图上绘制“沙地”。...上面是更早之前生成图。这是当智能体视离目标的远近分别获得+0.1和-0.1奖励。如你所见,奖励在2000步之后稳定了,而不是这次1500步。这两个图平均需要10个不同训练周期。...不同神经网络架构(例如,层数,节点数,优化器,激活函数) 5.预测! 现在,我们优化模型。我们汽车可以无碰撞地进行自动驾驶! 在这里开发了RL驱动自动驾驶汽车基础架构。

2.2K20
领券