100 个基本 Python 面试问题第四部分(61-80)

举报
海拥 发表于 2022/04/17 21:54:08 2022/04/17
【摘要】 100 个基本的 Python 面试问题第四部分(61-80)Q-1:什么是 Python,使用它有什么好处,你对 PEP 8 有什么理解?Q-2:以下 Python 代码片段的输出是什么?证明你的答案。Q-3:如果程序不需要动作但在语法上需要它,可以在 Python 中使用的语句是什么?Q-4:在 Python 中使用“~”获取主目录的过程是什么?Q-5:Python 中可用的内置类型有哪...

100 个基本的 Python 面试问题第四部分(61-80)

Q-1:什么是 Python,使用它有什么好处,你对 PEP 8 有什么理解?
Q-2:以下 Python 代码片段的输出是什么?证明你的答案。
Q-3:如果程序不需要动作但在语法上需要它,可以在 Python 中使用的语句是什么?
Q-4:在 Python 中使用“~”获取主目录的过程是什么?
Q-5:Python 中可用的内置类型有哪些?
Q-6:如何在 Python 应用程序中查找错误或执行静态分析?
Q-7:什么时候使用 Python 装饰器?
Q-8:列表和元组的主要区别是什么?
Q-9:Python 如何处理内存管理?
Q-10:lambda 和 def 之间的主要区别是什么?
Q-11:使用 python reg 表达式模块“re”编写一个 reg 表达式来验证电子邮件 ID?
Q-12:你认为以下代码片段的输出是什么?代码中有错误吗?
Q-13:Python 中有 switch 或 case 语句吗?如果不是,那么相同的原因是什么?
Q-14:Python 用来迭代数字序列的内置函数是什么?
Q-15:Python 的 try-except 块中可能有哪些可选语句?
Q-16:Python 中的字符串是什么?
Q-17:Python 中的切片是什么?
Q-18:Python 中的 %s 是什么?
Q-19:字符串在 Python 中是不可变的还是可变的?
Q-20:Python 中的索引是什么?
Q-21:Python 中的文档字符串是什么?
Q-22:Python 编程中的函数是什么?
Q-23:Python 中有多少基本类型的函数?
Q-24:我们如何用 Python 编写函数?
Q-25:Python 中的函数调用或可调用对象是什么?
Q-26:Python 中的 return 关键字是做什么用的?
Q-27:Python 中的“按值调用”是什么?
Q-28:Python 中的“按引用调用”是什么?
Q-29:trunc() 函数的返回值是多少?
Q-30:Python 函数必须返回一个值吗?
Q-31:Python 中的 continue 有什么作用?
Q-32:Python 中 id() 函数的用途是什么?
Q-33:*args 在 Python 中有什么作用?
Q-34:**kwargs 在 Python 中做什么?
Q-35:Python 有 Main() 方法吗?
Q-36: __ Name __ 在 Python 中有什么作用?
Q-37:Python 中“end”的目的是什么?
Q-38:什么时候应该在 Python 中使用“break”?
Q-39:Python 中的 pass 和 continue 有什么区别?
Q-40:len() 函数在 Python 中有什么作用?
Q-41:chr() 函数在 Python 中有什么作用?
Q-42:ord() 函数在 Python 中有什么作用?
Q-43:Python 中的 Rstrip() 是什么?
Q-44:Python 中的空格是什么?
Q-45:Python 中的 isalpha() 是什么?
Q-46:你如何在 Python 中使用 split() 函数?
Q-47:Python 中的 join 方法有什么作用?
Q-48:Title() 方法在 Python 中有什么作用?
Q-49:是什么让 CPython 与 Python 不同?
Q-50:哪个包是最快的 Python 形式?
Q-51:Python 语言中的 GIL 是什么?
Q-52:Python 如何实现线程安全?
Q-53:Python 如何管理内存?
Q-54:Python 中的元组是什么?
Q-55:Python 编程中的字典是什么?
Q-56:Python 中的 set 对象是什么?
Q-57:字典在 Python 中有什么用?
Q-58:Python 列表是链表吗?
Q-59:Python 中的 Class 是什么?
Q-60:Python 类中的属性和方法是什么?
Q-61:如何在运行时为 Class 属性赋值?
Q-62:Python 编程中的继承是什么?
Q-63:Python 中的组合是什么?
Q-64:Python 程序中的错误和异常是什么?
Q-65:你如何在 Python 中使用 Try/Except/Finally 处理异常?
Q-66:你如何为 Python 中的预定义条件引发异常?
Q-67:什么是 Python 迭代器?
Q-68:Iterator 和 Iterable 有什么区别?
Q-69:什么是 Python 生成器?
Q-70:Python 中的闭包是什么?
Q-71:Python 中的装饰器是什么?
Q-72:你如何在 Python 中创建字典?
Q-73:你如何在 Python 中读取字典?
Q-74:如何在 Python 中遍历字典对象?
Q-75:你如何在 Python 中向字典添加元素?
Q-76:如何在 Python 中删除字典的元素?
Q-77:你如何检查字典中键的存在?
Q-78:Python 中列表推导式的语法是什么?
Q-79:Python 中字典理解的语法是什么?
Q-80:Python 中生成器表达式的语法是什么?
直接跳到末尾 去领资料


