python常见面试题

您所在的位置:网站首页 python中的异常类型有哪些 python常见面试题

python常见面试题

#python常见面试题| 来源: 网络整理| 查看: 265

Q1、Python有哪些特点和优点?

作为一门编程入门语言,Python主要有以下特点和优点:

可解释具有动态特性面向对象简明简单开源具有强大的社区支持 Q 2:深拷贝和浅拷贝之间的区别是什么?

答:深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。在Python中,我们使用函数deepcopy()执行深拷贝,导入模块copy。而浅拷贝则是将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。我们使用函数function()执行浅拷贝。

Q 3. 列表和元组之间的区别是?

答:二者的主要区别是列表是可变的,而元组是不可变的。

Q 4. 解释一下Python中的三元运算子

不像C++,我们在Python中没有,但我们有这个:

[on true] if [expression] else [on false]

如果表达式为True,就执行[on true]中的语句。否则,就执行[on false]中的语句。

Q 5. 在Python中如何实现多线程?

一个线程就是一个轻量级进程,多线程能让我们一次执行多个线程。我们都知道,Python是多线程语言,其内置有多线程工具包。

Python中的GIL(全局解释器锁)确保一次执行单个线程。一个线程保存GIL并在将其传递给下个线程之前执行一些操作,这会让我们产生并行运行的错觉。但实际上,只是线程在CPU上轮流运行。当然,所有的传递会增加程序执行的内存压力。

Q 6. 解释一下Python中的继承

当一个类继承自另一个类,它就被称为一个子类/派生类,继承自父类/基类/超类。它会继承/获取所有类成员(属性和方法)。

继承能让我们重新使用代码,也能更容易的创建和维护应用。Python支持如下种类的继承:

单继承:一个类继承自单个基类 多继承:一个类继承自多个基类 多级继承:一个类继承自单个基类,后者则继承自另一个基类 分层继承:多个类继承自单个基类 混合继承:两种或多种类型继承的混合

Q 7. 在Python中是如何管理内存的?

Python的内存管理 Python 有内存池机制,Pymalloc 机制,用于对内存的申请和释放管理。先来看一下为什么有内存池:

当创建大量消耗小内存的对象时,c 中频繁调用 new/malloc 会导致大量的内存碎片,致使效率降低。

内存池的概念就是预先在内存中申请一定数量的,大小相等的内存块留作备用,当有新的内存需求时,就先从内存池中分配内存给这个需求,不够了之后再申请新的内存。这样做最显著的优势就是能够减少内存碎片,提升效率。

查看源码,可以看到 Pymalloc 对于小的对象,Pymalloc 会在内存池中申请空间,一般是少于236kb,如果是大的对象,则直接调用 new/malloc 来申请新的内存空间。

有了内存的创建,那就需要回收,垃圾回收机制,也是 Python 面试当中必问的一个知识点,接下来看看垃圾回收机制是什么。

Q 8. 解释Python中的help()和dir()函数?

Help()函数是一个内置函数,用于查看函数或模块用途的详细说明

Q 9. 当退出Python时,是否释放全部内存?

答案是No。循环引用其它对象或引用自全局命名空间的对象的模块,在Python退出时并非完全释放。另外,也不会释放C库保留的内存部分。

Q 10. 请解释使用*args和**kwargs的含义?

当我们不知道向函数传递多少参数时,比如我们向传递一个列表或元组,我们就使用*args。

def func(*args): for i in args: print(i) func(3,2,1,4,7)

在我们不知道该传递多少关键字参数时,使用**kwargs来收集关键字参数。

def func(**kwargs): for i in kwargs: print(i,kwargs[i]) func(a=1,b=2,c=7)

 Q 11. 解释Python中的join()和split()函数?

Join()能让我们将指定字符添加至字符串中。

','.join('12345')

运行结果:‘1,2,3,4,5’

Split()能让我们用指定字符分割字符串。

'1,2,3,4,5'.split(',')

运行结果:[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]

Q 12. Python中的标识符长度能有多长?

在Python中,标识符可以是任意长度。此外,我们在命名标识符时还必须遵守以下规则:

只能以下划线或者 A-Z/a-z 中的字母开头

其余部分可以使用 A-Z/a-z/0-9

区分大小写

关键字不能作为标识符

Q 13. 怎么移除一个字符串中的前导空格? 

字符串中的前导空格就是出现在字符串中第一个非空格字符前的空格。我们使用方法Istrip()可以将它从字符串中移除。

'  Ayushi  '.lstrip()

结果:‘Ayushi  ’

可以看到,该字符串既有前导字符,也有后缀字符,调用Istrip()去除了前导空格。如果我们想去除后缀空格,就用rstrip()方法

Q 14. Python中的闭包是什么?

闭包就是外部函数中定义一个内部函数,内部函数引用外部函数中的变量,外部函数的返回值是内部函数

def A(x): def B(): print(x) return B A(7)() #第一次括号里面的值传给A函数,第二个括号里面的值传给B函数

结果:

7

Q 15. 元组的解封装是什么?

封装: mytuple=3,4,5 print(mytuple) (3, 4, 5) 这将 3,4,5 封装到元组 mytuple 中。 现在我们将这些值解封装到变量 x,y,z 中: x,y,z=mytuple x=3,y=4,z=5 Q 16. 什么是Python中的装饰器? python中一切皆对象,函数也可以当做参数传递装饰器是接受函数作为参数,添加功能后返回一个新函数的函数(类)python中通过@使用装饰器,语法糖

python装饰器详解_nudt_qxx的博客-CSDN博客_python装饰器

Q17. 为什么Python是动态语言

它是一类 在运行时可以改变其结构的语言 :例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。 

class Person(object): def __init__(self, name = None, age = None): self.name = name self.age = age P = Person("小明", "24") #添加一个属性 P.sex = "male"

Q18 yield 关键字的作用是什么?

yield关键字的作用



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3