Python 3 エンジニア認定基礎試験 想定問題集
仮想環境と対話環境の要点整理と想定問題
公式の出題範囲の「12章 仮想環境とパッケージ/14章 対話環境での入力行編集とヒストリ置換」にあたる分野です。まず要点整理で全体をつかみ、下の演習で 25 問を 1 問ずつ解けます。答えると A〜D すべての解説が出ます。
この分野の小項目
- 12.1 仮想環境の目的(4 問) アプリケーションごとに必要なライブラリやそのバージョンが異なり、1 つの Python 環境では要件を満たせない場合がある。その解決策が、特定バージョンの Python と追加パッケージを入れた独立したディレクトリツリーである仮想環境。
- 12.2 venv による仮想環境の作成と有効化(6 問) 仮想環境の作成と管理には venv モジュールを使う(例: python -m venv tutorial-env)。Windows では Scripts\activate、Unix や macOS では source tutorial-env/bin/activate で有効化し、シェルのプロンプトに環境名が表示される。deactivate で無効にする。
- 12.3 pip によるパッケージ管理(6 問) pip で Python Package Index(PyPI)からパッケージをインストール・アップグレード・削除する。バージョンを指定してのインストール、install --upgrade、uninstall、show、list がある。pip freeze はインストール済みパッケージを requirements.txt の形式で出力し、install -r requirements.txt でまとめて入れられる。
- 14.1 タブ補完と履歴編集(5 問) 対話インタープリタでは、起動時に変数名やモジュール名の補完が自動で有効になり、Tab キーで補完できる。. を含む式では属性名を補完する。入力の履歴はユーザーのディレクトリの .python_history ファイルに保存され、次の対話セッションでも使える。
- 14.2 対話的インタープリタの代替(4 問) 標準の対話インタープリタより高機能な代替として、タブ補完やオブジェクトの調査、高度な履歴管理を備えた IPython や、bpython が紹介されている。
要点整理
仮想環境の目的
仮想環境の目的:アプリごとに必要な版を分ける
Python のアプリは、標準ライブラリに無いパッケージをよく使います。特定のバグ修正が必要だったり、古いインターフェイスに頼っていたりして、決まったバージョンを要求することもあります。
そのため 1 つの Python 環境では、すべてのアプリの要求を満たせないことがあります。アプリ A があるライブラリの 1.0 を、アプリ B が 2.0 を必要とすると、どちらを入れてももう一方が動きません。
解決策が仮想環境です。仮想環境は、特定のバージョンの Python といくつかの追加パッケージを入れた、自己完結したディレクトリツリーです。
アプリごとに別の仮想環境を作り、A の環境には 1.0、B の環境には 2.0 を入れれば衝突しません。B の環境でライブラリを 3.0 に上げても、A の環境には影響しません。
名前の似たものを取り違えないようにしておきます。仮想環境は OS ごと動かす仮想マシンとは違い、パッケージの置き場所を分ける仕組みです。venv は仮想環境を作るモジュール、pip はパッケージを入れるプログラム、PyPI はパッケージが公開されている索引です。
venv による仮想環境の作成と有効化
venv で作り、activate で有効、deactivate で無効
仮想環境は標準の venv モジュールで作ります。python -m venv tutorial-env のように、作るディレクトリのパスを渡して実行します。ディレクトリが無ければ作られ、中に Python インタープリタのコピーなどが置かれます。Python が複数あるときは、使いたい版の Python で venv を実行します。
ディレクトリ名には .venv がよく使われます。通常はシェルで隠れて邪魔にならず、用途の分かる名前になり、一部のツールが使う .env ファイルとの衝突も避けられます。
作った環境は activate スクリプトで有効にします。Windows は tutorial-env\Scripts\activate、Unix や macOS は source tutorial-env/bin/activate です。bin/activate は bash 用で、csh や fish では activate.csh や activate.fish を使います。
有効にすると、シェルのプロンプトに (tutorial-env) のように環境名が付き、python でその環境の Python が起動します。使い終わったら deactivate で無効にします。
チュートリアルの例では、有効にした後の sys.path に、仮想環境の中の site-packages が入っています。現行の Web 版は、有効にしても環境変数 PYTHONPATH は変わらないと注意しています。仮想環境の版と合わないコードへのパスが残っていると、思わぬ動きになることがあります。
| やりたいこと | コマンド |
|---|---|
| 作る | python -m venv tutorial-env |
| 有効にする(Windows) | tutorial-env\Scripts\activate |
| 有効にする(Unix・macOS の bash) | source tutorial-env/bin/activate |
| 有効にする(fish・csh) | source tutorial-env/bin/activate.fish など |
| 無効にする | deactivate |
pip によるパッケージ管理
pip のサブコマンド:install・show・list・freeze を目的で選ぶ
pip はパッケージのインストール・アップグレード・削除を行うプログラムです。既定では PyPI(Python Package Index)からパッケージを取得します。チュートリアルでは python -m pip の形で使っています。
python -m pip install パッケージ名 で最新版が入ります。requests==2.6.0 のように == で版をちょうど指定でき、同じ版が入っていれば何もしません。別の版を指定すればその版が入ります。--upgrade を付けると最新版に更新されます。
uninstall はパッケージを削除し、show は 1 つのパッケージの版や置き場所などの情報を、list は入っているパッケージの一覧を表示します。
freeze は、pip install が読める形式でインストール済みのパッケージを書き出します。python -m pip freeze > requirements.txt として保存するのが一般的です。requirements.txt はバージョン管理に入れてアプリと一緒に配れます。受け取った人は python -m pip install -r requirements.txt で同じパッケージをまとめて入れられます。
pip で入れたパッケージは、そのとき有効にしている仮想環境の中に入ります。uninstall で消えるのも、その環境の中のパッケージです。別の環境に入れてしまわないよう、プロンプトに出る環境名を確かめてから実行すると安心です。
| 目的 | コマンド(python -m pip の後) |
|---|---|
| 最新版を入れる | install requests |
| 版を指定して入れる | install requests==2.6.0 |
| 最新版に更新する | install --upgrade requests |
| 削除する | uninstall requests |
| 1 つの詳しい情報を見る | show requests |
| 入っているものを一覧する | list |
| install が読める形式で書き出す | freeze > requirements.txt |
| 一覧からまとめて入れる | install -r requirements.txt |
タブ補完と履歴編集
タブ補完と履歴:起動時から有効、履歴は .python_history
対話インタープリタの入力行の編集と履歴置換は、GNU Readline ライブラリで実装されています。Korn シェルや GNU Bash の機能に似ています。
変数名とモジュール名のタブ補完は、インタープリタの起動時に自動で有効になります。Tab キーを押すと、文のキーワード、今のローカル変数、使えるモジュール名から候補を探します。
string.a のようにドットを含む式では、最後の '.' までの式を評価し、その結果のオブジェクトの属性から候補を出します。そのため __getattr__() を持つオブジェクトが式にあると、アプリで定義したコードが実行されることがあります。
履歴は、既定ではユーザーのディレクトリの .python_history というファイルに保存されます。次の対話セッションでも呼び出せます。
補完と履歴は対話モードで入力するときの機能です。python ファイル名 でスクリプトを動かすときには関係しません。
出典: Python チュートリアル 14 対話入力編集とヒストリ置換/Python チュートリアル 14.1 タブ補完と履歴編集
対話的インタープリタの代替
対話的インタープリタの代替:IPython と bpython
チュートリアルは、今の対話インタープリタは昔の版より大きく進歩したとしつつ、まだ残る要望も挙げています。行を続けるときに正しいインデントを示すこと、補完にインタープリタのシンボルテーブルを使うこと、括弧や引用符の対応を調べるコマンドです。
より優れた代替の 1 つとして紹介されているのが IPython です。タブ補完、オブジェクトの調査、高度な履歴管理を備え、カスタマイズしたり他のアプリに組み込んだりもできます。
もう 1 つ、別の優れた対話環境として bpython が挙げられています。
14 章は、標準のインタープリタの便利な機能と、より高機能な代替を紹介する短い章です。補完と履歴(14.1)、代替の対話環境(14.2)の 2 つに分けて覚えると整理しやすくなります。
| 名前 | チュートリアルでの紹介 |
|---|---|
| IPython | タブ補完・オブジェクトの調査・高度な履歴管理。カスタマイズや他のアプリへの組み込みもできる |
| bpython | 別の優れた対話環境 |
演習(25 問)
結果はこのブラウザに保存され、ハブの「自分の成績」と弱点モードに使われます。
第 1 問 / 25 問
問題を読み込んでいます…
全問と解説の一覧
正解と解説は折りたたんであります。先に自分で考えてから開いてください。
全 25 問
仮想環境の目的
チュートリアルが説明する仮想環境とはどんなものか?
A. Python と追加パッケージを入れた独立したディレクトリ B. 仮想マシンの上で別の OS を丸ごと動かす仕組み C. インターネット上で Python のコードを実行するサービス D. パッケージを公開するための索引サイト
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? ディレクトリの中に Python とパッケージをまとめたものです。 仮想環境は、特定のバージョンの Python といくつかの追加パッケージを含む自己完結したディレクトリツリーである。 【B(不正解)】 ? OS ごと別に動かす仕組みです。 Python の仮想環境は OS を動かすものではなく、パッケージの置き場所を分ける仕組みである。 【C(不正解)】 ? ネットワーク越しに使うサービスです。 仮想環境は手元のディレクトリに作るもので、ネット上のサービスではない。 【D(不正解)】 ? パッケージを集めて公開している場所です。 パッケージを公開している索引は PyPI で、仮想環境とは別のものである。
同じ PC でアプリ A はあるライブラリの 1.0 を、アプリ B は 2.0 を必要としている。両方を動かすための方法として最も適切なものは?
A. PC 全体の Python に 2.0 を入れ、A のコードを書き換える B. アプリごとに仮想環境を作り、別々の版を入れる C. 1.0 と 2.0 を同じ環境に続けてインストールする D. A を動かすたびに 1.0 を入れ直し、B のときは 2.0 に戻す
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 1 つの環境に合わせて片方を直す方法です。 A が 1.0 を必要とする理由(古い仕様への依存など)があれば、2.0 では動かない。 【B(正解)】 ? アプリごとに置き場所を分ける方法です。 それぞれの仮想環境に別のバージョンを入れれば、要求が衝突しない。 【C(不正解)】 ? 2 つの版を 1 か所に入れる方法です。 1 つの環境には同じパッケージの 1 つのバージョンしか入らない。後から入れた版に置き換わる。 【D(不正解)】 ? 使うたびに入れ替える方法です。 動かせなくはないが手間が大きく、両方を同時には使えない。チュートリアルの解決策は仮想環境である。
アプリ A 用とアプリ B 用に別々の仮想環境を作った。B の環境でライブラリを 3.0 に更新したとき、A の環境はどうなる?
A. A の環境も自動で 3.0 に更新される B. A の環境のライブラリは削除される C. A の環境には影響しない D. A の環境は使えなくなり、作り直しが必要になる
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 環境どうしが連動する、という考えです。 仮想環境はそれぞれ独立したディレクトリなので、連動して更新されることはない。 【B(不正解)】 ? 古い版が片付けられる、という考えです。 別の環境の操作で A のパッケージが消えることはない。 【C(正解)】 ? 環境どうしが切り離されている、という考えです。 チュートリアルの例のとおり、B の環境でライブラリを 3.0 に更新しても A の環境には影響しない。 【D(不正解)】 ? 環境が壊れる、という考えです。 環境は互いに独立しているため、B の更新で A が壊れることはない。
あるアプリが、特定のバグ修正の入った古いバージョンのライブラリを必要としている。仮想環境が役立つ理由として最も適切なものは?
A. 仮想環境を使うと、ライブラリの古い版のバグが自動で直るから B. 仮想環境では最新版しか入らないので、版の違いを気にしなくてよいから C. 仮想環境を使うと標準ライブラリが不要になるから D. アプリ専用の環境に必要な版を入れ、他と分けられるから
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? バグ修正を自動で取り込む、という考えです。 仮想環境はライブラリの中身を直すものではなく、使う版を環境ごとに分ける仕組みである。 【B(不正解)】 ? 常に最新版にそろう、という考えです。 仮想環境でも pip で版を指定して入れられる。最新版に限られるわけではない。 【C(不正解)】 ? 標準ライブラリの扱いについての考えです。 仮想環境の目的は追加パッケージの版を分けることで、標準ライブラリを不要にするものではない。 【D(正解)】 ? アプリごとに必要な版を持てる、という考えです。 1 つの Python 環境では全アプリの要求を満たせないことがある。アプリ専用の仮想環境なら必要な版を入れられる。
venv による仮想環境の作成と有効化
標準の venv モジュールで tutorial-env という仮想環境を作りたい。チュートリアルどおりのコマンドは?
A. python -m pip install tutorial-env B. python -m venv tutorial-env C. pip freeze tutorial-env D. source tutorial-env
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? パッケージを入れるコマンドです。 これは tutorial-env という名前のパッケージを PyPI から入れようとするコマンドで、仮想環境は作られない。 【B(正解)】 ? venv モジュールをスクリプトとして動かすコマンドです。 仮想環境は venv モジュールを -m で実行し、作るディレクトリのパスを渡して作る。 【C(不正解)】 ? 入っているパッケージを書き出すコマンドです。 pip freeze はインストール済みパッケージの一覧を出すもので、環境は作らない。 【D(不正解)】 ? シェルにスクリプトを読み込ませるコマンドです。 source は作った後の環境を有効にするときに bin/activate と組み合わせて使う。作成には使わない。
macOS の bash で、作成済みの仮想環境 tutorial-env を有効にしたい。正しいコマンドは?
A. tutorial-env\Scripts\activate B. python -m venv activate tutorial-env C. source tutorial-env/bin/activate D. pip activate tutorial-env
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? Scripts フォルダのスクリプトを直接動かす形です。 これは Windows で使う形。Unix や macOS では bin/activate を source で読み込む。 【B(不正解)】 ? venv モジュールに引数を渡す形です。 この形では activate という名前の環境を作ろうとしてしまい、有効化にはならない。 【C(正解)】 ? bin フォルダのスクリプトをシェルに読み込ませる形です。 Unix や macOS の bash では source tutorial-env/bin/activate で有効にする。 【D(不正解)】 ? pip のサブコマンドとして実行する形です。 pip に activate というサブコマンドは無い。有効化は activate スクリプトで行う。
仮想環境を有効にして作業を終えた。シェルを閉じずに仮想環境だけを無効にするコマンドは?
A. exit() B. pip uninstall venv C. python -m venv --off D. deactivate
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 対話インタープリタを終える書き方です。 exit() は Python の対話モードを終えるもので、シェルの仮想環境を無効にはしない。 【B(不正解)】 ? パッケージを削除するコマンドです。 venv は標準モジュールで、pip で削除して無効にするものではない。 【C(不正解)】 ? venv モジュールにオプションを渡す形です。 チュートリアルが示す無効化の方法は deactivate コマンドである。 【D(正解)】 ? 有効化を取り消すためのコマンドです。 仮想環境を無効にするには deactivate と入力する。
プロジェクトの仮想環境のディレクトリ名に .venv がよく使われる。チュートリアルが挙げる理由は?
A. venv モジュールは .venv という名前しか受け付けないから B. シェルで隠れ、.env ファイルとの衝突も避けられるから C. 名前の先頭にドットを付けると処理が速くなるから D. PyPI にアップロードするときに必要な名前だから
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 名前が決め打ちだという考えです。 名前は自由に決められる。チュートリアルの例でも tutorial-env を使っている。 【B(正解)】 ? 先頭のドットと、似た名前のファイルに注目した考えです。 .venv は通常シェルで隠れ、用途の分かる名前にもなる。一部のツールが使う .env ファイルとの衝突も防げる。 【C(不正解)】 ? 実行の速さについての考えです。 ディレクトリ名が実行速度に影響することはない。 【D(不正解)】 ? パッケージの公開に関わる考えです。 仮想環境はパッケージの公開とは関係がない。
Linux でシェルに fish を使っている。仮想環境 tutorial-env を有効にするために読み込むスクリプトは?
A. tutorial-env/bin/activate.fish B. tutorial-env/bin/activate C. tutorial-env\Scripts\activate D. tutorial-env/bin/deactivate.fish
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? fish 用に用意されたスクリプトです。 bin/activate は bash 用。csh や fish では activate.csh や activate.fish を使う。 【B(不正解)】 ? bash 向けの標準のスクリプトです。 このスクリプトは bash 用に書かれているので、fish ではそのまま使えない。 【C(不正解)】 ? Windows 向けの場所にあるスクリプトです。 Scripts フォルダは Windows の場合の場所で、Linux では bin を使う。 【D(不正解)】 ? 有効化を取り消すための名前を付けたスクリプトです。 有効にするのは activate 系のスクリプトで、無効にするときは deactivate コマンドを使う。
仮想環境 tutorial-env を有効にした後、同じシェルで python を起動した。この状態の説明として最も適切なものは?
A. PC 全体に入っている Python が起動し、仮想環境は使われない B. プロンプトは変わらず、pip だけが仮想環境を使う C. PYTHONPATH が自動で仮想環境用に書き換えられる D. プロンプトに環境名が付き、その環境の Python が動く
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 有効化しても python コマンドは変わらない、という考えです。 有効化するとシェルの環境が変わり、python でその仮想環境の Python が動くようになる。 【B(不正解)】 ? pip だけが切り替わる、という考えです。 有効化するとプロンプトに環境名が付き、python も仮想環境のものに切り替わる。 【C(不正解)】 ? 環境変数が自動で整う、という考えです。 現行のチュートリアルは、有効化しても PYTHONPATH は変わらないと注意している。 【D(正解)】 ? シェルの表示と起動する Python の両方が変わる、という考えです。 有効化するとプロンプトに使用中の仮想環境が表示され、python を実行するとその環境の Python が起動する。
pip によるパッケージ管理
pip でパッケージを入れるとき、既定で取得してくる場所は?
A. Python Package Index B. Python に付属する標準ライブラリ C. 仮想環境の __pycache__ フォルダ D. 手元の requirements.txt
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? Python のパッケージを集めた公開の索引です。 pip は既定で PyPI からパッケージを探して取得する。 【B(不正解)】 ? Python に最初から付いてくるモジュール群です。 標準ライブラリは最初から入っているもので、pip で取得する場所ではない。 【C(不正解)】 ? コンパイル済みファイルの置き場所です。 __pycache__ はモジュールの読み込みを速くするキャッシュで、パッケージの取得元ではない。 【D(不正解)】 ? パッケージとバージョンを並べたファイルです。 requirements.txt は何を入れるかの一覧で、パッケージの取得元ではない。
検証のため、requests のバージョン 2.6.0 をちょうど入れたい。正しいコマンドは?
A. python -m pip install requests=2.6.0 B. python -m pip install requests --version 2.6.0 C. python -m pip install requests==2.6.0 D. python -m pip show requests==2.6.0
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 等号 1 つで版を指定する書き方です。 pip で版をちょうど指定するときは等号 2 つ(==)を使う。 【B(不正解)】 ? オプションで版を渡す書き方です。 チュートリアルが示す版の指定は、パッケージ名の後に == と版番号を続ける形である。 【C(正解)】 ? パッケージ名と版を == でつなぐ書き方です。 パッケージ名に ==版番号 を続けると、その版がインストールされる。 【D(不正解)】 ? パッケージの情報を表示するサブコマンドです。 show は入っているパッケージの情報を表示するだけで、インストールはしない。
仮想環境に requests 2.6.0 が入っている。これを最新版に更新するコマンドとして適切なものは?
A. python -m pip install requests をもう一度実行 B. python -m pip install --upgrade requests C. python -m pip freeze requests で書き出す D. python -m venv --upgrade requests を実行
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 版を付けずにもう一度インストールする形です。 すでに入っているパッケージは、版を付けずに install しても更新されない。--upgrade が必要である。 【B(正解)】 ? 更新を指示するオプションを付けた形です。 install --upgrade を使うと、そのパッケージが最新版に更新される。 【C(不正解)】 ? 入っているパッケージを書き出す形です。 freeze は一覧を出力するだけで、パッケージを更新しない。 【D(不正解)】 ? venv モジュールにオプションを渡す形です。 venv は仮想環境を作るモジュールで、パッケージの更新は pip で行う。
今の仮想環境に入っているパッケージと版を、pip install で読める形式でファイルに残したい。チュートリアルどおりのコマンドは?
A. python -m pip freeze > requirements.txt B. python -m pip show > requirements.txt C. python -m pip install -r requirements.txt D. python -m venv requirements.txt
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? インストール済みの一覧を決まった形式で書き出す形です。 pip freeze は pip install が読める形式で一覧を出す。これを requirements.txt に保存するのが一般的である。 【B(不正解)】 ? パッケージの詳しい情報を書き出す形です。 show は指定したパッケージの詳しい情報を出すもので、pip install が読める一覧にはならない。 【C(不正解)】 ? ファイルの一覧からまとめてインストールする形です。 これはファイルを読み込んで入れるコマンドで、一覧を書き出すものではない。 【D(不正解)】 ? venv モジュールに名前を渡す形です。 これは requirements.txt という名前の仮想環境のディレクトリを作ろうとしてしまう。
新しく入った同僚が、リポジトリにある requirements.txt と同じパッケージを自分の仮想環境にそろえたい。最も適切な手順は?
A. python -m pip freeze > requirements.txt を実行して保存する B. ファイルの中身を見ながら 1 つずつ pip show で確かめる C. requirements.txt を仮想環境のディレクトリにコピーする D. python -m pip install -r requirements.txt を実行する
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 自分の環境の一覧を書き出す手順です。 これは自分の環境の一覧でファイルを上書きしてしまい、パッケージは入らない。 【B(不正解)】 ? 1 つずつ情報を表示する手順です。 show は入っているパッケージの情報を表示するだけで、インストールはしない。 【C(不正解)】 ? ファイルを置くだけの手順です。 ファイルを置いただけではパッケージは入らない。pip に読み込ませる必要がある。 【D(正解)】 ? 一覧ファイルを pip に渡してまとめて入れる手順です。 install -r で requirements.txt に書かれたパッケージを指定の版でまとめて入れられる。
仮想環境に入っている requests の版や置き場所など、1 つのパッケージの詳しい情報を見たい。使うサブコマンドは?
A. python -m pip list B. python -m pip show requests C. python -m pip freeze requests D. python -m pip uninstall requests
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 入っているパッケージを一覧で表示するサブコマンドです。 list は全パッケージの名前と版を並べる。1 つのパッケージの詳しい情報は出さない。 【B(正解)】 ? 指定したパッケージの情報を表示するサブコマンドです。 show を使うと、指定したパッケージの版や置き場所(Location)などが表示される。 【C(不正解)】 ? インストール済みの一覧を書き出すサブコマンドです。 freeze は pip install が読める形式で一覧を出すもので、詳しい情報は出さない。 【D(不正解)】 ? パッケージを削除するサブコマンドです。 uninstall はパッケージを仮想環境から削除してしまう。
タブ補完と履歴編集
標準の対話インタープリタでタブ補完を使いたい。必要な準備として、チュートリアルの説明に合うものは?
A. pip で補完用のパッケージを入れる B. 起動するたびに補完を有効にするコマンドを打つ C. 準備は要らず、起動時に自動で有効 D. 仮想環境を有効にしたときだけ使える
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 追加のパッケージを入れる準備です。 変数名やモジュール名の補完は標準の機能で、追加のパッケージは要らない。 【B(不正解)】 ? 毎回手作業で有効にする準備です。 補完はインタープリタの起動時に自動で有効になるので、毎回のコマンドは要らない。 【C(正解)】 ? 最初から使える状態だという考えです。 変数とモジュール名の補完は、インタープリタの起動時に自動的に有効になる。Tab キーを押せば使える。 【D(不正解)】 ? 仮想環境と結び付いた機能だという考えです。 タブ補完は対話インタープリタの機能で、仮想環境の有無とは関係がない。
対話モードで import string の後に string.a と入力して Tab キーを押した。補完の候補として示されるものは?
A. a で始まる組み込み関数の名前(abs や all など) B. カレントディレクトリにある a で始まるファイル名 C. 直前に入力した a で始まる行(履歴) D. string の属性(ascii_letters など)
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? 組み込みの名前から探す、という考えです。 ドットを含む式では、ドットの前のオブジェクトの属性から候補を探す。 【B(不正解)】 ? カレントディレクトリから探す、という考えです。 タブ補完は Python の名前を補うもので、ファイル名を探すわけではない。 【C(不正解)】 ? 入力の履歴から探す、という考えです。 履歴の呼び出しとタブ補完は別の機能。ここでは string の属性が候補になる。 【D(正解)】 ? ドットの前のオブジェクトの中から探す、という考えです。 ドットで区切られた式では、最後の '.' までの式を評価し、その結果の属性から補完候補を示す。
昨日の対話セッションで入力した長い式を、今日のセッションでも呼び出したい。標準の設定で履歴が保存されている場所は?
A. 仮想環境の __pycache__ ディレクトリの中 B. ユーザーのディレクトリの .python_history C. カレントディレクトリの requirements.txt D. どこにも保存されず、終了すると消える
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? コンパイル済みファイルの置き場所です。 __pycache__ はモジュールのキャッシュで、入力の履歴は保存しない。 【B(正解)】 ? ホームの隠しファイルに残す、という考えです。 既定では、ユーザーのディレクトリの .python_history に履歴が保存され、次の対話セッションでも使える。 【C(不正解)】 ? パッケージの一覧を書くファイルです。 requirements.txt はパッケージの一覧で、入力の履歴とは関係がない。 【D(不正解)】 ? 履歴はその場限りだという考えです。 標準の設定では履歴はファイルに保存され、次のセッションで再び使える。
自作のクラスに __getattr__() を定義し、そのインスタンスを含む式でタブ補完を使った。チュートリアルが注意していることは?
A. __getattr__() のコードが補完のために実行されうる B. __getattr__() を持つオブジェクトでは補完が使えないように止められる C. 補完した名前は履歴ファイルに保存されない D. 補完すると、そのクラスが自動で再定義される
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 補完の裏で動く処理に注目した考えです。 補完はドットの前の式を評価して属性を調べる。__getattr__() を持つオブジェクトでは、定義したコードが動く場合がある。 【B(不正解)】 ? 補完が自動で無効になる、という考えです。 チュートリアルは補完が止まるとは書いていない。注意点はコードが実行されうることである。 【C(不正解)】 ? 履歴の保存についての考えです。 この注意は履歴の保存とは関係がない。 【D(不正解)】 ? クラスの定義が作り直される、という考えです。 補完でクラスが再定義されることはない。
対話インタープリタの入力行の編集や履歴の機能は、Korn シェルや GNU Bash に似ている。チュートリアルによると、何を使って実装されている?
A. 標準の venv モジュール B. パッケージ管理の pip C. GNU Readline D. 標準の json モジュール
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 仮想環境を作る標準モジュールです。 venv は仮想環境を作るためのもので、入力行の編集とは関係がない。 【B(不正解)】 ? パッケージを管理するプログラムです。 pip はパッケージの管理に使うもので、入力行の編集機能ではない。 【C(正解)】 ? シェルの行編集でも使われるライブラリです。 入力行の編集と履歴置換は GNU Readline ライブラリを使って実装されている。 【D(不正解)】 ? データを JSON 形式で扱う標準モジュールです。 json はデータの保存や交換に使うモジュールで、行編集とは関係がない。
対話的インタープリタの代替
チュートリアルが、標準の対話インタープリタより優れた代替の 1 つとして紹介しているものは?
A. pip B. venv C. PyPI D. IPython
この問題へのリンク答えと解説
正解: D 【A(不正解)】 ? パッケージを入れたり消したりするプログラムです。 pip はパッケージ管理のためのもので、対話インタープリタの代替ではない。 【B(不正解)】 ? 仮想環境を作るモジュールです。 venv は仮想環境を作るためのもので、対話インタープリタの代替ではない。 【C(不正解)】 ? パッケージを公開している索引です。 PyPI はパッケージの公開場所で、インタープリタではない。 【D(正解)】 ? 高機能な対話環境の 1 つです。 チュートリアルは IPython を、より優れた対話的インタープリタの代替の 1 つとして紹介している。
チュートリアルが挙げる IPython の特徴として適切なものは?
A. Python のコードを機械語に変えて実行速度を上げる B. タブ補完、オブジェクトの調査、高度な履歴管理を備える C. 仮想環境を自動で作り、パッケージを管理する D. Python 2 のコードを Python 3 に自動変換する
この問題へのリンク答えと解説
正解: B 【A(不正解)】 ? 実行の速さを上げる機能です。 チュートリアルが挙げる特徴は対話の使いやすさで、実行速度の向上ではない。 【B(正解)】 ? 対話での使いやすさを高める機能です。 IPython はタブ補完・オブジェクトの調査・高度な履歴管理を備え、他のアプリへの組み込みもできる。 【C(不正解)】 ? 環境とパッケージを管理する機能です。 それは venv や pip の役割で、チュートリアルが挙げる IPython の特徴ではない。 【D(不正解)】 ? 古い版のコードを書き換える機能です。 チュートリアルの 14 章にこのような機能の紹介は無い。
チュートリアルが、IPython の他に「別の優れた対話環境」として名前を挙げているものは?
A. bpython B. doctest C. PyPI D. venv
この問題へのリンク答えと解説
正解: A 【A(正解)】 ? 機能を高めた対話環境の 1 つです。 チュートリアルは IPython に続いて、bpython を別の優れた対話環境として挙げている。 【B(不正解)】 ? 文書の中の対話例を実行して確かめる標準モジュールです。 doctest はテストに使うモジュールで、14 章で対話環境として挙げられているのは IPython と bpython である。 【C(不正解)】 ? パッケージを公開している索引です。 PyPI はパッケージの索引で、対話環境ではない。 【D(不正解)】 ? 仮想環境を作る標準モジュールです。 venv は仮想環境を作るもので、対話環境ではない。
チュートリアルは、標準の対話インタープリタにまだ残る要望を挙げている。その例として紹介されているものは?
A. 入力した式の型を自動で検査し、誤りを直す機能 B. 足りないパッケージを自動でインストールする機能 C. 継続行で正しいインデントを提示する機能 D. 入力したコードを別の言語に翻訳する機能
この問題へのリンク答えと解説
正解: C 【A(不正解)】 ? 型の食い違いを見つけて直す機能です。 チュートリアルの要望の例に、型を検査して直す機能は挙がっていない。 【B(不正解)】 ? パッケージを自動で入れる機能です。 要望の例は入力の編集に関するもので、パッケージの自動インストールではない。 【C(正解)】 ? 続きの行を入力するときの字下げに関わる機能です。 チュートリアルは、継続行での正しいインデントの提示や、括弧や引用符の対応チェックを要望の例に挙げている。 【D(不正解)】 ? ほかのプログラミング言語に変える機能です。 このような機能は要望の例として挙がっていない。
この分野に出てくる用語(17 語)
__pycache__:コンパイル済みのモジュールを module.バージョン名.pyc としてキャッシュするディレクトリ。読み込みを速くするためのもの。
.python_history:対話インタープリタの入力履歴が保存されるファイル。既定ではユーザーのディレクトリに作られ、次のセッションでも使える。
.venv:仮想環境のディレクトリによく使われる名前。通常シェルで隠れて邪魔にならず、.env ファイルとの衝突も避けられる。
activate:仮想環境を有効にするスクリプト。Windows は 環境名\Scripts\activate、Unix や macOS の bash は source 環境名/bin/activate で使う。
deactivate:有効にした仮想環境を無効にするコマンド。
doctest:docstring に書いた実行例を実際に動かして、結果が一致するかを検証する標準モジュール。
GNU Readline:入力行の編集や履歴を扱うライブラリ。Python の対話インタープリタの行編集と履歴置換はこれで実装されている。
IPython:標準の対話インタープリタの高機能な代替の 1 つ。タブ補完やオブジェクトの調査、高度な履歴管理を備える。
json:リストや辞書などのデータを JSON 形式の文字列に変換したり戻したりする標準モジュール。
pip:パッケージのインストール・アップグレード・削除を行うプログラム。PyPI からパッケージを取得する。
PyPI:Python のパッケージが公開されている索引(Python Package Index)。pip はここからパッケージを取得する。
requirements.txt:必要なパッケージとバージョンを並べたファイル。pip freeze の出力を保存し、pip install -r でまとめて入れる。
site-packages:追加でインストールしたパッケージが置かれるディレクトリ。モジュール検索パスの既定値に含まれる。
venv:仮想環境を作成・管理する標準モジュール。python -m venv ディレクトリ名 で作る。
タブ補完:対話インタープリタで Tab キーを押すと、変数名やモジュール名などの候補を補う機能。起動時に自動で有効になる。
仮想環境:特定のバージョンの Python と追加パッケージを入れた独立したディレクトリツリー。アプリごとに異なるライブラリを使い分けられる。
標準ライブラリ:Python に最初から付属するモジュールの集まり。追加のインストールなしで使える。
独学の次に、講座で体系立てて学びたい人へ
この問題集は独学用です。IT の基礎から講師つきで体系立てて学びたい人には、資格や IT の講座がそろうスクールも選択肢になります。
本ページは広告・アフィリエイトプログラムを利用しており、リンク経由でのお申し込み・購入により当サイトに収益が発生することがあります。ただし、ランキング・評価・掲載内容は広告費や報酬の有無に関わらず編集部の独自基準で決定しており、広告主からの指示により内容を変更することはありません。
IT・Webデザイン・資格まで幅広い講座。生成AI/DX講座はリスキリング補助金の対象
まずは無料ではじめられます。リンク先は公式サイトです。
このサービスの解説記事を読む →