Q-61:如何在运行时为 Class 属性赋值?

我们可以在运行时指定属性的值。我们需要添加一个 init 方法并将输入传递给对象构造函数。请参阅以下示例来说明这一点。

>>> class Human:
    def __init__(self, profession):
        self.profession = profession
    def set_profession(self, new_profession):
        self.profession = new_profession

>>> man = Human("Manager")
>>> print(man.profession)
Manager

回到目录


Q-62:Python 编程中的继承是什么?

继承是一种 OOP 机制,它允许对象访问其父类功能。它将基类功能传递给孩子。

image.png

我们故意抽象出不同类中的相似代码。

公共代码在基类中,子类对象可以通过继承访问它。看看下面的例子。

class PC: # 基类
    processor = "Xeon" # 通用属性
    def set_processor(self, new_processor):
        processor = new_processor

class Desktop(PC): # 派生类
    os = "Mac OS High Sierra" # 个性化属性
    ram = "32 GB"

class Laptop(PC): # 派生类
    os = "Windows 10 Pro 64" # 个性化属性
    ram = "16 GB"

desk = Desktop()
print(desk.processor, desk.os, desk.ram)

lap = Laptop()
print(lap.processor, lap.os, lap.ram)

输出:

Xeon Mac OS High Sierra 32 GB
Xeon Windows 10 Pro 64 16 GB

回到目录


Q-63:Python 中的组合是什么?

组合也是 Python 中的一种继承。它打算从基类继承,但有点不同,即通过使用基类的实例变量作为派生类的成员。

见下图。

image.png

为了演示组合,我们需要实例化类中的其他对象,然后使用这些实例。

class PC: # 基类
    processor = "Xeon" # 通用属性
    def __init__(self, processor, ram):
        self.processor = processor
        self.ram = ram

    def set_processor(self, new_processor):
        processor = new_processor

    def get_PC(self):
        return "%s cpu & %s ram" % (self.processor, self.ram)

class Tablet():
    make = "Intel"
    def __init__(self, processor, ram, make):
        self.PC = PC(processor, ram) # 作品
        self.make = make

    def get_Tablet(self):
        return "Tablet with %s CPU & %s ram by %s" % (self.PC.processor, self.PC.ram, self.make)

if __name__ == "__main__":
    tab = Tablet("i7", "16 GB", "Intel")
    print(tab.get_Tablet())

输出是:

Tablet with i7 CPU & 16 GB ram by Intel

回到目录


Q-64:Python 程序中的错误和异常是什么?

错误是程序中可能导致其异常退出的编码问题。

