題目1
在以下函數中,b和a的關系是___。
def add_one_to_list(lst):lst.append(1)return lsta = [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 nelif 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 = valuedef __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 = 10def nested():nonlocal xx = 20nested()return xprint(example())
A. 10
B. 20
C. 報錯,因為nonlocal關鍵字不能正確引用x
D. None
題目7
閱讀下面的代碼,關于weak_ref()調用的說法正確的是___。
import weakrefclass MyClass:passobj = 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 resultreturn 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 = values1 = 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,則實際上不會限制緩存大小,可能導致內存使用無限制增長。