上級
STAGE 1
110問目 • 10
  • Q1

    ジェネレータとは何ですか?

    ANSWER
    yieldを使って値を1つずつ生成するイテレータ
    クリックして解説を表示
    EXPLANATION

    ジェネレータはyieldを使って値を1つずつ生成するイテレータを作成する関数です。メモリ効率が良いです。

  • Q2

    ジェネレータ関数で値を返すキーワードはどれですか?

    ANSWER
    yield
    クリックして解説を表示
    EXPLANATION

    yieldキーワードで値を返し、次回呼び出し時にその位置から再開します。

  • Q3

    次のコードを実行すると何が表示されますか?

    def gen():
        yield 1
        yield 2
        yield 3
    
    for x in gen():
        print(x)
    ANSWER
    1, 2, 3(順に表示)
    クリックして解説を表示
    EXPLANATION

    ジェネレータはyieldごとに値を返し、1, 2, 3が順に表示されます。

  • Q4

    ジェネレータ式の正しい書き方はどれですか?

    ANSWER
    (x for x in range(10))
    クリックして解説を表示
    EXPLANATION

    ジェネレータ式は丸括弧()で囲みます。リスト内包表記の[]との違いに注意。

  • Q5

    ジェネレータのメリットは何ですか?

    ANSWER
    メモリ効率が良い
    クリックして解説を表示
    EXPLANATION

    ジェネレータは必要なときに値を生成するため、大量のデータを扱う際にメモリを節約できます。

  • Q6

    イテレータプロトコルで必要なメソッドはどれですか?

    ANSWER
    iter__と__next
    クリックして解説を表示
    EXPLANATION

    イテレータは__iter____next__メソッドを実装する必要があります。

  • Q7

    イテレータが終了したときに発生する例外はどれですか?

    ANSWER
    StopIteration
    クリックして解説を表示
    EXPLANATION

    StopIteration例外でイテレータの終了を通知します。

  • Q8

    yield fromの用途は何ですか?

    ANSWER
    別のイテレータに委譲する
    クリックして解説を表示
    EXPLANATION

    yield fromは別のイテレータの全要素を委譲(delegate)して返します。

  • Q9

    コンテキストマネージャとは何ですか?

    ANSWER
    with文でリソースの確保と解放を自動化する仕組み
    クリックして解説を表示
    EXPLANATION

    コンテキストマネージャはwith文で使用し、リソースの確保と解放を自動化します。

  • Q10

    コンテキストマネージャで必要なメソッドはどれですか?

    ANSWER
    enter__と__exit
    クリックして解説を表示
    EXPLANATION

    __enter____exit__メソッドを実装します。

STAGE 2
1120問目 • 10
  • Q11

    コンテキストマネージャを簡単に作成するデコレータはどれですか?

    ANSWER
    @contextmanager
    クリックして解説を表示
    EXPLANATION

    @contextmanagerデコレータでジェネレータ関数からコンテキストマネージャを作成できます。

  • Q12

    次のコードの__exit__メソッドの引数は何を表しますか?

    def __exit__(self, exc_type, exc_val, exc_tb):
    ANSWER
    例外の型、値、トレースバック
    クリックして解説を表示
    EXPLANATION

    例外の型、値、トレースバックを受け取ります。例外がなければすべてNoneです。

  • Q13

    マルチスレッドを実現するモジュールはどれですか?

    ANSWER
    threading
    クリックして解説を表示
    EXPLANATION

    threadingモジュールでマルチスレッド処理を実現します。

  • Q14

    マルチプロセスを実現するモジュールはどれですか?

    ANSWER
    multiprocessing
    クリックして解説を表示
    EXPLANATION

    multiprocessingモジュールでマルチプロセス処理を実現します。GILの制約を回避できます。

  • Q15

    GIL(Global Interpreter Lock)とは何ですか?

    ANSWER
    一度に1スレッドのみがPythonコードを実行できるロック
    クリックして解説を表示
    EXPLANATION

    GILはCPythonで一度に1つのスレッドのみがPythonコードを実行できるようにするロックです。

  • Q16

    GILの影響を回避するのに適した方法はどれですか?

    ANSWER
    マルチプロセス
    クリックして解説を表示
    EXPLANATION

    CPU集約的な処理ではマルチプロセスを使うことでGILの影響を回避できます。

  • Q17

    スレッドセーフなキューを提供するモジュールはどれですか?

    ANSWER
    queue
    クリックして解説を表示
    EXPLANATION

    queueモジュールでスレッドセーフなキューを使用できます。

  • Q18

    排他制御に使うオブジェクトはどれですか?

    ANSWER
    threading.Lock
    クリックして解説を表示
    EXPLANATION

    threading.Lockで排他制御を行い、複数スレッドの競合を防ぎます。

  • Q19

    async/awaitを使った非同期プログラミングのモジュールはどれですか?

    ANSWER
    asyncio
    クリックして解説を表示
    EXPLANATION

    asyncioモジュールで非同期I/Oを実現します。

  • Q20

    非同期関数を定義するキーワードはどれですか?

    ANSWER
    async def
    クリックして解説を表示
    EXPLANATION

    async defで非同期関数(コルーチン)を定義します。

