一、 Python 中有多少种运算符?
这类面试问题可以判断你的 Python 功底,可以举一些实例来回答这类问题。
在 Python 中我们有 7 中运算符:
算术运算符、关系 (比较) 运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符。
详解:
<1> 算术运算符:
算数运算符有:+、-、*、/、%(取余)、//(整除)、**(幂)
<2> 关系比较、赋值、逻辑运算符:
<3> 位运算符
<4> 成员运算符
<5> 身份运算符
二、解释一下 is 与 == 区别:
is
用于判断 两个变量 引用对象是否为同一个 ==
用于判断 引用变量的值 是否相等
Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。下面来看看具体区别在哪。
==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等。
is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。
三、python中pass语句的作用:
占位符主要作用就是占位,让代码整体完整。
拓展: 类似的 break 语句可以跳出循环。
continue 语句可以跳到下一轮循环。
四、 请解释 Python 中的闭包?
如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就是一个闭包。
五、能否解释一下 *args 和 **kwargs?
*args 用来将参数打包成tuple给函数体调用
**kwargs 打包关键字参数成dict给函数体调用
如果我们不知道将多少个参数传递给函数,比如当我们想传递一个列表或一个元组值时,就可以使用*args。
当我们不知道将会传入多少关键字参数时,使用**kwargs 会收集关键字参数。
六、解释 Python 中的 join() 和 split() 函数
join() 函数可以将指定的字符添加到字符串中。 ‘1,2,3,4,5’
split() 函数可以用指定的字符分割字符串 [‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
七、什么是猴子补丁?
(1)运行时动态替换模块的方法
(2)运行时动态增加模块的方法
八、什么是鸭子类型?
鸭子类型关注点在对象的行为,而不是类型。在 Python 和 Go 中都可以实现鸭子类型。
定义:如果走起路来像鸭子,叫起来也像鸭子,那么它就是鸭子(If it walks like a duck and quacks like a duck, it must be a duck)
鸭子类型是编程语言中动态类型语言中的一种设计风格,一个对象的特征不是由父类决定,而是通过对象的方法决定的。
九、Python 区分大小写吗?
Python的变量名是区分大小写的,例如:name和Name就是两个变量名,而非相同变量。
变量(variable)是学习python初始时,就会接触到的一个新的知识点,也是一个需要熟知的概念。python是一种动态类型语言,在赋值的执行中可以绑定不同类型的值,这个过程叫做变量赋值操作,赋值同时确定了变量类型。
十、当退出 Python 时是否释放所有内存分配?
答案是否定的。那些具有对象循环引用或者全局命名空间引用的变量,在 Python 退出是往往不会被释放
另外不会释放 C 库保留的部分内容。
如何在python中管理内存:
Python 用一个私有堆内存空间来放置所有对象和数据结构,我们无法访问它。由解释器来管理它。不过使用一些核心 API,我们可以访问一些 Python 内存管理工具控制内存分配。
循序渐进,厚积薄发,量变引起质变,加油!!!2019.11.29