相反,异常的发生是由于外部事件的发生中断了程序的正常流程。

回到目录


Q-65:你如何在 Python 中使用 Try/Except/Finally 处理异常?

Python 制定了 Try、Except、Finally 结构来处理错误和异常。我们将缩进的不安全代码括在 try 块下。我们可以将回退代码保留在 except 块中。任何打算最后执行的指令都应该在 finally 块下。

try:
    print("在 try 块中执行代码")
    print(exception)
except:
    print("进入except块")
finally:
    print("到达最后一个区块")

输出是:

try 块中执行代码
进入except块
到达最后一个区块

回到目录


Q-66:你如何为 Python 中的预定义条件引发异常?

我们可以根据某些条件引发异常。

例如,如果我们希望用户只输入奇数,否则会引发异常。

# 示例 - 引发异常
while True:
    try:
        value = int(input("输入一个奇数-"))
        if value%2 == 0:
            raise ValueError("由于无效输入退出!!!")
        else:
            print("输入的值为: %s" % value)
    except ValueError as ex:
        print(ex)
        break

输出是:

输入一个奇数- 2
由于无效输入退出!!!
输入一个奇数- 1
输入的值为: 1
输入一个奇数-

回到目录


Q-67:什么是 Python 迭代器?

Python 中的迭代器是类似数组的对象,允许在下一个元素上移动。我们在遍历循环时使用它们,例如在“for”循环中。

Python 库没有。的迭代器。例如,一个列表也是一个迭代器,我们可以在它上面启动一个 for 循环。

回到目录


Q-68:Iterator 和 Iterable 有什么区别?

列表、元组、字典和集合等集合类型都是可迭代对象,而它们也是可迭代容器,在遍历时返回迭代器。

回到目录


以下是一些高级 Python 面试问题。

Q-69:什么是 Python 生成器?

Generator 是一种函数,它让我们指定一个函数,它的作用类似于迭代器,因此可以在“for”循环中使用。

在生成器函数中,yield 关键字替代了 return 语句。

def fn():
    return "简单的 Python 函数"

def generate():
    yield "Python 生成器函数"

print(next(generate()))

输出是:

Python 生成器函数

回到目录


Q-70:Python 中的闭包是什么?

Python 闭包是由另一个函数返回的函数对象。我们使用它们来消除代码冗余。

在下面的例子中,我们编写了一个简单的乘法闭包。

def multiply_number(num):
    def product(number):
        'product() here is a closure'
        return num * number
    return product

num_2 = multiply_number(2)
print(num_2(11))
print(num_2(24))

num_6 = multiply_number(6)
print(num_6(1))

输出是:

22
48
6

回到目录


Q-71:Python 中的装饰器是什么?

Python 装饰器使我们能够动态地向给定对象添加新行为。在下面的示例中,我们编写了一个简单的示例来显示函数执行前后的消息。

def decorator_sample(func):
    def decorator_hook(*args, **kwargs):
        print("函数调用前")
        result = func(*args, **kwargs)
        print("函数调用后")
        return result
    return decorator_hook

@decorator_sample
def product(x, y):
    "两个数相乘的函数"
    return x * y

print(product(3, 3))

输出是:

函数调用前
函数调用后
9

回到目录


Q-72:你如何在 Python 中创建字典?

让我们以建筑工地统计为例。为此,我们首先需要使用冒号(“:”)拆分键值对。键应该是不可变类型,也就是说,我们将使用不允许在运行时更改的数据类型。我们将从整数、字符串或元组中进行选择。

但是,我们可以采用任何类型的值。为了区分数据对,我们可以使用逗号(“,”)并将整个内容保留在花括号({…})中。

>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> type(site_stats)
<class 'dict'>
>>> print(site_stats)
{'type': 'organic', 'site': 'tecbeamers.com', 'traffic': 10000}

回到目录


Q-73:你如何在 Python 中读取字典?

要从字典中获取数据,我们可以使用键直接访问。我们可以在提到字典对应的变量名后使用方括号 […] 将“key”括起来。