STAGE 3
2130問目 • 10
  • Q21

    非同期関数内で結果を待つキーワードはどれですか?

    ANSWER
    await
    クリックして解説を表示
    EXPLANATION

    awaitで非同期処理の完了を待ちます。async def関数内でのみ使用可能です。

  • Q22

    非同期関数を実行する方法はどれですか?

    ANSWER
    asyncio.run()
    クリックして解説を表示
    EXPLANATION

    asyncio.run()で非同期関数(コルーチン)を実行します。

  • Q23

    複数の非同期タスクを並行実行する関数はどれですか?

    ANSWER
    asyncio.gather()
    クリックして解説を表示
    EXPLANATION

    asyncio.gather()で複数のコルーチンを並行実行します。

  • Q24

    メタクラスとは何ですか?

    ANSWER
    クラスを作成するクラス
    クリックして解説を表示
    EXPLANATION

    メタクラスは「クラスのクラス」で、クラスの作成をカスタマイズできます。

  • Q25

    メタクラスを指定する方法はどれですか?

    ANSWER
    metaclass=Meta
    クリックして解説を表示
    EXPLANATION

    class クラス名(metaclass=メタクラス):の形式で指定します。

  • Q26

    すべてのクラスのデフォルトのメタクラスはどれですか?

    ANSWER
    type
    クリックして解説を表示
    EXPLANATION

    typeがすべてのクラスのデフォルトのメタクラスです。

  • Q27

    型ヒントを使って関数の引数と戻り値の型を指定する書き方はどれですか?

    ANSWER
    def func(arg: type) -> return_type:
    クリックして解説を表示
    EXPLANATION

    def func(arg: type) -> return_type:の形式で型ヒントを指定します。

  • Q28

    型ヒントでリストの要素の型を指定する書き方はどれですか?

    ANSWER
    list[int]
    クリックして解説を表示
    EXPLANATION

    list[int]またはList[int](typing使用)でリストの要素の型を指定します。

  • Q29

    複数の型を許容する型ヒントの書き方はどれですか?

    ANSWER
    Union[int, str]
    クリックして解説を表示
    EXPLANATION

    Union[int, str]またはint | str(Python 3.10+)で複数の型を許容します。

  • Q30

    Noneを許容する型ヒントの書き方はどれですか?

    ANSWER
    Optional[type]
    クリックして解説を表示
    EXPLANATION

    Optional[type]またはtype | None(Python 3.10+)でNoneを許容します。

STAGE 4
3140問目 • 10
  • Q31

    静的型チェックを行うツールはどれですか?

    ANSWER
    mypy
    クリックして解説を表示
    EXPLANATION

    mypyは型ヒントに基づいて静的型チェックを行うツールです。

  • Q32

    TypeVarの用途は何ですか?

    ANSWER
    ジェネリック型を定義する
    クリックして解説を表示
    EXPLANATION

    TypeVarはジェネリック型を定義するために使用します。

  • Q33

    ディスクリプタとは何ですか?

    ANSWER
    属性アクセスをカスタマイズするクラス
    クリックして解説を表示
    EXPLANATION

    ディスクリプタは__get____set____delete__のいずれかを実装し、属性アクセスをカスタマイズします。

  • Q34

    データディスクリプタと非データディスクリプタの違いは何ですか?

    ANSWER
    データディスクリプタは__set__か__delete__を持つ
    クリックして解説を表示
    EXPLANATION

    データディスクリプタは__set__または__delete__を持ち、非データディスクリプタは__get__のみ持ちます。

  • Q35

    __slots__の用途は何ですか?

    ANSWER
    許可する属性を制限してメモリを節約する
    クリックして解説を表示
    EXPLANATION

    __slots__で許可する属性を制限し、メモリ使用量を削減できます。

  • Q36

    __call__メソッドの用途は何ですか?

    ANSWER
    インスタンスを関数のように呼び出せる
    クリックして解説を表示
    EXPLANATION

    __call__を実装すると、インスタンスを関数のように呼び出せます。

  • Q37

    __getattr____getattribute__の違いは何ですか?

    ANSWER
    __getattribute__は常に、__getattr__は見つからないときのみ
    クリックして解説を表示
    EXPLANATION

    __getattribute__はすべての属性アクセスで呼ばれ、__getattr__は属性が見つからないときのみ呼ばれます。

  • Q38

    __new____init__の違いは何ですか?

    ANSWER
    __new__はインスタンス作成、__init__は初期化
    クリックして解説を表示
    EXPLANATION

    __new__はインスタンスを作成し、__init__は作成されたインスタンスを初期化します。

  • Q39

    シングルトンパターンを実装するのに適したメソッドはどれですか?

    ANSWER
    new
    クリックして解説を表示
    EXPLANATION

    __new__をオーバーライドして同じインスタンスを返すことでシングルトンを実装できます。

  • Q40

    weakrefモジュールの用途は何ですか?

    ANSWER
    弱い参照を作成する
    クリックして解説を表示
    EXPLANATION

    weakrefは弱い参照を作成し、オブジェクトがガベージコレクションされるのを妨げません。

