面向初学者的 20 大 Python 面试问题和答案

151 阅读9分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 20 天,点击查看活动详情

1. 什么是 PEP 8,为什么有用?

PEP 是 Python Enhancement Proposal 的首字母缩写。它是一份官方设计文档,包含一组指定如何格式化 Python 代码的规则,并有助于实现最大的可读性。PEP 8 很有用,因为它记录了 Python 代码的所有样式指南。这是因为为 Python 开源社区做贡献需要您
严格遵守这些风格指南。

2. Python元组和列表有什么区别?

Python 列表和元组的区别如下:

元组

3. Python 中的作用域是什么?

Python 中的范围是 Python 代码所在的代码块。虽然名称空间唯一标识程序内的对象,但它们还包括一个范围,使我们能够在没有前缀的情况下使用它们的对象。在程序执行期间创建的范围的几个示例是:

全局作用域: 它指的是程序中最顶层的作用域。这些是自从它们在 Python 代码的主体中开始以来在整个代码执行过程中可用的全局变量。

局部作用域: 指当前函数内部可用的局部变量,只能在局部使用。

注意:本地作用域对象和变量可以通过诸如 . 之类的关键字与全局作用域对象同步global

4. 数组和列表有什么区别?

数组和列表

5. 在 Python 中是什么*args意思**kwargs

我们过去常常*args在 Python 函数中传递可变长度的非关键字参数。(*)默认情况下,我们应该在参数名称前使用星号来传递可变数量的参数。星号表示可变长度,args 是约定俗成的名称。您可以使用任何其他名称。

代码示例:

def addition(e, f, *args):
  add = e + f
  for num in args:
      add += num
  return add
print(addition(1, 2, 3, 4, 5))
-->
15

我们过去常常**kwargs在 Python 函数中传递可变数量的关键字参数。默认情况下,我们应该在参数名称前使用双星号 ( ) 来表示一个  kwargs 参数。

代码示例:

def forArguments(**kwargs):
  for key, value in kwargs.items():
      print(key + ": " + value)
forArguments(arg0 = "arg 00", arg1 = "arg 11", arg2 = "arg 22")
-->
arg0: arg 00
arg1: arg 11
arg2: arg 22

6. 什么是 lambda 函数?

lambda 函数基本上是一个内联匿名函数(即,没有名称定义),用一个可以接受多个参数的表达式表示。它用于在运行时创建函数对象。

然而,与普通函数不同的是,它们只计算并返回一个表达式。

此外,代替用于创建函数的传统def关键字,lambda 函数使用lambda关键字。我们通常使用 lambda 函数,其中仅在短期内需要函数。它们可以用作:

add_func = lambda x,b : x+b
print(add_func(3,5))
8

7. Python 是一种编程语言还是脚本语言?

Python 通常被认为是一种通用的编程语言,但我们也可以用它来编写脚本。脚本语言也是一种编程语言,用于在执行程序时自动执行涉及相似类型步骤的重复任务。Python 脚本语言的文件扩展名有不同的类型,例如.py, .pyc, .pyd, .pyo, .pyw, and .pyz.

8. 我们如何在 Python 中管理内存?

我们通过使用私有顶部空间的Python 内存管理器处理 Python 中的内存管理。这是因为所有 Python 对象和数据结构都位于私有堆中。由于我们作为程序员无权访问这个私有堆,因此 Python 解释器会处理这个问题。

此外,核心 API 还允许我们访问一些工具来进行编码。

Python 还包括一个内置的垃圾收集器,用于为私有堆空间回收未使用的内存。

堆空间

9. Python 中的关键字是什么?

Python 中的关键字是具有特殊含义的保留字。它们通常用于定义不同类型的变量。我们不能使用关键字代替变量或函数名称。

Python 中有35 个保留关键字:

关键字

Python关键字

0.什么是初始化

在 Python 中,init是一种方法或构造函数,用于在创建新对象或类的实例时自动分配内存。所有类都__init__包含该方法。

代码示例:

# A Sample class with init method
class Alibi:
    # init method or constructor
    def __init__(self, name):
        self.name = name

    # Sample Method
    def hello_hi(self):
        print('Hello, my name is', self.name)


# Creating different objects
p1 = Alibi('NIKE')
p2 = Alibi('PUMA')
p3 = Alibi('ADIDAS')

p1.hello_hi()
p2.hello_hi()
p3.hello_hi()
Hello, my name is NIKE
Hello, my name is PUMA
Hello, my name is ADIDAS

11. Python 中的类型转换是什么?

Python 中的类型转换是将一种数据类型更改为另一种数据类型的过程。例如:

  • dict(): 用于将顺序为 (key, value) 的元组转换为字典。
  • str():用于将整数转换为字符串。

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

Python 中的迭代器是一个对象,用于迭代数据结构(如列表、元组、字典和集合)中的有限数量的元素。迭代器允许我们遍历集合的所有元素并一次返回一个元素。

