Python面试宝典第10题:精选选择题

题目1

在以下函数中,b和a的关系是___。

def add_one_to_list(lst):
    lst.append(1)
    return lst

a = [1, 2, 3]
b = add_one_to_list(a)

A. b是a的浅拷贝

B. b和a是同一个列表对象

C. b是a的深拷贝

D. b是a的一个子列表


题目2

以下函数的作用是___。

def operate_string(s):
    return s[::-1]

A. 将字符串s转换为大写

B. 计算字符串s的长度

C. 反转字符串s中的字符顺序

D. 删除字符串s中的空格


题目3

执行下面的代码后,nums的值是___。

nums = [1, 2, 7, 9, 8, 6]
nums.sort(reverse=True)

A. [1, 2, 6, 7, 8, 9]

B. [9, 8, 7, 6, 2, 1]

C. [6, 7, 8, 9, 2, 1]

D. [6, 8, 9, 7, 2, 1]


题目4

阅读下面的代码,对于fibonacci(5),下列说法正确的是___。

def fibonacci(n, memo={}):
    if n <= 1:
        return n
    elif n not in memo:
        memo[n] = fibonacci(n-1) + fibonacci(n-2)
    return memo[n]

A. fibonacci(1)会计算两次

B. fibonacci(2)会计算三次

C. fibonacci(1)和fibonacci(2)均只会计算一次

D. 时间复杂度为O(n^2)


题目5

执行下面的代码后,输出是___。

class MyClass:
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return str(self.value)

obj = MyClass(10)
print(str(obj))

A. "<__main__.MyClass object at 0x...>"

B. "MyClass Object"

C. "10"

D. 报错,缺少__repr__方法


题目6

执行下面的代码后,输出是___。

def example():
    x = 10
    def nested():
        nonlocal x
        x = 20
    nested()
    return x
    
print(example())

A. 10

B. 20

C. 报错,因为nonlocal关键字不能正确引用x

D. None


题目7

阅读下面的代码,关于weak_ref()调用的说法正确的是___。

import weakref

class MyClass:
    pass

obj = MyClass()
weak_ref = weakref.ref(obj)

del obj

A. 返回原对象

B. 返回None,因为原对象已被删除

C. 抛出ReferenceError

D. 引发MemoryError


题目8

阅读下面的代码,如何在不修改decorated_function的情况下,临时禁用装饰器的功能?说法正确的是___。

def advanced_decorator(func):
    def wrapper(*args, **kwargs):
        print("Wrapper preprocessing")
        result = func(*args, **kwargs)
        print("Wrapper postprocessing")
        return result
    return wrapper

@advanced_decorator
def decorated_function(x):
    print(f"Inside function: {x}")

A. 无法实现,一旦装饰就无法临时禁用

B. 通过decorated_function.__wrapped__(*args)调用原始函数

C. 通过设置全局变量控制装饰器逻辑

D. 使用functools.wraps取消装饰效果


题目9

阅读下面的代码,说法正确的是___。

class SingletonMeta(type):
    _instances = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super().__call__(*args, **kwargs)
        return cls._instances[cls]

class Singleton(metaclass=SingletonMeta):
    def __init__(self, value):
        self.value = value

s1 = Singleton(10)
s2 = Singleton(20)

A. s1 和 s2 是两个不同的对象

B. s1 和 s2 的 value 属性都是 20

C. s1 和 s2 是同一个对象,且 value 属性为 10

D. s1 和 s2 是同一个对象,且 value 属性为 20


题目10

阅读下面的代码,说法错误的是___。

from functools import lru_cache

@lru_cache(maxsize=None)
def expensive_calculation(x):
    # 假设这是一个非常耗时的计算
    return x * x

A. lru_cache可以显著提高对同一输入重复调用函数的效率

B. maxsize=None意味着缓存大小没有限制

C. 如果内存不足,Python会自动从LRU缓存中移除最近最少使用的条目

D. expensive_calculation现在是一个纯函数,其行为不受外部状态影响


答案

1、答案: B。因为列表是可变对象,通过函数修改列表会直接影响原始对象。

2、答案: C。s[::-1]是Python中切片操作的一种形式,用于从开始到结束反向取出字符串中的字符,从而实现反转。

3、答案: B。sort(reverse=True)按照降序排列列表元素。

4、答案: C。通过记忆化存储已计算过的斐波那契数,避免了重复计算,降低了时间复杂度。

5、答案: C。通过定义str方法,当对象被转换为字符串时,会返回自定义的字符串表示,这里是对象的value值"10"。

6、答案: B。nonlocal关键字用于标记一个变量是外部嵌套作用域(非全局)中的变量,因此内部函数可以修改外部函数的局部变量x。

7、答案: B。weakref.ref创建的是弱引用,当对象被垃圾回收后,弱引用不会阻止对象被销毁,访问该弱引用会返回None。

8、答案: B。Python的装饰器在应用时会保留原始函数对象作为wrapped属性,可以直接通过这个属性调用未装饰的函数版本。

9、答案: D。尽管s1初始化时传入了10,但由于SingletonMeta元类的实现,s2的创建覆盖了之前实例的value属性,使得最后的实例(s1和s2相同)的value为20。

10、答案: C。虽然LRU缓存设计用于在达到最大容量时移除最不常用的条目,但是如果没有指定maxsize或将其设置为None,则实际上不会限制缓存大小,可能导致内存使用无限制增长。

相关文章

Python 1000 道练习题(8) python经典例题100道文库

在Python中,for循环用于打印各种种图案是最常见的编程问题。大多数打印模式都使用以下概念来控制输出:外部循环打印行数内部循环打印列数根据所需的空白位置,控制打印空白的变量1.输出简单的金字塔模型...

130道python练习题 完整版PDF python训练题

今天跟大家分享一些干货,在学python的朋友可以动起来了!python基础知识练习题,常见常用的,可以作为参考,挺不错的,也有许许多多的讲解,适合python巩固基础知识和入门130道练习题,涵盖基...

这是我见过最好的python100道练习题(附带答案链接)

今天看到一位博主发了100道练习题,仔细看了下,觉的很是不错!难度细分也规划的很好,于是就搬运过来了,以下只列出了其中的10道练习题,一起来看看吧!详细答案链接:https://github.com/...

寒假内卷,就练这150道Python练习题(答案解析)

python入门简单,当我们学完基础知识后,最好的巩固方法就是拿一些练习题练手,综合所学内容,达到输入输出纠正的完美学习路径。今天给小伙伴们分享一份大佬整理的150道python练习题,涵盖Pytho...

Python 选择题,程序填空题,安徽对口高考分析复习,字典,循环

训练题:一、选择题1、下列选项中,不属于python语言特点的是( C )A、简单易学 B、开源 C、面向过程 D、可移植性2、运行下方代码段,输出的结果是( D )a=()print(type(a)...