STAGE 5
4150問目 • 10
  • Q41

    弱い参照が有用なケースはどれですか?

    ANSWER
    キャッシュなど解放可能なオブジェクト
    クリックして解説を表示
    EXPLANATION

    キャッシュなど、メモリが足りなくなったら解放されても良いオブジェクトを保持する場合に有用です。

  • Q42

    ガベージコレクションを手動で実行する関数はどれですか?

    ANSWER
    gc.collect()
    クリックして解説を表示
    EXPLANATION

    gc.collect()でガベージコレクションを手動で実行できます。

  • Q43

    循環参照とは何ですか?

    ANSWER
    オブジェクトが互いに参照し合う状態
    クリックして解説を表示
    EXPLANATION

    循環参照はオブジェクトが互いに参照し合い、参照カウントが0にならない状態です。

  • Q44

    copyモジュールのcopy()deepcopy()の違いは何ですか?

    ANSWER
    copyは浅いコピー、deepcopyは深いコピー
    クリックして解説を表示
    EXPLANATION

    copy()は浅いコピー(参照を共有)、deepcopy()は深いコピー(再帰的にコピー)を作成します。

  • Q45

    pickleモジュールの用途は何ですか?

    ANSWER
    オブジェクトをバイト列にシリアライズする
    クリックして解説を表示
    EXPLANATION

    pickleはPythonオブジェクトをバイト列にシリアライズ/デシリアライズします。

  • Q46

    pickleのセキュリティ上の注意点は何ですか?

    ANSWER
    信頼できないデータのデシリアライズは危険
    クリックして解説を表示
    EXPLANATION

    信頼できないソースからのpickleデータは任意のコードを実行される可能性があり危険です。

  • Q47

    structモジュールの用途は何ですか?

    ANSWER
    バイナリデータとPython値を相互変換する
    クリックして解説を表示
    EXPLANATION

    structはPythonの値とCの構造体(バイナリデータ)を相互変換します。

  • Q48

    C拡張モジュールを作成するのに使うライブラリはどれですか?

    ANSWER
    ctypes / Cython
    クリックして解説を表示
    EXPLANATION

    ctypesCythonでCライブラリを呼び出したり、C拡張を作成できます。

  • Q49

    inspectモジュールの用途は何ですか?

    ANSWER
    関数やクラスの情報を取得する
    クリックして解説を表示
    EXPLANATION

    inspectモジュールで関数やクラスの情報(引数、ソースコードなど)を取得できます。

  • Q50

    関数の引数情報を取得する関数はどれですか?

    ANSWER
    inspect.signature()
    クリックして解説を表示
    EXPLANATION

    inspect.signature()で関数のシグネチャ(引数情報)を取得できます。

