面试 | Python热门面试题·基础篇

Python简介

Python 由 Guido van Rossum 开发,于 1991 年 2 月 20 日首次发布。它是最广泛使用和最受欢迎的编程语言之一,本质上是解释性的,因此在合并动态语义方面提供了灵活性。它也是一种免费的开源语言,语法非常简单干净。这使开发人员可以轻松Python,Python还支持面向对象编程,最常用于执行通用编程。

由于其简单的特性以及能够用更少的代码行实现多种功能,Python 的受欢迎程度正在急剧上升。由于 Python 能够使用强大的库支持强大的计算,因此它还用于机器学习、人工智能、Web 开发、Web 抓取和其他各种领域。因此,印度和世界各地对 Python 开发人员的需求巨大。公司愿意为这些开发人员提供惊人的福利和好处。

本文梳理了最为常见的 Python 面试问题及其答案。这些内容将助力你在众多求职者中脱颖而出,成功斩获令人艳羡的工作机会。

热门面试题

1.什么是__init__?

init是 Python 中的构造函数方法,在创建新对象/实例时会自动调用该方法来分配内存。所有类都具有与之关联的__init__方法。它有助于将类的方法和属性与局部变量区分开来。

# class definition
class Student:
    def init(self, fname, lname, age, section):
       self.firstname = fname
       self.lastname = lname
       self.age = age
       self.section = section# creating a new object
stu1 = Student("Sara", "Ansh", 22, "A2")

2.Python中常见的内置数据类型有哪些?

Python中有几种内置数据类型,尽管 Python 不需要在变量声明期间明确定义数据类型,但如果忽略数据类型的知识及其相互兼容性,则可能会发生类型错误。Python 提供type()isinstance()函数来检查这些变量的类型。这些数据类型可以分为以下几类:

  • None 类型None关键字在 Python 中表示空值。可以使用这些 NoneType 对象执行布尔相等运算。
  • 数字类型 有三种不同的数字类型 -整数、浮点数复数。此外,布尔值是整数的子类型。

注意:标准库还包括用于存储有理数的分数和用于存储具有用户定义精度的浮点数的小数

  • 序列类型 根据 Python 文档,有三种基本序列类型 -列表、元组范围对象。序列类型定义了inandnot in运算符来遍历其元素。这些运算符与比较运算具有相同的优先级。

注意:标准库还包括其他可供处理的类型: 1.二进制数据,例如bytearray bytesmemoryview、 和 2.文本字符串,例如str

  • 映射类型:

映射对象可以将可哈希值映射到 Python 中的随机对象。映射对象是可变的,目前只有一种标准映射类型,即字典

  • 集合类型 目前。Python 有两种内置集合类型 - setfrostyset。set类型是可变的,并支持add()和等方法remove()。frozenset类型是不可变的,在创建后无法修改。

注意:set是可变的,因此不能用作字典的键。另一方面,frozenset是不可变的,因此是可哈希的,可以用作字典的键或另一个集合的元素。

3.Python 中的全局、受保护和私有属性是什么?

  • 全局变量是在全局范围内定义的公共变量。要在函数内部使用全局范围内的变量,我们使用关键字global
  • 受保护的属性是在其标识符前加下划线的属性,例如 _sara。它们仍然可以从定义它们的类的外部访问和修改,但负责任的开发人员应避免这样做。
  • 私有属性是标识符前面带有双下划线的属性,例如 __ansh。它们不能直接从外部访问或修改,如果进行此类尝试,将导致 AttributeError

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

  • Python 中的数组只能包含相同数据类型的元素,即数组的数据类型应该是同质的。它是 C 语言数组的薄包装,消耗的内存比列表少得多。
  • Python 中的列表可以包含不同类型的元素,即列表的数据类型可以是异构的。它的缺点是占用大量内存。
import array
a = array.array('i', [1, 2, 3])
for i in a:
    print(i, end=' ')    #OUTPUT: 1 2 3
a = array.array('i', [1, 2, 'string'])    #OUTPUT: TypeError: an integer is required (got type str)
a = [1, 2, 'string']
for i in a:print(i, end=' ')    #OUTPUT: 1 2 string

5.Python 中的切片是什么?

  • 顾名思义,“切片”就是取其一部分。
  • 切片的语法是[start:stop:step],start是列表或元组的切片起始索引,stop是结束索引或者停止的位置,step是要跳的步数。
  • 开始的默认值为0,停止为项目数,步长为 1。
  • 可以对字符串、数组、列表元组进行切片。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(numbers[1 : : 2])  #output : [2, 4, 6, 8, 10]

6.Python 中的 break、continue 和 pass 是什么?

break:break 语句立即终止循环并且控制流至循环体之后的语句。

continue:continue 语句终止语句的当前迭代,跳过当前迭代中的其余代码,并且控制流到循环的下一次迭代。

pass:如上所述,Python 中的 pass 关键字一般用于填充空块,类似于 Java、C++、Javascript 等语言中用分号表示的空语句。

