且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

100 个基本的 Python 面试问题第一部分(1-15)

更新时间:2022-05-11 16:16:27

Q-1:什么是 Python,使用它有什么好处,你对 PEP 8 有什么理解?


什么是 Python


Python 是最成功的解释型语言之一。当你编写 Python 脚本时,它不需要在执行前进行编译。很少有其他解释性语言是 PHP 和 Javascript。


Python 编程的好处


Python 是一种动态类型语言。这意味着你无需在声明时提及变量的数据类型。它允许设置变量,如 var1=101 和 var2 =“你是一名工程师” 没有任何错误。

Python 支持面向对象编程,因为你可以定义类以及组合和继承。它不使用公共或私有等访问说明符)。

Python 中的函数就像一等对象。它建议你可以将它们分配给变量,从其他方法返回并作为参数传递。

使用 Python 开发很快,但运行它通常比编译语言慢。幸运的是,Python 能够包含“C”语言扩展,因此你可以优化脚本。

Python 有多种用途,如基于 Web 的应用程序、测试自动化、数据建模、大数据分析等等。或者,你可以将其用作“glue”层来处理其他语言。

PEP 8


PEP 8 是最新的 Python 编码标准,一组编码建议。它指导提供更具可读性的 Python 代码。




Q-2:以下 Python 代码片段的输出是什么?证明你的答案。


def extendList(val, list=[]):
    list.append(val)
    return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')
print "list1 = %s" % list1
print "list2 = %s" % list2
print "list3 = %s" % list3


上述 Python 代码片段的结果是:


list1 = [10, 'a']

list2 = [123]

list3 = [10, 'a']


你可能错误地认为 list1 等于 [10] 并且 list3 与 [‘a’] 匹配,认为每次调用 extendList 时,list 参数都会初始化为其默认值 []。


但是,流程就像在定义函数后创建一个新列表一样。每当有人在没有列表参数的情况下调用 extendList 方法时,都会使用相同的方法。它是这样工作的,因为表达式的计算(在默认参数中)发生在函数定义时,而不是在调用期间。


因此, list1 和 list3 在同一个默认列表上运行,而 list2 在它自己创建的单独对象上运行(通过传递一个空列表作为 list 参数的值)。


可以通过以下方式更改 extendList 函数的定义。


def extendList(val, list=None):
  if list is None:
    list = []
  list.append(val)
  return list


有了这个修订后的实施,输出将是:


list1 = [10]

list2 = [123]

list3 = ['a']




Q-3:若程序不需要动作但语法需要,则可在 Python 中使用的语句是什么?


pass 语句是一个空操作。执行时什么也没有发生。你应该使用小写的“pass”关键字。如果你写“Pass”,你会遇到类似“NameError: name Pass is not defined”这样的错误。Python 语句区分大小写。


letter = "hai sethuraman"
for i in letter:
    if i == "a":
        pass
        print("pass statement is execute ..............")
    else:
        print(i)


Q-4:在 Python 中使用“~”获取主目录的过程是什么?


你需要导入 os 模块,然后只需一行即可完成其余工作。


import os

print (os.path.expanduser('~'))


输出:


/home/runner




Q-5:Python 中可用的内置类型有哪些?


以下是 Python 支持的最常用的内置类型列表:


Python 的不可变内置数据类型 Python 的可变内置数据类型

数字 列表

字符串 字典

元组 集合

回到目录


Q-6:如何在 Python 应用程序中查找错误或执行静态分析?


你可以使用 PyChecker,它是一个静态分析器。它识别 Python 项目中的错误,并揭示与样式和复杂性相关的错误。

另一个工具是 Pylint,它检查 Python 模块是否满足编码标准。

回到目录


Q-7:什么时候使用 Python 装饰器?

Python 装饰器是在 Python 语法中进行的相对更改,用于快速调整功能。


回到目录


Q-8:列表和元组的主要区别是什么?


列表和元组之间的主要区别在于前者是可变的,而元组则不是。


元组可以被散列,例如,使用它作为字典的键。


回到目录


Q-9:Python 如何处理内存管理?


Python 使用私有堆来维护其内存。因此堆包含所有 Python 对象和数据结构。这个区域只有 Python 解释器可以访问;程序员不能用。

它是处理私有堆的 Python 内存管理器。它为 Python 对象执行所需的内存分配。

Python 使用内置垃圾收集器,它可以回收所有未使用的内存并将其卸载到堆空间。

回到目录


Q-10:lambda 和 def 之间的主要区别是什么?


Def 可以容纳多个表达式,而 lambda 是一个单表达式函数。

Def 生成一个函数并指定一个名称以便稍后调用它。Lambda 形成一个函数对象并返回它。

def 可以有一个 return 语句。Lambda 不能有 return 语句。

Lambda 支持在列表和字典中使用。

回到目录


Q-11:用 python reg表达式模块"re"编写一个reg 表达式来验证电子邮件 ID


Python 有一个正则表达式模块“re”。


查看可以检查 .com 和 .co.in 子域的电子邮件 ID的“re”表达式。


import re

print(re.search(r"[0-9a-zA-Z.]+@[a-zA-Z]+\.(com|co\.in)$","micheal.pages@mp. com"))


回到目录


Q-12:你认为以下代码片段的输出是什么?代码中有错误吗?


list = ['a', 'b', 'c', 'd', 'e']

print (list[10:])


以上代码行的结果是[]。不会有任何类似 IndexError 的错误。


你应该知道尝试使用超过成员计数的索引从列表中获取成员(例如,尝试访问问题中给出的 list[10])会产生 IndexError。顺便说一下,仅检索超过 no 的起始索引处的切片。列表中的项目不会导致 IndexError。它只会返回一个空列表。


回到目录


Q-13:Python 中有 switch 或 case 语句吗?如果不是,那么相同的原因是什么?


没有,Python 中没有 Switch 语句,但是你可以编写一个 Switch 函数然后使用它。



Q-14:Python 用来迭代数字序列的内置函数是什么?


Range() 生成一个数字列表,用于迭代 for 循环。


for i in range(5):

   print(i)


range() 函数带有两组参数。


范围(停止)


停止:它是没有。要生成并从零开始的整数。例如。范围(3) == [0, 1, 2]。

范围([开始],停止[,步骤])

开始:这是起始编号。的序列。

停止:它指定序列的上限。

Step:生成序列的增量因子。

注意事项:

只允许整数参数。

参数可以是正数或负数。

Python 中的range()函数从第零个索引开始。


Q-15:Python 的 try-except 块中可能有哪些可选语句?


你可以在try-except 块中使用两个可选子句。


“ else” 子句


如果你想在 try 块未创建异常时运行一段代码,这将很有用。

“finally” 子句

当你想执行一些运行的步骤时,不管是否发生异常它都有用。

回到目录