STAGE 6
5160問目 • 10
  • Q51

    astモジュールの用途は何ですか?

    ANSWER
    ソースコードを抽象構文木として解析する
    クリックして解説を表示
    EXPLANATION

    astモジュールでPythonソースコードを抽象構文木として解析・操作できます。

  • Q52

    exec()eval()の違いは何ですか?

    ANSWER
    execは文を実行、evalは式を評価して値を返す
    クリックして解説を表示
    EXPLANATION

    exec()は文(statement)を実行し、eval()は式(expression)を評価して値を返します。

  • Q53

    exec()eval()のセキュリティ上の注意点は何ですか?

    ANSWER
    信頼できない入力は任意のコードを実行される危険
    クリックして解説を表示
    EXPLANATION

    信頼できない入力をexec()eval()に渡すと任意のコードが実行され危険です。

  • Q54

    __import__()関数の用途は何ですか?

    ANSWER
    動的にモジュールをインポートする
    クリックして解説を表示
    EXPLANATION

    __import__()で動的にモジュールをインポートできます。通常はimportlibの使用が推奨されます。

  • Q55

    importlibモジュールの用途は何ですか?

    ANSWER
    動的インポートやモジュールリロードを行う
    クリックして解説を表示
    EXPLANATION

    importlibは動的インポートやモジュールのリロードなど、インポートシステムに関する機能を提供します。

  • Q56

    モジュールをリロードする関数はどれですか?

    ANSWER
    importlib.reload()
    クリックして解説を表示
    EXPLANATION

    importlib.reload()でモジュールをリロードできます。

  • Q57

    パッケージの__init__.pyファイルの役割は何ですか?

    ANSWER
    パッケージであることを示し初期化する
    クリックして解説を表示
    EXPLANATION

    __init__.pyはディレクトリがパッケージであることを示し、パッケージの初期化コードを含みます。

  • Q58

    sys.pathとは何ですか?

    ANSWER
    モジュールを検索するディレクトリのリスト
    クリックして解説を表示
    EXPLANATION

    sys.pathはPythonがモジュールを検索するディレクトリのリストです。

  • Q59

    デコレータをネスト(複数適用)した場合の適用順序はどうなりますか?

    ANSWER
    下から上
    クリックして解説を表示
    EXPLANATION

    デコレータは下から上に適用されます(最も関数に近いものが最初)。

  • Q60

    functools.wrapsデコレータの用途は何ですか?

    ANSWER
    ラップされた関数のメタデータを保持する
    クリックして解説を表示
    EXPLANATION

    @functools.wrapsはラップされた関数のメタデータ(名前、ドキュメントなど)を保持します。

STAGE 7
6170問目 • 10
  • Q61

    クラスデコレータとは何ですか?

    ANSWER
    クラスを受け取って変更するデコレータ
    クリックして解説を表示
    EXPLANATION

    クラスデコレータはクラスを受け取って変更または置換したクラスを返すデコレータです。

  • Q62

    引数を取るデコレータを作成するにはどうしますか?

    ANSWER
    デコレータを返す関数(ファクトリ)を作成する
    クリックして解説を表示
    EXPLANATION

    デコレータファクトリ(デコレータを返す関数)を作成し、引数を受け取ってデコレータを返します。

  • Q63

    concurrent.futuresモジュールの用途は何ですか?

    ANSWER
    非同期実行の高レベルインターフェースを提供する
    クリックして解説を表示
    EXPLANATION

    concurrent.futuresは非同期実行のための高レベルインターフェースを提供します。

  • Q64

    ThreadPoolExecutorProcessPoolExecutorの違いは何ですか?

    ANSWER
    ThreadPoolはスレッド、ProcessPoolはプロセスを使用
    クリックして解説を表示
    EXPLANATION

    ThreadPoolExecutorはスレッドプール、ProcessPoolExecutorはプロセスプールを使用します。

  • Q65

    Futureオブジェクトとは何ですか?

    ANSWER
    非同期操作の結果を表すオブジェクト
    クリックして解説を表示
    EXPLANATION

    Futureは非同期操作の結果を表し、完了時に結果を取得できます。

  • Q66

    Executor.submit()Executor.map()の違いは何ですか?

    ANSWER
    submitは単一タスク、mapは複数引数に適用
    クリックして解説を表示
    EXPLANATION

    submit()は単一のタスクを投入しFutureを返し、map()は複数の引数に関数を適用します。

  • Q67

    asyncio.Queueの用途は何ですか?

    ANSWER
    非同期タスク間でデータを受け渡すキュー
    クリックして解説を表示
    EXPLANATION

    asyncio.Queueは非同期タスク間でデータを受け渡すためのキューです。

  • Q68

    asyncio.Semaphoreの用途は何ですか?

    ANSWER
    同時実行タスク数を制限する
    クリックして解説を表示
    EXPLANATION

    Semaphoreは同時に実行できるタスクの数を制限します。

  • Q69

    asyncio.create_task()の用途は何ですか?

    ANSWER
    コルーチンをTaskとしてスケジュールする
    クリックして解説を表示
    EXPLANATION

    create_task()はコルーチンをTaskとしてスケジュールし、並行実行できるようにします。

  • Q70

    非同期コンテキストマネージャを定義するメソッドはどれですか?

    ANSWER
    aenter__と__aexit
    クリックして解説を表示
    EXPLANATION

    __aenter____aexit__で非同期コンテキストマネージャを定義します。