7.Python 中 self 有什么用途?

Self用于表示类的实例。使用此关键字,您可以访问 Python 中类的属性和方法。它将属性与给定的参数绑定在一起。self 在不同的地方使用,通常被认为是一个关键字。但与 C++ 不同,self 在 Python 中不是关键字。

8.Python 中的全局、受保护和私有属性是什么?

  • 全局变量是在全局范围内定义的公共变量。要在函数内部使用全局范围内的变量,我们使用global关键字。
  • 受保护的属性是在其标识符前加下划线的属性,例如 _sara。它们仍然可以从定义它们的类的外部访问和修改,但负责任的开发人员应避免这样做。
  • 私有属性是标识符前面带有双下划线的属性,例如 __ansh。它们不能直接从外部访问或修改,如果进行此类尝试,将导致 AttributeError。

9.Python 中的模块和包是什么?

Python 包和 Python 模块是允许在 Python 中进行模块化编程的两种机制。模块化有几个优点 -

  • 简单性:使用单个模块可以帮助您集中精力解决手头问题的一小部分。这使得开发更容易,也更不容易出错。
  • 可维护性:模块旨在强制不同问题域之间的逻辑边界。如果以减少相互依赖的方式编写模块,则模块中的修改不太可能影响程序的其他部分。
  • 可重用性:模块中定义的函数可以轻松地被应用程序的其他部分重用。
  • 范围:模块通常定义一个单独的命名空间,这有助于避免与程序其他部分的标识符混淆。

模块通常只是带有 .py 扩展名的 Python 文件,可以定义和实现一组函数、类或变量。可以使用import语句导入并初始化它们一次。如果需要部分功能,请使用 导入所需的类或函数from foo import bar

允许使用点符号对模块命名空间进行分层结构化。模块有助于避免全局变量名称之间的冲突,类似地,有助于避免模块名称之间的冲突。 创建包很容易,因为它利用了系统固有的文件结构。因此,只需将模块塞入文件夹中,即可获得文件夹名称作为包名称。从此包导入模块或其内容需要将包名称作为模块名称的前缀,并以点连接。

注意:从技术上讲,您也可以导入该包,但遗憾的是,它不会将包内的模块导入到本地命名空间,因此实际上毫无用处。

10.什么是列表和元组? 两者之间的主要区别是什么?

列表元组都是序列数据类型,可以在 Python 中存储对象集合。 两个序列中存储的对象可以具有不同的数据类型。 列表用方括号 表示,而元组用圆括号['sara', 6, 0.19]表示。但两者之间的真正区别是什么? 两者之间的关键区别在于,虽然列表是可变的,但元组不可变对象。 这意味着列表可以随时修改、附加或切片,但元组保持不变,不能以任何方式修改。 您可以在 Python IDLE 上运行以下示例来确认差异: ('ansh', 5, 0.97)

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

Python 中的每个对象都在一个范围内起作用。范围是 Python 中的对象在其中保持相关性的代码块。命名空间唯一地标识程序内的所有对象。但是,这些命名空间还定义了一个范围,您可以在其中使用它们的对象而无需任何前缀。以下是在 Python 代码执行期间创建的范围的一些示例:

  • 局部作用域指的是当前函数中可用的局部对象。
  • 全局范围是指自代码执行开始以来整个代码执行过程中可用的对象。
  • 模块级作用域是指程序中可访问的当前模块的全局对象。
  • 最外层的作用域指的是程序中可调用的所有内置名称。最后搜索此作用域中的对象以查找引用的名称。

注意:可以使用诸如global 之类的关键字将本地范围对象与全局范围对象同步。

12.什么是 PEP 8?为什么它很重要?

PEP 代表Python 增强提案。PEP 是一份官方设计文档,用于向 Python 社区提供信息,或描述 Python 或其流程的新功能。PEP 8尤其重要,因为它记录了 Python 代码的样式指南。显然,为 Python 开源社区做出贡献需要您真诚而严格地遵循这些样式指南。

13.什么是解释型语言?

解释型语言逐行执行语句。Python、Javascript、R、PHP 和 Ruby 等语言是解释型语言的典型示例。用解释型语言编写的程序直接从源代码运行,无需中间编译步骤。

14.什么是动态类型语言?

在了解动态类型语言之前,我们应该先了解一下什么是类型。类型是指编程语言中的类型检查。在强类型语言(例如 Python)中,“1” + 2将导致类型错误,因为这些语言不允许“类型强制”(数据类型的隐式转换)。另一方面,弱类型语言(例如 Javascript)将直接输出“12”作为结果。

类型检查可分两个阶段进行 -

  • 静态-执行之前检查数据类型。
  • 动态-执行期间检查数据类型。

Python 是一种解释型语言,逐行执行每个语句,因此在执行过程中会动态进行类型检查。因此,Python 是一种动态类型语言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qingmu2024

您的鼓励是我最大的创作动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值