Python 模擬試験

Python実践 模擬試験 第6回 問8・3章 Pythonの言語仕様(ジェネレータ)

ジェネレータの戻り値

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

def g():
    yield 1
    return 5
it = g()
next(it)
try:
    next(it)
except StopIteration as e:
    print(e.value)
  1. A

    5

  2. B

    1

  3. C

    None

  4. D

    何も出力されない。

正解と解説を見る

正解:A

ジェネレータの return 値 は、最後に StopIteration(値) として伝わる。yield from の式の値になる。

順実行する行実行後の変数
1`def g():`—
2`it = g()`—
3`next(it)`—
4└ `yield 1`—
5`try:`—
6`next(it)`—
7└ `return 5`—
8`except StopIteration as e:`—
9`print(e.value)`—
分岐`except StopIteration as e:`実行される
結果実際の出力5

学習のポイント:コルーチンの原型となった仕組み。

この問題を演習で解く →

問題一覧へ

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