Python 模擬試験

Python実践 模擬試験 第4回 問9・3章 Pythonの言語仕様(デコレータ)

functools.cache

次のコードを実行したときの出力として、正しいものを1つ選べ。

import functools
calls = []
@functools.cache
def f(x):
    calls.append(x)
    return x * 2
f(1); f(1); f(2)
print(calls)
  1. A

    [1, 1, 2]

  2. B

    [1]

  3. C

    []

  4. D

    [1, 2]

正解と解説を見る

正解:D

functools.cache(Python 3.9 以降)は、引数に対する結果を記憶する。副作用のある関数や、引数がハッシュ可能でない場合には使えない。

順実行する行実行後の変数
1`import functools`—
2`calls = []`calls = []
3`@functools.cache`—
4`def f(x):`—
5`@functools.cache`—
6`def f(x):`—
7`f(1); f(1); f(2)`—
8└ `calls.append(x)`calls = [1], x = 1
9└ `return x * 2`x = 1
10└ `calls.append(x)`calls = [1, 2], x = 2
11└ `return x * 2`x = 2
12`print(calls)`calls = [1, 2]
結果実際の出力[1, 2]

学習のポイント:lru_cache は、キャッシュの大きさを制限できる。

この問題を演習で解く →

問題一覧へ

このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。