📜  前 40 个Python面试问题和答案

📅  最后修改于: 2022-05-13 01:55:02.996000             🧑  作者: Mango

前 40 个Python面试问题和答案

Python是一种通用的高级编程语言。它是开发人员和程序员中最流行的语言,因为它可以用于机器学习、Web 开发、图像处理等。目前很多科技公司,如谷歌、亚马逊、Facebook 等,都在使用Python ,并雇佣了很多人们每年。我们准备了一份40 大Python面试问题及其答案的列表。

Top-40-Python-面试-问题-答案

1. 什么是Python?列出Python在技术领域的一些流行应用?

Python是一种广泛使用的通用高级编程语言。它由 Guido van Rossum 于 1991 年创建,并由Python软件基金会进一步开发。它的设计强调代码的可读性,其语法允许程序员用更少的代码行来表达他们的概念。
它用于:

  • 系统脚本
  • Web开发
  • 游戏开发
  • 软件开发
  • 复杂数学

2. 在当前场景下,使用Python语言作为工具有什么好处?

以下是使用Python语言的好处:

  • 面向对象语言
  • 高级语言
  • 动态类型语言
  • 广泛的支持库
  • 第三方模块的存在
  • 开源和社区发展
  • 便携和互动
  • 可跨操作系统移植

3. Python的 sort() 和 sorted() 函数使用哪种排序技术?

Python使用Tim Sort算法进行排序。这是一个稳定的排序,最坏的情况是 O(N log N)。它是一种混合排序算法,源自合并排序和插入排序,旨在在多种现实世界数据上表现良好。

4. List 和 Tuple 的区别?

下面我们来分析一下List和Tuple的区别:

列表

  • 列表是可变数据类型。
  • 列表消耗更多内存
  • 该列表更适合执行操作,例如插入和删除。
  • 迭代的含义是耗时的

元组

  • 元组是不可变数据类型。
  • 与列表相比,元组消耗更少的内存
  • 元组数据类型适合访问元素
  • 迭代的含义相对较快

要了解更多信息,请参阅文章:列表与元组

5. Python中的内存管理是如何进行的?
Python使用其私有堆空间来管理内存。基本上,所有的对象和数据结构都存储在私有堆空间中。即使是程序员也不能访问这个私有空间,因为解释器会处理这个空间。 Python还有一个内置的垃圾收集器,它回收所有未使用的内存并释放内存并使其可用于堆空间。

要了解更多信息,请参阅文章: Python中的内存管理

6. 什么是 PEP 8?

PEP 8 是Python风格指南。该文档提供了有关如何编写漂亮的Python代码的指南和最佳实践。它促进了一种非常易读和赏心悦目的编码风格。

要了解更多信息,请参阅文章:PEP 8 编码风格

7. Python是编译语言还是解释语言?

实际上, Python是一种部分编译的语言和部分解释的语言。当我们执行代码时首先完成编译部分,这将生成字节码,并且在内部这个字节码由Python虚拟机(pvm)根据底层平台(机器+操作系统)进行转换。

要了解更多信息,请参阅文章: Python – 编译还是解释?

8. 如何使用Python删除文件?

我们可以通过以下方法使用Python删除文件:

  • os.remove()
  • os.unlink()

9. 什么是装饰器?

装饰器是Python中一个非常强大且有用的工具,因为它们是我们在Python语法中进行的特定更改以轻松更改函数。

要了解更多信息,请参阅文章: Python中的装饰器

10. Mutable 数据类型和 Immutable 数据类型有什么区别?

可变数据类型可以编辑,即它们可以在运行时更改。例如 - 列表、字典等。
不可变数据类型不能被编辑,即它们不能在运行时改变。例如——字符串、元组等。

11. Set和Dictionary有什么区别?

Set 是数据类型的无序集合,它是可迭代的、可变的并且没有重复元素。
Python中的字典是数据值的无序集合,用于像地图一样存储数据值。

要了解更多信息,请参阅文章:集合和字典

12. 如何调试Python程序?

通过使用这个命令,我们可以调试一个Python程序:

$ python -m pdb python-script.py

13. 什么是酸洗和解酸?

Pickle 模块接受任何Python对象并将其转换为字符串表示形式并使用转储函数将其转储到文件中,这个过程称为酸洗。而从存储的字符串表示中检索原始Python对象的过程称为 unpickling。

要了解更多信息,请参阅文章: Python中的 Pickle 模块

14. Python中参数是如何通过值或引用传递的?
Python中的一切都是对象,所有变量都包含对对象的引用。参考值根据功能而定;因此,您无法更改引用的值。但是,如果对象是可变的,您可以更改它。

15. 什么是列表理解?举个例子。

列表理解是一种语法结构,可简化基于现有可迭代的列表的创建。

例如:

my_list = [i for i in range(1, 10)]

16. 什么是词典理解?举个例子

Dictionary Comprehension 是一种语法结构,用于简化基于现有可迭代的字典的创建。

例如: my_dict = {i:1+7 for i in range(1, 10)}

17. 元组理解吗?如果是,如何,如果不是,为什么?

(i for i in (1, 2, 3))

元组推导在Python中是不可能的,因为它最终会出现在生成器中,而不是元组推导。

18. Python中的命名空间是什么?

命名空间是一个命名系统,用于确保名称是唯一的以避免命名冲突。

要了解更多信息,请参阅文章: Python中的命名空间

19. 什么是 lambda函数?

lambda函数是一个匿名函数。这个函数可以有任意数量的参数,但只能有一个语句。例如:

a = lambda x, y : x*y
print(a(7, 19))

要了解更多信息,请参阅文章:Lambda 函数

