Python 模擬試験

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

send

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

def g():
    x = yield 1
    yield x * 2
it = g()
next(it)
print(it.send(5))
  1. A

    5

  2. B

    10

  3. C

    1

  4. D

    None

正解と解説を見る

正解:B

ジェネレータの send(値) は、中断中の yield 式に値を渡して再開する。最初は next で最初の yield まで進めておく。

順実行する行実行後の変数
1`def g():`—
2`it = g()`—
3`next(it)`—
4└ `x = yield 1`x = 5
5`print(it.send(5))`—
6└ `yield x * 2`—
結果実際の出力10

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

この問題を演習で解く →

問題一覧へ

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