迭代器对象通过该方法初始化iter(),并使用该next()方法进行迭代。

代码示例:

print("List Iteration")
l = ["educative", "for", "learning"]
for i in l:
    print(i)
List Iteration
educative
for
learning

13. 你对 NumPy 了解多少?

NumPy 是 Numerical Python 的缩写。它是用于处理数组的最流行、开源、通用和强大的 Python 包之一。NumPy 自带几个高度优化的函数,具有高性能和强大的 n 维数组处理能力。

NumPy 可用于三角运算、代数和统计计算、科学计算等。

14. 什么是 Python 装饰器?

Python 中的装饰器是一种函数,允许用户在不修改其结构的情况下向现有对象添加新功能。 您通常在定义要装饰的函数之前调用装饰器。

15.range工作原理是什么?

在 Python 中,range()返回一个不可变的数字序列。它通常用于创建for循环。它有几个变体。为了更好地理解,让我们来看几个例子:

# Prints a list of numbers from 0 to 9
# Note: by default the list starts from 0 and default step is of size 1
print(list(range(10)))

# Prints a list of numbers from 5 to 8
# step is not provided hence it is 1 by default
print(list(range(5, 9)))

# Prints a list of numbers from 2 to 20
# with a step of size 2
print(list(range(2, 21, 2)))

# Using range to create a for loop
for i in range(10):
  print("Looping =", i)
-->
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 6, 7, 8]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
Looping = 0
Looping = 1
Looping = 2
Looping = 3
Looping = 4
Looping = 5
Looping = 6
Looping = 7
Looping = 8
Looping = 9

16.什么是Python模块?

Python 模块是包含要在程序中使用的 Python 定义和语句的文件。模块可以定义函数、类和变量。通过保存扩展名为 的文件创建 Python 模块。.py.此文件包含可在代码中以及跨模块重用的类和函数。它们还可以包含可运行代码。
Python 模块的优点包括:

代码组织: 代码更容易理解和使用。
代码可重用性: 其他模块可以重用模块中使用的功能,从而消除了重复的需要。

17、什么是pickling和unpickling?

Pickling是 Python 中的一个过程,其中对象层次结构被转换为字节流。相反, Unpickling与酸洗相反。当字节流转换回对象层次结构时会发生这种情况。腌制也称为“序列化”或“编组”。

Pickling 使用 Python 中的 pickle 模块。pickle.dump()该模块具有将 Python 对象转储到磁盘以实现 pickling 的方法。Unpickling 使用该方法pickle.load()将数据检索为 Python 对象。

酸洗

18. Python 中的文档字符串是什么?

文档字符串或文档字符串是用于记录特定代码段(如 Python 模块、函数和类)的多行字符串。

它们帮助我们理解函数、类、模块或方法的作用,而无需阅读实现的细节。与传统的代码注释不同,文档字符串描述的是函数的作用,而不是它的工作原理。

我们将 docstring 写在三个双引号中,(""")如下例所示。

将两个整数相加:

def add(a, b):
    """
    Add up two integer numbers.

    This function simply wraps the ``+`` operator, and does not
    do anything else.

    Examples
    --------
    >>> add(2, 2)
    4
    """
    return a + b

我们可以使用以下方法访问文档字符串:

  • __doc__对象的方法
  • 内置帮助功能

19. 什么是 PYTHONPATH?

它是导入模块时使用的唯一环境变量。PYTHONPATH 充当 Python 解释器的指南,以确定在给定时间加载哪个模块。它用于检查各种目录中是否存在导入的模块。

启动 Python 解释器会在当前工作目录中打开 PYTHONPATH。

20.什么是Python包?

Python 包是模块的集合。相互关联的模块通常分组在同一个包中。当您在程序中需要来自外部包的模块时,可以导入它,然后根据需要使用它的特定模块。包有助于避免模块名称之间的冲突。您需要将包名称添加为模块名称的前缀,并用点连接以导入任何模块或其内容。

Python 面试准备的后续实用步骤

因为面试通常是找工作中压力最大的部分,所以进行深入的准备和充分的练习将帮助您获得信心并成功应对。

通过练习上述问题,您可以熟悉常见的 Python 概念。下一个实际步骤应该包括练习这些问题以及编码示例。通过充分的练习,您将在面试中脱颖而出,离梦想的工作更近一步!

在 Educative,我们的目标是通过为您提供动手实践的互动学习平台,使面试过程更加顺畅。您可以通过我们的综合课程和 Python 教程了解有关 Python 的更多信息,包括数据结构、内置函数、Web 开发、运行时、编译器、Python 库、数据科学、Python 机器学习等。通过浏览器内的实时编码环境与材料互动,解决您的知识空白,以帮助积极保留和应用您需要学习的内容。