- Q1
ジェネレータとは何ですか?
ANSWERyieldを使って値を1つずつ生成するイテレータクリックして解説を表示EXPLANATIONジェネレータは
yieldを使って値を1つずつ生成するイテレータを作成する関数です。メモリ効率が良いです。 - Q2
ジェネレータ関数で値を返すキーワードはどれですか?
ANSWERyieldクリックして解説を表示EXPLANATIONyieldキーワードで値を返し、次回呼び出し時にその位置から再開します。 - Q3
次のコードを実行すると何が表示されますか?
def gen(): yield 1 yield 2 yield 3 for x in gen(): print(x)ANSWER1, 2, 3(順に表示)クリックして解説を表示EXPLANATIONジェネレータは
yieldごとに値を返し、1, 2, 3が順に表示されます。 - Q4
ジェネレータ式の正しい書き方はどれですか?
ANSWER(x for x in range(10))クリックして解説を表示EXPLANATIONジェネレータ式は丸括弧
()で囲みます。リスト内包表記の[]との違いに注意。 - Q5
ジェネレータのメリットは何ですか?
ANSWERメモリ効率が良いクリックして解説を表示EXPLANATIONジェネレータは必要なときに値を生成するため、大量のデータを扱う際にメモリを節約できます。
- Q6
イテレータプロトコルで必要なメソッドはどれですか?
ANSWERiter__と__nextクリックして解説を表示EXPLANATIONイテレータは
__iter__と__next__メソッドを実装する必要があります。 - Q7
イテレータが終了したときに発生する例外はどれですか?
ANSWERStopIterationクリックして解説を表示EXPLANATIONStopIteration例外でイテレータの終了を通知します。 - Q8
yield fromの用途は何ですか?ANSWER別のイテレータに委譲するクリックして解説を表示EXPLANATIONyield fromは別のイテレータの全要素を委譲(delegate)して返します。 - Q9
コンテキストマネージャとは何ですか?
ANSWERwith文でリソースの確保と解放を自動化する仕組みクリックして解説を表示EXPLANATIONコンテキストマネージャは
with文で使用し、リソースの確保と解放を自動化します。 - Q10
コンテキストマネージャで必要なメソッドはどれですか?
ANSWERenter__と__exitクリックして解説を表示EXPLANATION__enter__と__exit__メソッドを実装します。
- Q11
コンテキストマネージャを簡単に作成するデコレータはどれですか?
ANSWER@contextmanagerクリックして解説を表示EXPLANATION@contextmanagerデコレータでジェネレータ関数からコンテキストマネージャを作成できます。 - Q12
次のコードの
__exit__メソッドの引数は何を表しますか?def __exit__(self, exc_type, exc_val, exc_tb):ANSWER例外の型、値、トレースバッククリックして解説を表示EXPLANATION例外の型、値、トレースバックを受け取ります。例外がなければすべてNoneです。
- Q13
マルチスレッドを実現するモジュールはどれですか?
ANSWERthreadingクリックして解説を表示EXPLANATIONthreadingモジュールでマルチスレッド処理を実現します。 - Q14
マルチプロセスを実現するモジュールはどれですか?
ANSWERmultiprocessingクリックして解説を表示EXPLANATIONmultiprocessingモジュールでマルチプロセス処理を実現します。GILの制約を回避できます。 - Q15
GIL(Global Interpreter Lock)とは何ですか?
ANSWER一度に1スレッドのみがPythonコードを実行できるロッククリックして解説を表示EXPLANATIONGILはCPythonで一度に1つのスレッドのみがPythonコードを実行できるようにするロックです。
- Q16
GILの影響を回避するのに適した方法はどれですか?
ANSWERマルチプロセスクリックして解説を表示EXPLANATIONCPU集約的な処理ではマルチプロセスを使うことでGILの影響を回避できます。
- Q17
スレッドセーフなキューを提供するモジュールはどれですか?
ANSWERqueueクリックして解説を表示EXPLANATIONqueueモジュールでスレッドセーフなキューを使用できます。 - Q18
排他制御に使うオブジェクトはどれですか?
ANSWERthreading.Lockクリックして解説を表示EXPLANATIONthreading.Lockで排他制御を行い、複数スレッドの競合を防ぎます。 - Q19
async/awaitを使った非同期プログラミングのモジュールはどれですか?
ANSWERasyncioクリックして解説を表示EXPLANATIONasyncioモジュールで非同期I/Oを実現します。 - Q20
非同期関数を定義するキーワードはどれですか?
ANSWERasync defクリックして解説を表示EXPLANATIONasync defで非同期関数(コルーチン)を定義します。
- Q21
非同期関数内で結果を待つキーワードはどれですか?
ANSWERawaitクリックして解説を表示EXPLANATIONawaitで非同期処理の完了を待ちます。async def関数内でのみ使用可能です。 - Q22
非同期関数を実行する方法はどれですか?
ANSWERasyncio.run()クリックして解説を表示EXPLANATIONasyncio.run()で非同期関数(コルーチン)を実行します。 - Q23
複数の非同期タスクを並行実行する関数はどれですか?
ANSWERasyncio.gather()クリックして解説を表示EXPLANATIONasyncio.gather()で複数のコルーチンを並行実行します。 - Q24
メタクラスとは何ですか?
ANSWERクラスを作成するクラスクリックして解説を表示EXPLANATIONメタクラスは「クラスのクラス」で、クラスの作成をカスタマイズできます。
- Q25
メタクラスを指定する方法はどれですか?
ANSWERmetaclass=Metaクリックして解説を表示EXPLANATIONclass クラス名(metaclass=メタクラス):の形式で指定します。 - Q26
すべてのクラスのデフォルトのメタクラスはどれですか?
ANSWERtypeクリックして解説を表示EXPLANATIONtypeがすべてのクラスのデフォルトのメタクラスです。 - Q27
型ヒントを使って関数の引数と戻り値の型を指定する書き方はどれですか?
ANSWERdef func(arg: type) -> return_type:クリックして解説を表示EXPLANATIONdef func(arg: type) -> return_type:の形式で型ヒントを指定します。 - Q28
型ヒントでリストの要素の型を指定する書き方はどれですか?
ANSWERlist[int]クリックして解説を表示EXPLANATIONlist[int]またはList[int](typing使用)でリストの要素の型を指定します。 - Q29
複数の型を許容する型ヒントの書き方はどれですか?
ANSWERUnion[int, str]クリックして解説を表示EXPLANATIONUnion[int, str]またはint | str(Python 3.10+)で複数の型を許容します。 - Q30
Noneを許容する型ヒントの書き方はどれですか?
ANSWEROptional[type]クリックして解説を表示EXPLANATIONOptional[type]またはtype | None(Python 3.10+)でNoneを許容します。
- Q31
静的型チェックを行うツールはどれですか?
ANSWERmypyクリックして解説を表示EXPLANATIONmypyは型ヒントに基づいて静的型チェックを行うツールです。 - Q32
TypeVarの用途は何ですか?ANSWERジェネリック型を定義するクリックして解説を表示EXPLANATIONTypeVarはジェネリック型を定義するために使用します。 - 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
シングルトンパターンを実装するのに適したメソッドはどれですか?
ANSWERnewクリックして解説を表示EXPLANATION__new__をオーバーライドして同じインスタンスを返すことでシングルトンを実装できます。 - Q40
weakrefモジュールの用途は何ですか?ANSWER弱い参照を作成するクリックして解説を表示EXPLANATIONweakrefは弱い参照を作成し、オブジェクトがガベージコレクションされるのを妨げません。
- Q41
弱い参照が有用なケースはどれですか?
ANSWERキャッシュなど解放可能なオブジェクトクリックして解説を表示EXPLANATIONキャッシュなど、メモリが足りなくなったら解放されても良いオブジェクトを保持する場合に有用です。
- Q42
ガベージコレクションを手動で実行する関数はどれですか?
ANSWERgc.collect()クリックして解説を表示EXPLANATIONgc.collect()でガベージコレクションを手動で実行できます。 - Q43
循環参照とは何ですか?
ANSWERオブジェクトが互いに参照し合う状態クリックして解説を表示EXPLANATION循環参照はオブジェクトが互いに参照し合い、参照カウントが0にならない状態です。
- Q44
copyモジュールのcopy()とdeepcopy()の違いは何ですか?ANSWERcopyは浅いコピー、deepcopyは深いコピークリックして解説を表示EXPLANATIONcopy()は浅いコピー(参照を共有)、deepcopy()は深いコピー(再帰的にコピー)を作成します。 - Q45
pickleモジュールの用途は何ですか?ANSWERオブジェクトをバイト列にシリアライズするクリックして解説を表示EXPLANATIONpickleはPythonオブジェクトをバイト列にシリアライズ/デシリアライズします。 - Q46
pickleのセキュリティ上の注意点は何ですか?ANSWER信頼できないデータのデシリアライズは危険クリックして解説を表示EXPLANATION信頼できないソースからのpickleデータは任意のコードを実行される可能性があり危険です。
- Q47
structモジュールの用途は何ですか?ANSWERバイナリデータとPython値を相互変換するクリックして解説を表示EXPLANATIONstructはPythonの値とCの構造体(バイナリデータ)を相互変換します。 - Q48
C拡張モジュールを作成するのに使うライブラリはどれですか?
ANSWERctypes / Cythonクリックして解説を表示EXPLANATIONctypesやCythonでCライブラリを呼び出したり、C拡張を作成できます。 - Q49
inspectモジュールの用途は何ですか?ANSWER関数やクラスの情報を取得するクリックして解説を表示EXPLANATIONinspectモジュールで関数やクラスの情報(引数、ソースコードなど)を取得できます。 - Q50
関数の引数情報を取得する関数はどれですか?
ANSWERinspect.signature()クリックして解説を表示EXPLANATIONinspect.signature()で関数のシグネチャ(引数情報)を取得できます。
- Q51
astモジュールの用途は何ですか?ANSWERソースコードを抽象構文木として解析するクリックして解説を表示EXPLANATIONastモジュールでPythonソースコードを抽象構文木として解析・操作できます。 - Q52
exec()とeval()の違いは何ですか?ANSWERexecは文を実行、evalは式を評価して値を返すクリックして解説を表示EXPLANATIONexec()は文(statement)を実行し、eval()は式(expression)を評価して値を返します。 - Q53
exec()やeval()のセキュリティ上の注意点は何ですか?ANSWER信頼できない入力は任意のコードを実行される危険クリックして解説を表示EXPLANATION信頼できない入力を
exec()やeval()に渡すと任意のコードが実行され危険です。 - Q54
__import__()関数の用途は何ですか?ANSWER動的にモジュールをインポートするクリックして解説を表示EXPLANATION__import__()で動的にモジュールをインポートできます。通常はimportlibの使用が推奨されます。 - Q55
importlibモジュールの用途は何ですか?ANSWER動的インポートやモジュールリロードを行うクリックして解説を表示EXPLANATIONimportlibは動的インポートやモジュールのリロードなど、インポートシステムに関する機能を提供します。 - Q56
モジュールをリロードする関数はどれですか?
ANSWERimportlib.reload()クリックして解説を表示EXPLANATIONimportlib.reload()でモジュールをリロードできます。 - Q57
パッケージの
__init__.pyファイルの役割は何ですか?ANSWERパッケージであることを示し初期化するクリックして解説を表示EXPLANATION__init__.pyはディレクトリがパッケージであることを示し、パッケージの初期化コードを含みます。 - Q58
sys.pathとは何ですか?ANSWERモジュールを検索するディレクトリのリストクリックして解説を表示EXPLANATIONsys.pathはPythonがモジュールを検索するディレクトリのリストです。 - Q59
デコレータをネスト(複数適用)した場合の適用順序はどうなりますか?
ANSWER下から上クリックして解説を表示EXPLANATIONデコレータは下から上に適用されます(最も関数に近いものが最初)。
- Q60
functools.wrapsデコレータの用途は何ですか?ANSWERラップされた関数のメタデータを保持するクリックして解説を表示EXPLANATION@functools.wrapsはラップされた関数のメタデータ(名前、ドキュメントなど)を保持します。
- Q61
クラスデコレータとは何ですか?
ANSWERクラスを受け取って変更するデコレータクリックして解説を表示EXPLANATIONクラスデコレータはクラスを受け取って変更または置換したクラスを返すデコレータです。
- Q62
引数を取るデコレータを作成するにはどうしますか?
ANSWERデコレータを返す関数(ファクトリ)を作成するクリックして解説を表示EXPLANATIONデコレータファクトリ(デコレータを返す関数)を作成し、引数を受け取ってデコレータを返します。
- Q63
concurrent.futuresモジュールの用途は何ですか?ANSWER非同期実行の高レベルインターフェースを提供するクリックして解説を表示EXPLANATIONconcurrent.futuresは非同期実行のための高レベルインターフェースを提供します。 - Q64
ThreadPoolExecutorとProcessPoolExecutorの違いは何ですか?ANSWERThreadPoolはスレッド、ProcessPoolはプロセスを使用クリックして解説を表示EXPLANATIONThreadPoolExecutorはスレッドプール、ProcessPoolExecutorはプロセスプールを使用します。 - Q65
Futureオブジェクトとは何ですか?ANSWER非同期操作の結果を表すオブジェクトクリックして解説を表示EXPLANATIONFutureは非同期操作の結果を表し、完了時に結果を取得できます。 - Q66
Executor.submit()とExecutor.map()の違いは何ですか?ANSWERsubmitは単一タスク、mapは複数引数に適用クリックして解説を表示EXPLANATIONsubmit()は単一のタスクを投入しFutureを返し、map()は複数の引数に関数を適用します。 - Q67
asyncio.Queueの用途は何ですか?ANSWER非同期タスク間でデータを受け渡すキュークリックして解説を表示EXPLANATIONasyncio.Queueは非同期タスク間でデータを受け渡すためのキューです。 - Q68
asyncio.Semaphoreの用途は何ですか?ANSWER同時実行タスク数を制限するクリックして解説を表示EXPLANATIONSemaphoreは同時に実行できるタスクの数を制限します。 - Q69
asyncio.create_task()の用途は何ですか?ANSWERコルーチンをTaskとしてスケジュールするクリックして解説を表示EXPLANATIONcreate_task()はコルーチンをTaskとしてスケジュールし、並行実行できるようにします。 - Q70
非同期コンテキストマネージャを定義するメソッドはどれですか?
ANSWERaenter__と__aexitクリックして解説を表示EXPLANATION__aenter__と__aexit__で非同期コンテキストマネージャを定義します。
- Q71
非同期イテレータを定義するメソッドはどれですか?
ANSWERaiter__と__anextクリックして解説を表示EXPLANATION__aiter__と__anext__で非同期イテレータを定義します。 - Q72
非同期ジェネレータの特徴は何ですか?
ANSWERasync def内でyieldを使いasync forで反復クリックして解説を表示EXPLANATION非同期ジェネレータは
async def内でyieldを使い、async forで反復処理します。 - Q73
Protocolクラスの用途は何ですか?ANSWER構造的部分型付けを型ヒントで表現するクリックして解説を表示EXPLANATIONProtocolは構造的部分型付け(ダックタイピング)を型ヒントで表現します。 - Q74
Literal型の用途は何ですか?ANSWER特定のリテラル値のみを許容する型を定義するクリックして解説を表示EXPLANATIONLiteralは特定のリテラル値のみを許容する型を定義します。 - Q75
Final型の用途は何ですか?ANSWER変数が再代入されないことを示すクリックして解説を表示EXPLANATIONFinalは変数が再代入されないことを示し、定数として扱います。 - Q76
TypedDictの用途は何ですか?ANSWER特定のキーと型を持つ辞書の型を定義するクリックして解説を表示EXPLANATIONTypedDictは特定のキーと型を持つ辞書の型を定義します。 - Q77
Genericクラスの用途は何ですか?ANSWERジェネリッククラスを定義する基底クラスクリックして解説を表示EXPLANATIONGenericはジェネリッククラスを定義するための基底クラスです。 - Q78
overloadデコレータの用途は何ですか?ANSWER同じ関数に複数のシグネチャを型ヒントで定義するクリックして解説を表示EXPLANATION@overloadは同じ関数に複数のシグネチャを型ヒントとして定義します。 - Q79
ParamSpecの用途は何ですか?ANSWER関数の引数の型を保持するクリックして解説を表示EXPLANATIONParamSpecはデコレータなどで関数の引数の型を保持するために使用します。 - Q80
match文(Python 3.10+)の用途は何ですか?ANSWER構造的パターンマッチングを行うクリックして解説を表示EXPLANATIONmatch文は構造的パターンマッチングを提供し、値の構造に基づいて分岐します。
- Q81
match文のガード条件とは何ですか?ANSWERパターンマッチ後に追加条件を指定するクリックして解説を表示EXPLANATIONガード条件は
if句を使ってパターンマッチ後に追加の条件を指定します。 - Q82
walrus operator(:=)の用途は何ですか?ANSWER式の中で代入しながら値を使用するクリックして解説を表示EXPLANATION:=は代入式で、式の中で変数に代入しながらその値を使用できます。 - Q83
次のコードの意味は何ですか?
if (n := len(data)) > 10: print(f"大きい: {n}")ANSWERlenの結果をnに代入しながら条件判定クリックして解説を表示EXPLANATIONlen(data)の結果をnに代入しながら10より大きいか判定しています。 - Q84
slots=Trueを@dataclassに指定する効果は何ですか?ANSWER__slots__を自動生成してメモリを削減クリックして解説を表示EXPLANATIONslots=Trueでデータクラスに__slots__を自動生成し、メモリ使用量を削減します。 - Q85
frozen=Trueを@dataclassに指定する効果は何ですか?ANSWERインスタンスをイミュータブルにするクリックして解説を表示EXPLANATIONfrozen=Trueでデータクラスをイミュータブル(変更不可)にします。 - Q86
@dataclassのfield()関数の用途は何ですか?ANSWERフィールドの詳細設定を行うクリックして解説を表示EXPLANATIONfield()でフィールドのデフォルト値、デフォルトファクトリ、メタデータなどを詳細に設定します。 - Q87
ExceptionGroup(Python 3.11+)とは何ですか?ANSWER複数の例外を同時に発生させるクリックして解説を表示EXPLANATIONExceptionGroupは複数の例外をグループ化して同時に発生させることができます。 - Q88
except*構文(Python 3.11+)の用途は何ですか?ANSWERExceptionGroupから特定の例外を選択処理するクリックして解説を表示EXPLANATIONexcept*はExceptionGroupから特定の例外を選択的に処理します。