STAGE 8
7180問目 • 10
  • Q71

    非同期イテレータを定義するメソッドはどれですか?

    ANSWER
    aiter__と__anext
    クリックして解説を表示
    EXPLANATION

    __aiter____anext__で非同期イテレータを定義します。

  • Q72

    非同期ジェネレータの特徴は何ですか?

    ANSWER
    async def内でyieldを使いasync forで反復
    クリックして解説を表示
    EXPLANATION

    非同期ジェネレータはasync def内でyieldを使い、async forで反復処理します。

  • Q73

    Protocolクラスの用途は何ですか?

    ANSWER
    構造的部分型付けを型ヒントで表現する
    クリックして解説を表示
    EXPLANATION

    Protocolは構造的部分型付け(ダックタイピング)を型ヒントで表現します。

  • Q74

    Literal型の用途は何ですか?

    ANSWER
    特定のリテラル値のみを許容する型を定義する
    クリックして解説を表示
    EXPLANATION

    Literalは特定のリテラル値のみを許容する型を定義します。

  • Q75

    Final型の用途は何ですか?

    ANSWER
    変数が再代入されないことを示す
    クリックして解説を表示
    EXPLANATION

    Finalは変数が再代入されないことを示し、定数として扱います。

  • Q76

    TypedDictの用途は何ですか?

    ANSWER
    特定のキーと型を持つ辞書の型を定義する
    クリックして解説を表示
    EXPLANATION

    TypedDictは特定のキーと型を持つ辞書の型を定義します。

  • Q77

    Genericクラスの用途は何ですか?

    ANSWER
    ジェネリッククラスを定義する基底クラス
    クリックして解説を表示
    EXPLANATION

    Genericはジェネリッククラスを定義するための基底クラスです。

  • Q78

    overloadデコレータの用途は何ですか?

    ANSWER
    同じ関数に複数のシグネチャを型ヒントで定義する
    クリックして解説を表示
    EXPLANATION

    @overloadは同じ関数に複数のシグネチャを型ヒントとして定義します。

  • Q79

    ParamSpecの用途は何ですか?

    ANSWER
    関数の引数の型を保持する
    クリックして解説を表示
    EXPLANATION

    ParamSpecはデコレータなどで関数の引数の型を保持するために使用します。

  • Q80

    match文(Python 3.10+)の用途は何ですか?

    ANSWER
    構造的パターンマッチングを行う
    クリックして解説を表示
    EXPLANATION

    match文は構造的パターンマッチングを提供し、値の構造に基づいて分岐します。

STAGE 9
8188問目 • 8
  • Q81

    match文のガード条件とは何ですか?

    ANSWER
    パターンマッチ後に追加条件を指定する
    クリックして解説を表示
    EXPLANATION

    ガード条件はif句を使ってパターンマッチ後に追加の条件を指定します。

  • Q82

    walrus operator:=)の用途は何ですか?

    ANSWER
    式の中で代入しながら値を使用する
    クリックして解説を表示
    EXPLANATION

    :=は代入式で、式の中で変数に代入しながらその値を使用できます。

  • Q83

    次のコードの意味は何ですか?

    if (n := len(data)) > 10:
        print(f"大きい: {n}")
    ANSWER
    lenの結果をnに代入しながら条件判定
    クリックして解説を表示
    EXPLANATION

    len(data)の結果をnに代入しながら10より大きいか判定しています。

  • Q84

    slots=True@dataclassに指定する効果は何ですか?

    ANSWER
    __slots__を自動生成してメモリを削減
    クリックして解説を表示
    EXPLANATION

    slots=Trueでデータクラスに__slots__を自動生成し、メモリ使用量を削減します。

  • Q85

    frozen=True@dataclassに指定する効果は何ですか?

    ANSWER
    インスタンスをイミュータブルにする
    クリックして解説を表示
    EXPLANATION

    frozen=Trueでデータクラスをイミュータブル(変更不可)にします。

  • Q86

    @dataclassfield()関数の用途は何ですか?

    ANSWER
    フィールドの詳細設定を行う
    クリックして解説を表示
    EXPLANATION

    field()でフィールドのデフォルト値、デフォルトファクトリ、メタデータなどを詳細に設定します。

  • Q87

    ExceptionGroup(Python 3.11+)とは何ですか?

    ANSWER
    複数の例外を同時に発生させる
    クリックして解説を表示
    EXPLANATION

    ExceptionGroupは複数の例外をグループ化して同時に発生させることができます。

  • Q88

    except*構文(Python 3.11+)の用途は何ですか?

    ANSWER
    ExceptionGroupから特定の例外を選択処理する
    クリックして解説を表示
    EXPLANATION

    except*ExceptionGroupから特定の例外を選択的に処理します。