20. Python中的 pass 是什么?

pass 表示不执行任何操作,或者换句话说,它是复合语句中的一个占位符,这里应该有一个空白,不需要写任何内容。

21. xrange 和 range函数有什么区别?

range() 和 xrange() 是两个函数,可用于在Python的 for 循环中迭代一定次数。在Python 3 中,没有 xrange,但 range函数的行为类似于Python 2 中的 xrange。

  • range() - 这将返回使用 range()函数创建的数字列表。
  • xrange() – 此函数返回生成器对象,该生成器对象只能通过循环来显示数字。唯一的特定范围是按需显示的,因此称为惰性评估

要了解更多信息,请参阅文章:Range vs Xrange

22. Python中的 / 和 // 有什么区别?

// 代表楼层除法,而 / 代表精确除法。例如:

5//2 = 2
5/2 = 2.5

23.什么是zip函数?

Python zip()函数返回一个 zip 对象,该对象映射多个容器的相似索引。它需要一个迭代器,转换为迭代器并根据传递的迭代器聚合元素。它返回一个元组的迭代器。

24. Python中的swapcase函数是什么?

它是一个字符串的函数,将所有大写字符转换为小写,反之亦然。它用于更改字符串的现有大小写。此方法创建包含交换案例中所有字符的字符串的副本。例如:

string = "GeeksforGeeks"
string.swapcase() ---> "gEEKSFORgEEKS"

25. Python中的迭代器是什么?

在Python中,迭代器用于迭代一组元素,如列表的容器。迭代器是项目的集合,它可以是列表、元组或字典。 Python迭代器实现了 __itr__ 和 next() 方法来迭代存储的元素。在Python中,我们通常使用循环来遍历集合(列表、元组)。

要了解更多信息,请参阅文章: Python中的迭代器

26. Python中的生成器是什么?

在Python中,生成器是一种指定如何实现迭代器的方法。它是一个普通函数,只是它在函数中产生表达式。它没有实现 __itr__ 和 next() 方法,也减少了其他开销。

如果一个函数至少包含一个 yield 语句,它就成为一个生成器。 yield 关键字通过保存其状态来暂停当前执行,然后在需要时从相同状态恢复。

要了解更多信息,请参阅文章: Python中的生成器

27. Python 3.8 版本增加了哪些新特性?

以下是Python 3.8 版本的新特性:

  • 仅位置参数(/)
  • 赋值表达式(:=)
  • f 字符串现在支持“=”
  • reversed() 与字典一起使用

      要了解更多信息,请参阅文章: Python 3.8 中的令人敬畏的特性

      28. Python中的猴子补丁是什么?

      在Python中,monkey patch 一词仅指在运行时对类或模块进行动态修改。

    # g.py
    class GeeksClass:
        def function(self):
            print "function()"
    
    import m
    def monkey_function(self):
        print "monkey_function()"
     
    m.GeeksClass.function = monkey_function
    obj = m.GeeksClass()
    obj.function()
    

    要了解更多信息,请参阅文章: Python中的猴子补丁

    29. Python是否支持多重继承?

    与Java不同, Python确实支持多重继承。多重继承意味着一个类可以从多个父类派生。

    30. 什么是Python中的多态性?

    多态性意味着采取多种形式的能力。因此,例如,如果父类有一个名为 ABC 的方法,那么子类也可以有一个同名 ABC 的方法,该方法有自己的参数和变量。 Python允许多态性。

    要了解更多信息,请参阅文章: Python中的多态性

    31. 在Python中定义封装?

    封装意味着将代码和数据绑定在一起。 Python类是封装的一个例子。

    要了解更多信息,请参阅文章: Python中的封装

    32. 你如何在Python中进行数据抽象?

    数据抽象仅提供所需的细节并将实施隐藏起来。它可以在Python中通过使用接口和抽象类来实现。

    要了解更多信息,请参阅文章: Python中的抽象

    33. Python支持哪些数据库?

    MySQL(结构化)和 MongoDB(非结构化)是Python原生支持的主要数据库。导入模块并开始使用函数与数据库交互。

    34. Python中的异常处理是如何完成的?

    有 3 个主要关键字,即 try、except 和 finally,它们用于捕获异常并相应地处理恢复机制。 Try 是监控错误的代码块。发生错误时执行 except 块。

    最后一个块的美妙之处在于在尝试错误后执行代码。无论是否发生错误,都会执行此块。 finally 块用于对对象/变量进行所需的清理活动。

    35. '#' 符号在Python中有什么作用?

    '#' 用于注释掉该行之后的所有内容。

    36. 编写代码显示当前时间?

    currenttime= time.localtime(time.time())
    print (“Current time is”, currenttime)
    

    37. 浅拷贝和深拷贝有什么区别?

    当创建新的实例类型并保留复制的值时使用浅拷贝,而深拷贝存储已经复制的值。

    浅拷贝具有更快的程序执行速度,而深拷贝使它变慢。

    要了解更多信息,请参阅文章:浅拷贝与深拷贝

    38. 什么是画中画?

    PIP 是Python Installer Package 的首字母缩写,它提供了一个无缝接口来安装各种Python模块。它是一个命令行工具,可以在 Internet 上搜索软件包并安装它们,而无需任何用户交互。

    要了解更多信息,请参阅文章: Python中的 PIP

    39. Python中的 __init__() 是什么?

    相当于 OOP 术语中的构造函数,__init__ 是Python类中的保留方法。每当启动新对象时,都会自动调用 __init__ 方法。此方法在创建新对象后立即为其分配内存。此方法也可用于初始化变量。

    40. 标识符的最大可能长度是多少?

    Python中的标识符可以是任意长度。