Python面试的50个经典问答(上)

1)什么是Python?使用Python有什么好处?

Python是一种具有对象,模块,线程,异常和自动内存管理的编程语言。

python的有点是简单,易用,可移植,可扩展,内置数据结构,并且是开源的。

2)什么是PEP 8?

PEP 8是一个编码约定,是一组建议,内容是如何编写更具可读性的Python代码。

3)什么是pickling和unpickling?

为了让用户在平常的编程和测试时保存复杂的数据类型,python提供了标准模块,称为pickle.这个模块可以将几乎任何的python对象转换为字符串表示,这个过程称为pickling.而要从里面重新构造回原来的对象,则称为unpickling。在pickling和unpicking之间,表示这些对象的字符串表示,可以存于一个文件,也可以通过网络远程机器间传输。

4)如何理解Python是解释型语言?

Python语言是一种解释性语言。Python程序直接从源代码运行。由源代码转换为中间语言,中间语言被翻译为可执行的机器语言。

5)如何在Python中管理内存?

Python内存由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆空间中。程序员无法访问这个私有堆空间,解释器负责处理这个Python私有堆空间。

Python内存管理器的Python堆空间的分配,核心API允许程序员使用一些工具来编写代码。

Python还拥有一个内置的grabage收集器,它回收所有未使用的内存,并释放内存并使其可用到堆空间。

6)有哪些工具可以发现编码错误或执行静态分析?

PyChecker是一个静态分析工具,可以检测Python源代码中的错误并警告该错误的样式和复杂性。Pylint是另一个验证模块是否符合编码标准的工具。

7)什么是Python装饰器?

是对函数的一种包装。它能使函数的功能得到扩充,而同时不用修改函数本身的代码。能够增加函数执行前、执行后的行为,而不需对调用函数的代码做任何改变。

8)list和tuple有什么区别?

列表和元组之间的区别在于,列表是可变的,而元组则不是。例如,可以将元组作为字典的键进行哈希处理。

9)参数如何通过值或引用传递?

Python中的所有内容都是一个对象,所有变量都包含对该对象的引用。参考值根据功能而定;因此无法更改引用的值。但是,如果对象是可变的,则可以更改。

10)什么是Dict和列表解析?

它们是语法构造,可简化基于现有可迭代对象的字典或列表的创建。

11)python提供了哪些内置类型?

可变内置类型:List、Sets、Dictionaries

不可变内置类型:Strings、Tuples、Numbers

12)Python中的名称空间是什么?

在Python中,引入的每个名称都有其生存的地方,可以被使用。这称为名称空间。这就像一个将变量名映射到放置的对象的盒子。每当搜索变量时,都会搜索此框以获取相应的对象。

13)什么是Python中的lambda?

它是一个单表达式匿名函数,通常用作内联函数。

14)为什么python中的lambda表单没有语句?

python中的lambda表单没有语句,因为它用于创建新的函数对象,然后在运行时返回这些函数对象。

15)Python中的pass是什么?

传递表示,无操作的Python语句,或者换句话说,它是复合语句中的占位符,该位置应留有空白,而无需在其中写任何内容。

16)在Python中,迭代器是什么?

在Python中,迭代器用于迭代一组元素,例如列表之类的容器。

17)Python中的unittest是什么?

Python中的单元测试框架称为unittest。它支持共享设置,自动化测试,关闭代码等。

18)在Python中切片是什么?

Slicing是一种在有序的对象类型中(数组,元组,字符串)节选某一段的语法。

19)Python中的generator是什么?

python generator是一个简单的创建iterator的途径,它是一个可以返回迭代器对象的函数。

20)Python中的docstring是什么?

Python文档字符串称为docstring,它是一种记录Python函数,模块和类的方式。

21)如何在Python中复制对象?

要在Python中复制对象,一般情况下,可以使用copy.copy()或copy.deepcopy()。这两个函数。

22)Python中的负索引是什么?

Python序列可以正负索引。对于正索引,0是第一个索引,1是第二个索引,依此类推。对于负索引,(-1)是最后一个索引,(-2)是倒数第二个索引,依此类推。

23)如何将数字转换为字符串?

可以使用内置函数str() 将数字转换为字符串。如果需要八进制或十六进制表示,可以使用函数oct()或hex()。

24)Xrange和range有什么区别?

range返回的是一个list对象,而xrange则不会直接生成一个list,而是每次调用返回其中的一个值,内存空间使用极少,因而性能非常好。

25)Python中的模块和封装是什么?

在Python中,模块是构建程序的方式。每个Python程序文件都是一个模块,该模块会导入其他模块,例如对象和属性。

Python程序的封装可以封装成一个包,一个包可以包含多个模块。

(0)

相关推荐