>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> print(site_stats["traffic"])

我们甚至可以调用 get 方法从字典中获取值。它还让我们设置一个默认值。如果缺少密钥,则会发生 KeyError。

>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> print(site_stats.get('site'))
tecbeamers.com

回到目录


Q-74:如何在 Python 中遍历字典对象?

我们可以使用“for”和“in”循环来遍历字典对象。

>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> for k, v in site_stats.items():
    print("The key is: %s" % k)
    print("The value is: %s" % v)
    print("++++++++++++++++++++++++")

输出是:

The key is: type
The value is: organic
++++++++++++++++++++++++
The key is: site
The value is: tecbeamers.com
++++++++++++++++++++++++
The key is: traffic
The value is: 10000
++++++++++++++++++++++++

回到目录


Q-75:你如何在 Python 中向字典添加元素?

我们可以通过使用新键修改字典来添加元素,然后为其设置值。

>>> #设置一个空白字典
>>> site_stats = {}
>>> site_stats['site'] = 'google.com'
>>> site_stats['traffic'] = 10000000000
>>> site_stats['type'] = 'Referral'
>>> print(site_stats)
{'type': 'Referral', 'site': 'google.com', 'traffic': 10000000000}

我们甚至可以在 update() 方法的帮助下连接两个字典以获得更大的字典。

>>> site_stats['site'] = 'google.co.in'
>>> print(site_stats)
{'site': 'google.co.in'}
>>> site_stats_new = {'traffic': 1000000, "type": "social media"}
>>> site_stats.update(site_stats_new)
>>> print(site_stats)
{'type': 'social media', 'site': 'google.co.in', 'traffic': 1000000}

回到目录


Q-76:如何在 Python 中删除字典的元素?

我们可以使用 del() 方法删除字典中的键。

>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> del site_stats["type"]
>>> print(site_stats)
{'site': 'google.co.in', 'traffic': 1000000}

我们可以使用的另一种方法是 pop() 函数。它接受密钥作为参数。另外,第二个参数,如果键不存在,我们可以传递一个默认值。

>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> print(site_stats.pop("type", None))
organic
>>> print(site_stats)
{'site': 'tecbeamers.com', 'traffic': 10000}

回到目录


Q-77:你如何检查字典中键的存在?

我们可以使用 Python 的“in”运算符来测试 dict 对象中是否存在键。

>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> 'site' in site_stats
True
>>> 'traffic' in site_stats
True
>>> "type" in site_stats
True

早些时候,Python 还提供了已被弃用的 has_key() 方法。

回到目录


Q-78:Python 中列表推导式的语法是什么?

列表推导式的签名如下:

[ expression(var) for var in iterable ]

例如,下面的代码将返回从 10 到 20 的所有数字并将它们存储在一个列表中。

>>> alist = [var for var in range(10, 20)]
>>> print(alist)

回到目录


Q-79:Python 中字典理解的语法是什么?

字典的语法与列表推导式的语法相同,但不同之处在于它使用大括号:

{ aKey, itsValue for aKey in iterable }

例如,下面的代码将返回所有数字 10 到 20 作为键,并将这些数字的相应平方存储为值。

>>> adict = {var:var**2 for var in range(10, 20)}
>>> print(adict)

回到目录


Q-80:Python 中生成器表达式的语法是什么?

生成器表达式的语法与列表推导式匹配,但不同之处在于它使用括号:

( expression(var) for var in iterable )

(表达式(var) for var in iterable )
例如,下面的代码将创建一个生成器对象,该对象在使用时生成 10 到 20 的值。

>>> (var for var in range(10, 20))
 at 0x0000000003668728>
>>> list((var for var in range(10, 20)))

回到目录


总结——100 个基本 Python 面试题

我已经写了很长一段时间的技术博客,这是我的一篇面试题分享。希望你们会喜欢!这里汇总了我的全部原创及作品源码: Github

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。