Python & AI Tutorials Logo
Python プログラミング

1. Python 入門の第一歩

Python プログラミングの世界への旅へようこそ。この章では、Python とは何かを理解し、自分のコンピュータにインストールし、最初の Python コードを実行するための、基本的な最初のステップを案内します。この章の終わりまでに、Python の対話シェルを使いこなし、スクリプトファイルを作成して実行し、Python が出す基本的なエラーメッセージを理解できるようになります。

1.1) プログラムとは何か、Python は何をするのか

Python そのものの話に入る前に、まずプログラムとは何か、そしてプログラムを作るうえで Python がどのような役割を果たすのかを理解しましょう。

1.1.1) プログラムの理解

プログラム (program) とは、コンピュータに何をすべきかを指示する命令の集合です。レシピがケーキの焼き方を一歩ずつ教えてくれるのと同じように、プログラムはコンピュータにタスクを一歩ずつどのように実行するかを教えます。これらのタスクは、簡単な計算から、ウェブページの表示、画像処理、ロボット制御のような複雑な処理までさまざまです。

コンピュータは英語やスペイン語のような人間の言語を直接は理解しません。コンピュータが理解できるのは、非常に基本的な操作を表す 0 と 1 の並びである 機械語 (machine code) だけです。人間が機械語で直接プログラムを書くのは、非常に難しく、間違いも起こりやすくなります。

ここで登場するのが プログラミング言語 (programming language) です。プログラミング言語は、人間が読める形で命令を書き、それを機械語に変換できるようにしたものです。Python はそのようなプログラミング言語の一つで、特に人間にとって読み書きしやすいように設計されています。

1.1.2) Python を特別な存在にしているもの

Python は 高水準プログラミング言語 (high-level programming language) です。これは、より低水準の言語で扱う必要がある多くの複雑な詳細を抽象化してくれる、という意味です。Python が初心者からプロまで幅広く支持されている理由には次のようなものがあります。

読みやすい文法 (Readable Syntax): Python のコードは、ほとんど英語のように読めます。例えば、Python で "Hello, World!" を表示するには次のように書きます。

python
# hello_simple.py
print("Hello, World!")

Output:

Hello, World!

同じことを行うのに、C や Java のような言語では、より多くのボイラープレートコード (決まりきったコード) が必要になります。

インタープリタ言語 (Interpreted Language): Python は インタープリタ言語 (interpreted language) です。これは、コードを実行する前に機械語にコンパイルする必要がない、ということです。その代わりに Python インタープリタ (Python interpreter) と呼ばれるプログラムが、コードを読み込み、一行ずつ実行していきます。これにより、コードを変更してすぐに結果を確認できるので、開発が速くなります。

多用途で強力 (Versatile and Powerful): Python は初心者にやさしい一方で、プロの現場でも次のような用途で利用されています。

  • Web 開発 (ウェブサイトや Web アプリケーション)
  • データ分析と可視化
  • 機械学習や人工知能
  • 科学技術計算
  • 自動化とスクリプト
  • ゲーム開発
  • など他にも多数

大規模なコミュニティとライブラリ (Large Community and Libraries): Python には非常に大きなユーザーコミュニティがあり、機能を拡張するための事前に書かれたコードライブラリが数千も存在します。これは、よくある問題に対する解決策が、多くの場合ライブラリをインポートするだけで手に入るということを意味します。

1.1.3) Python がコードを実行する仕組み

Python のコードを書いて実行すると、その裏側では次のようなことが起こっています。

Your Python Code

Python Interpreter

Bytecode

Python Virtual Machine

Execution/Output

  1. You write code: Python の命令を含むファイルを作成するか、Python の対話シェルに直接入力します。

  2. The interpreter reads your code: Python インタープリタがコードを読み、構文エラー (syntax error、コードの書き方の間違い) がないかチェックします。

  3. Translation to bytecode: 構文エラーがなければ、Python はコードを バイトコード (bytecode) と呼ばれる中間形式に変換します。バイトコードは、コードの中間形式であり、Python と機械語の中間あたりの言語への翻訳です。コンピュータが実行するには Python より単純ですが、純粋な機械語ほど低水準ではありません。

  4. Execution: Python 仮想マシン (Python Virtual Machine, PVM) がバイトコードを実行し、指定された処理を行います。

  5. Output: 画面へのテキスト表示やファイルの作成など、プログラムの結果を目にすることができます。

この流れの素晴らしさは、ほとんどのステップを意識しなくてよいことです。コードを書き、実行し、結果を見るだけで済みます。残りはインタープリタが処理してくれます。

1.2) Python のインストールとインタープリタの実行

Python でプログラミングを始めるには、まず自分のコンピュータに Python をインストールする必要があります。このセクションでは、インストールの手順と、すべてが正しく動作しているかを確認する方法を説明します。

1.2.1) Python がすでにインストールされているか確認する

一部のオペレーティングシステムには、最初から Python がインストールされている場合があります。何かをダウンロードする前に、自分のシステムに Python が入っているかどうか確認しましょう。

Windows の場合:

  1. コマンドプロンプトを開きます。

    • Windows + R を押して「ファイル名を指定して実行」ダイアログを開く
    • cmd と入力して Enter を押す
  2. 次のコマンドを入力して Enter を押します。

bash
python --version

Python がインストールされていれば、次のような出力が表示されます。

Python 3.11.5

'python' is not recognized as an internal or external command のようなエラーメッセージが表示された場合、Python がインストールされていないか、システムの PATH に登録されていません。

macOS の場合:

  1. ターミナルアプリケーションを開きます。

    • Command + Space を押して Spotlight を開く
    • Terminal と入力して Enter を押す
  2. 次のコマンドを入力して Enter を押します。

bash
python3 --version

Note: macOS では、python が古い Python 2 を指している可能性があるため、通常 python ではなく python3 を使います。Python 2 はすでに古いバージョンです。

Python 3 がインストールされていれば、次のような出力が表示されます。

Python 3.11.5

Linux の場合:

  1. 利用しているディストリビューションに応じたターミナルアプリケーションを開きます。

  2. 次のコマンドを入力して Enter を押します。

bash
python3 --version

多くの最新の Linux ディストリビューションには、Python 3 があらかじめインストールされています。

1.2.2) Python のダウンロードとインストール

Python がインストールされていない、または古いバージョンしか入っていない場合は、次の手順で最新バージョンをインストールします。

Windows でのインストール:

  1. 公式の Python サイトにアクセスします。 https://www.python.org/downloads/

  2. 「Download Python」ボタンをクリックします (「Download Python 3.11.5」のように最新バージョンが表示されます)。

  3. ダウンロードしたインストーラ (.exe ファイル) を実行します。

  4. Important: インストーラの最初の画面で、「Add Python to PATH」というチェックボックスにチェックを入れます。これは非常に重要です。これにより、どのコマンドプロンプトからでも Python を実行できるようになります。

    What happens if you forget: 「Add Python to PATH」にチェックを入れないと、コマンドラインから Python を実行できず、'python' is not recognized as an internal or external command のようなエラーが出ます。この場合、Python を再インストールして (今度はチェックを入れて) やり直すか、初心者にはより複雑な PATH の手動設定を行う必要があります。

  5. 「Install Now」をクリックし、インストールが完了するまで待ちます。

  6. 新しいコマンドプロンプトを開き、次のように入力してインストールを確認します。

bash
python --version

先ほどインストールしたバージョン番号が表示されるはずです。

macOS でのインストール:

  1. https://www.python.org/downloads/ にアクセスします。

  2. 最新バージョンの「Download Python」ボタンをクリックします。

  3. ダウンロードした .pkg ファイルを開き、インストールウィザードの指示に従います。

  4. ターミナルを開き、次のように入力してインストールを確認します。

bash
python3 --version

Linux でのインストール:

ほとんどの Linux ディストリビューションには Python 3 が含まれていますが、インストールまたは更新が必要な場合は次のようにします。

Ubuntu/Debian 系の場合:

bash
sudo apt update
sudo apt install python3

Fedora/Red Hat 系の場合:

bash
sudo dnf install python3

確認するには次のコマンドを実行します。

bash
python3 --version

1.2.3) Python インタープリタの実行

Python をインストールしたら、コマンドラインやターミナルから直接 Python インタープリタを実行できます。インタープリタは Python コードを実行するプログラムです。インタープリタを直接起動すると対話シェル (REPL) が開きます。これは次のセクションで詳しく説明します。スクリプトファイルを実行する方法とは異なり、それについては 1.4 節で扱います。

Windows の場合:

コマンドプロンプトを開き、次のように入力します。

bash
python

macOS と Linux の場合:

ターミナルを開き、次のように入力します。

bash
python3

次のような表示がされるはずです。

Python 3.11.5 (main, Sep 11 2023, 13:54:46) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

>>> というプロンプトは、Python がコマンドを受け付ける準備ができていることを示します。これは Python 対話シェル (Python interactive shell) あるいは REPL (Read-Eval-Print Loop) と呼ばれます。これは次のセクションで詳しく見ていきます。

インタープリタを終了するには次のいずれかを実行します。

  • exit() と入力して Enter を押す
  • quit() と入力して Enter を押す
  • macOS/Linux では Ctrl + D を押す、Windows では Ctrl + Z を押してから Enter を押す

Congratulations! これで Python を正しくインストールし、インタープリタが動作することを確認できました。いよいよ Python コードを書き始める準備が整いました。

1.3) Python 対話シェル (REPL) の利用

Python の対話シェルは一般に REPL (Read-Eval-Print Loop) と呼ばれ、学習や実験に非常に便利な機能です。Python コードを入力すると、すぐにその結果を見ることができるので、新しい概念を試したり、小さなコード片をテストしたり、Python の機能を探るのに最適です。

1.3.1) REPL とは何か

Python の対話シェルは一般に REPL (Read-Eval-Print Loop) と呼ばれ、学習や実験に非常に便利な機能です。REPL は Python 対話シェル (Python interactive shell) や単に 対話インタープリタ (interactive interpreter) とも呼ばれます。これらの用語はすべて同じもの、つまり >>> プロンプトのことを指し、そこに Python コードを入力するとすぐに結果を表示してくれます。

REPL とは次の頭文字をとったものです。

  • Read: Python が、あなたが入力したコードを読み取る
  • Eval: Python が、そのコードを評価 (実行) する
  • Print: Python が、その結果を表示する
  • Loop: Python が、再びコード入力を待つところに戻る

このサイクルは、REPL を終了するまで続きます。これは Python と会話しているようなもので、あなたが命令を与え、Python が応答し、その応答に基づいてすぐに次の命令を与えることができます。

1.3.2) REPL の起動と利用

REPL を起動するには、前のセクションで行ったように、コマンドラインやターミナルを開き、Windows では python、macOS/Linux では python3 と入力します。

>>> プロンプトが表示されたら、Python コードの入力を開始できます。いくつか基本的な例を試してみましょう。

簡単な算術:

python
>>> 5 + 3
8
>>> 10 * 2
20
>>> 15 / 3
5.0

REPL では、print() を使わなくても構いません。Python は各式の結果を自動的に表示します。これは REPL の便利な点の一つです。

テキストの扱い:

python
>>> "Hello, World!"
'Hello, World!'
>>> "Python" + " is " + "great"
'Python is great'

文字列 (引用符で囲まれたテキスト) をそのまま入力すると、Python は引用符付きで表示します。これは Python がその文字列を内部的にどう表現しているかを示しています。引用符なしでテキストを表示したい場合は、print() 関数を使います。

python
>>> print("Hello, World!")
Hello, World!

違いに注目してください。文字列だけを入力した場合は引用符付きで表示されますが (Python の表現)、print() を使うと引用符なしの実際のテキストが表示されます。

値を変数に保存する:

値を直接入力するのは簡単なテストには便利ですが、多くの場合、値を 変数 (variable) に保存して再利用したくなるでしょう。変数とは、データを入れておく名前付きの容器のようなものです。

python
>>> name = "Alice"
>>> name
'Alice'
>>> age = 25
>>> age
25

name = "Alice" のように値を変数に代入するとき、Python は何も表示しません。しかし、変数名だけを入力すると、その変数の値を表示してくれます。

電卓として Python を使う:

python
>>> 2 + 2
4
>>> (10 + 5) * 2
30
>>> 100 / 4
25.0
>>> 7 % 3
1

REPL は、ちょっとした計算や数式のテストに非常に便利です。

1.3.3) REPL での複数行入力

ときには、関数 (function) 定義のように、複数行にわたるコードを書く必要があります。REPL は、そのようなコードをうまく扱うためにプロンプトを切り替えます。複数行の文を入力し始めると、プロンプトは >>> から ... に変わり、Python が文の続きを待っていることを示します。

関数を使った簡単な例を見てみましょう (Note: 関数について詳しく学ぶのは第 19 章です。この例は、REPL が ... という継続プロンプトで複数行入力をどのように扱うかを示すだけのものです)。

python
>>> def greet():
...     print("Hello!")
...
>>> greet()
Hello!

最初の行を入力して Enter を押すと、プロンプトが ... に変わります。インデントした行を入力して Enter を押し、空行で再度 Enter を押すとコードが実行されます。

1.3.4) 以前のコマンドへのアクセス

REPL は、これまでに入力したコマンドの履歴を保持しています。上下の矢印キーを使ってコマンド履歴を辿ることができます。

  • 上矢印キー: 一つ前のコマンドを表示
  • 下矢印キー: (さかのぼった後で) 次のコマンドを表示

これは、少し変更して再実行したいコマンドがあるときや、以前に何を入力したか確認したいときに非常に便利です。

1.3.5) REPL でヘルプを得る

Python の REPL には組み込みのヘルプ機能があります。Python のオブジェクト、関数 (function)、モジュールについての情報をその場で得ることができます。

これらのヘルプ機能は、Python を探索して何が利用できるのか知りたいときに特に役立ちます。例えば、文字列を扱っていて、どんなメソッドがあるか知りたいときには、dir(str) を実行するとすべての選択肢が表示されます。本書を読み進めるうちに、これらのツールは自分で調べながら学ぶための強力な手段だと実感するでしょう。

python
>>> help()

これでヘルプシステムに入ります。ここで、ヘルプが欲しい対象の名前を入力できます。終了したいときは quit と入力します。

特定のものについて直接ヘルプを得ることもできます。

python
>>> help(print)

これは print() 関数に関するドキュメントを表示します。表示を終了するには q を押します。

もう一つ便利な関数が dir() です。これは、あるオブジェクトに利用可能な属性 (attribute) やメソッド (method) の一覧を表示します。(Note: 属性やメソッドとは、オブジェクトが持つ機能や、オブジェクトに対して行える操作のことです。これについては第 43 章で詳しく学びます。また、モジュールのインポートについては第 22 章で学びます。この例は、REPL が Python の機能を探索するのにどう役立つかを示すものです)。

python
>>> dir(str)

これで、文字列オブジェクトで利用できるすべてのメソッドが表示されます。

1.3.6) REPL が最も活躍する場面

REPL が力を発揮するのは次のような場面です。

  1. 学習と探索: 新しい概念を学ぶとき、REPL を使えばファイルを作らなくてもすぐに実験できます。

  2. 小さなコード片のテスト: プログラムにコードを追加する前に、REPL でテストして期待どおりに動くか確認できます。

  3. 簡単な計算: REPL は、いつでも使える強力な電卓です。

  4. デバッグ: プログラムがうまく動かないとき、REPL を使ってコードの一部を単体でテストできます。

  5. ライブラリの探索: 新しいライブラリを学ぶとき、REPL でそのライブラリをインポートし、関数 (function) を対話的に試すことができます。

ただし、REPL には制約もあります。REPL で書いたコードは、REPL を閉じると消えてしまい、REPL セッションをプログラムとして保存する方法はありません。後で何度も繰り返し実行したいコードについては、次のセクションで説明するスクリプトファイルを作成する必要があります。

1.3.7) REPL の終了

REPL の利用を終えたら、次のいずれかの方法で終了できます。

python
>>> exit()

または:

python
>>> quit()

あるいはキーボードショートカットを使います。

  • Windows: Ctrl + Z を押してから Enter
  • macOS/Linux: Ctrl + D を押す

終了すると、通常のコマンドプロンプトやターミナルの表示に戻ります。

1.4) Python スクリプトファイルの作成と実行

REPL は実験や簡単なテストには最適ですが、あとでコードを保存して再度実行したい場合はどうすればよいでしょうか。何十行、何百行にもわたる長いプログラムを書きたい場合はどうでしょうか。そのような場合には、スクリプトファイル (script file) が必要です。スクリプトファイルは、Python コードを含む永続的なファイルで、編集・保存・繰り返しの実行が可能です。

REPL は実験用として非常に優れていますが、実際の Python プログラミングの多くは、スクリプトファイルを書くことによって行われます。スクリプトファイルとは、Python コードを含むテキストファイルであり、保存して編集し、何度でも実行できます。このセクションでは、最初の Python スクリプトを作成し、コマンドラインから実行する方法を学びます。

1.4.1) Python スクリプトとは何か

Python スクリプト (Python script) とは、単に Python コードを含むテキストファイルであり、拡張子 .py を付けて保存したものです。REPL に入力するコードとは異なり、スクリプトファイルには次のような特徴があります。

  • 永続的であり、保存して後から実行できる
  • 簡単に編集や修正ができる
  • 必要なだけ多くのコードを含められる
  • 他人と共有できる
  • 自動的あるいはスケジュールに従って実行できる

スクリプトファイルは、頭の中で考えながらその場で調理しているような REPL に対して、書き留めたレシピのようなものだと考えることができます。どちらにも活躍の場がありますが、ある程度の規模の処理にはスクリプトファイルが必要になります。

1.4.2) テキストエディタの選択

Python スクリプトを作成するには、テキストエディタが必要です。Microsoft Word や Google ドキュメントのようなワープロソフトは使わないでください。 これらは、Python が理解できない書式情報を埋め込んでしまいます。

初心者にとっての良い選択肢:

  1. IDLE: Python に同梱されているエディタです。シンプルで学習用途に設計されています。

    • Windows: スタートメニューで「IDLE」と検索
    • macOS/Linux: ターミナルで idle3 と入力
  2. Visual Studio Code (VS Code): 無料で、プロも広く利用している強力なエディタです。拡張機能により Python のサポートも非常に充実しています。

  3. PyCharm Community Edition: Python 専用の本格的な IDE (Integrated Development Environment、統合開発環境) です。

  4. Notepad++ (Windows のみ): 軽量でシンプルなテキストエディタです。

  5. Sublime Text: 高速かつエレガントで、Python のサポートも良好です。

本書では、どのテキストエディタでも動くシンプルな例を使います。自分が使いやすいと感じるエディタを選んで構いません。

1.4.3) 最初の Python スクリプトを作成する

挨拶メッセージを表示する、簡単な Python スクリプトを作ってみましょう。

Step 1: 新しいファイルを作成する

選んだテキストエディタを開き、新しいファイルを作成します。このファイルを hello.py という名前で保存します。場所はデスクトップや、Python プロジェクト専用のフォルダなど、後でわかりやすいところにしましょう。

Important: .py 拡張子が非常に重要です。これにより、オペレーティングシステムやテキストエディタは、そのファイルが Python ファイルであると認識します。

Step 2: コードを書く

ファイルに次のコードを入力します。

python
# hello.py
# My first Python script
 
print("Hello, World!")
print("Welcome to Python programming!")

# で始まる行は コメント (comment) です。これはコードを読む人のためのメモであり、Python は完全に無視します。コメントは、コードが何をしているのかを自分や他人があとから理解しやすくするのに役立ちます。コメントについては第 2 章で詳しく見ていきます。

Step 3: ファイルを保存する

ファイルを保存します。hello.py という名前で保存されていることを確認し、hello.py.txt のようになっていないか注意しましょう。

このコードが何をしているか理解しておきましょう。

  • print("Hello, World!") は、画面に "Hello, World!" というテキストを表示するよう Python に指示します。
  • print("Welcome to Python programming!") は、もう一つ別のメッセージを表示します。

より複雑なスクリプトに進む前に、もう一つ例を追加してみましょう。

python
# greetings.py
# A script with multiple print statements
 
print("Python is fun!")
print("Let's learn together.")
print("This is exciting!")

これを greetings.py として保存します。この例では 3 つの print 文だけを使い、まだ変数は使っていません。より複雑な概念に進む前に、基本的な構造に慣れるのに役立ちます。

1.4.4) コマンドラインからスクリプトを実行する

スクリプトを作成したので、次はそれを実行してみましょう。

Step 1: コマンドライン/ターミナルを開く

  • Windows: コマンドプロンプトを開く
  • macOS/Linux: ターミナルを開く

Step 2: スクリプトのある場所に移動する

cd (change directory) コマンドを使って、hello.py を保存した場所に移動します。例えば、デスクトップに保存した場合は次のようになります。

Windows:

bash
cd Desktop

macOS/Linux:

bash
cd ~/Desktop

スクリプトを実行しようとしたときに "No such file or directory" のようなエラーが出る場合は、間違ったフォルダにいる可能性があります。cd コマンドを使って、スクリプトを保存した場所まで移動しましょう。

場所が正しいかを確認するには、ファイル一覧を表示します。

Windows:

bash
dir

macOS/Linux:

bash
ls

一覧の中に hello.py が見つかるはずです。

Step 3: スクリプトを実行する

Windows:

bash
python hello.py

macOS/Linux:

bash
python3 hello.py

次のような出力が表示されます。

Hello, World!
Welcome to Python programming!

Congratulations! これで最初の Python スクリプトを作成して実行することができました。

1.4.5) スクリプト実行の仕組み

Python スクリプトを実行するとき、内部では次のようなことが起こります。

  1. スクリプトを実行するためのコマンドを入力する
  2. オペレーティングシステムが Python インタープリタを起動する
  3. インタープリタがスクリプトファイル全体を読み込む
  4. 構文エラー (コードの書き方の間違い) がないかチェックする
  5. エラーがあれば、エラーメッセージを表示して処理を中断する
  6. エラーがなければ、上から下へ一行ずつコードを実行する
  7. print() 文などによる出力が表示される
  8. スクリプトが終了すると、制御がコマンドラインに戻る

1.4.6) もう少し複雑な例

ここでは、いくつかの概念を組み合わせた、少しだけ複雑なスクリプトを作ってみましょう。まず、変数をよりなめらかに導入する中間的な例を追加します。

python
# simple_variable.py
# Using a variable for the first time
 
message = "Hello, Python!"
print(message)

Output:

Hello, Python!

これは、単純な print 文だけの例と、さらに複雑な例との橋渡しになります。次に、複数の変数を使うスクリプトを見てみましょう。

python
# student_info.py
# A script that uses variables and multiple print statements
 
name = "Alice"
age = 25
city = "New York"
 
print("Student Information")
print("-------------------")
print("Name:", name)
print("Age:", age)
print("City:", city)

このファイルを student_info.py として保存し、次のように実行します。

Windows:

bash
python student_info.py

macOS/Linux:

bash
python3 student_info.py

Output:

Student Information
-------------------
Name: Alice
Age: 25
City: New York

このスクリプトは次の点を示しています。

  • 変数の作成 (変数については第 3 章で詳しく学びます)
  • 複数の print() 文の使用
  • 文字列リテラル (固定のテキスト) と変数の値の両方を表示する方法

1.4.7) スクリプトファイルのベストプラクティス

この初期段階から、いくつかの習慣を身につけておくと良いでしょう。

  1. 意味のあるファイル名を使う (Use Descriptive Filenames): ファイルには、その内容がわかる名前を付けましょう。student_info.py は、test.pyprogram1.py よりずっと良い名前です。数ヶ月後にファイル一覧を見たとき、何のスクリプトか思い出しやすくなります。

  2. スクリプトを整理する (Keep Scripts Organized): Python プロジェクト用に専用のフォルダを作り、スクリプトをあちこちに散らばせないようにしましょう。こうすることで、後から自分の作業を見つけやすくなり、ファイルも整理された状態を保てます。

  3. コメントを書く (Add Comments): 各スクリプトの先頭には、そのスクリプトが何をするものなのかを説明するコメントを書きましょう。これは後で自分が思い出すのに役立つだけでなく、他人があなたのコードを理解する助けにもなります。

  4. 一つのスクリプトに一つの目的 (One Script, One Purpose): 各スクリプトは、一つの主要な目的を持たせるようにします。関係のない複数のタスクを一つのファイルに詰め込まないようにしましょう。そうすることで、コードが理解しやすく、保守もしやすくなります。

  5. 頻繁にテストする (Test Frequently): コードを書きながら、こまめにスクリプトを実行してテストしましょう。100 行書いてから初めてテストするようなことは避け、数行書くたびにテストする習慣をつけると、エラーが早い段階で見つかり、修正が容易になります。

1.5) エラーとトレースバックの初歩

エラーはプログラミングの自然な一部です。初心者から熟練のプログラマーまで、誰もが頻繁にエラーに遭遇します。エラーメッセージの読み方と理解の仕方を学ぶことは、問題を素早く解決し、自信を持ってプログラミングを続けるために非常に重要なスキルです。

1.5.1) エラーの種類

Python はエラーを大きく二つのカテゴリに分けています。

構文エラー (Syntax Errors): コードの書き方が Python の文法規則に違反している場合のエラーです。Python はコードを実行する前にこれを検出します。構文エラーは、文章の文法間違いのようなもので、Python はそもそもあなたが何を言おうとしているのか理解できません。

例外 (Exceptions): コードの実行中に発生するエラーです。構文自体は正しいものの、実行中に何か問題が起こります。例外は「実行時の問題」のようなもので、Python は命令自体は理解しているものの、それを実行できない状況になっている、というイメージです。

それぞれについて、具体例を見てみましょう。

1.5.2) 構文エラー

構文エラー (syntax error) は、Python のルールに従っていないコードを書いたときに発生します。Python は、書かれた内容を理解できないため、コードの実行すら始められません。

Example 1: Missing Colon

syntax_error1.py というファイルを作成します。

python
# syntax_error1.py
# This code has a syntax error
 
if 5 > 3
    print("Five is greater than three")

これを実行するとき:

bash
python syntax_error1.py

次のような出力になります。

  File "syntax_error1.py", line 4
    if 5 > 3
            ^
SyntaxError: expected ':'

Python は次のことを教えてくれています。

  • Which file に問題があるか: syntax_error1.py
  • Which line に問題があるか: 4 行目
  • その行のどこ に問題があるか: ^ が位置を示す
  • エラーの種類: SyntaxError
  • 役立つ説明: expected ':'

問題は、Python の if 文が必ずコロン (:) で終わらなければならないのに、それが抜けていることです。正しいコードは次のとおりです。

python
# syntax_error1_fixed.py
# Fixed version
 
if 5 > 3:
    print("Five is greater than three")

Output:

Five is greater than three

Example 2: Mismatched Quotes

python
# syntax_error2.py
# Another syntax error example
 
message = "Hello, World!'
print(message)

これを実行すると次のようになります。

  File "syntax_error2.py", line 4
    message = "Hello, World!'
              ^
SyntaxError: unterminated string literal (detected at line 4)

ここでの問題は、文字列がダブルクォート (") で始まっているのに、シングルクォート (') で終わっていることです。Python では、開始と終了の引用符は一致していなければなりません。次のように修正します。

python
# syntax_error2_fixed.py
# Fixed version
 
message = "Hello, World!"
print(message)

Output:

Hello, World!

1.5.3) 実行時例外 (Runtime Exceptions)

実行時例外 (runtime exceptions)、あるいは単に「例外 (exceptions)」は、コードの文法自体は正しいものの、実行中に何か問題が起きたときに発生します。

Example 1: NameError

python
# name_error.py
# This code will cause a NameError
 
print(greeting)

これを実行すると:

bash
python name_error.py

次のような出力になります。

Traceback (most recent call last):
  File "name_error.py", line 4, in <module>
    print(greeting)
          ^^^^^^^^
NameError: name 'greeting' is not defined

これは トレースバック (traceback) と呼ばれます。内容を分解してみましょう。

  • "Traceback (most recent call last):" は、これからエラーがどこで起きたかを示すトレースバックが続きます、という意味です。
  • ファイルと行の情報: File "name_error.py", line 4, in <module> は、どのファイルの何行目でエラーが起きたかを示しています。
  • 問題のあるコード: print(greeting) は失敗した行そのものです。
  • エラーの種類: NameError がどのようなエラーかを示しています。
  • エラーの説明: name 'greeting' is not defined は、存在しない変数を使おうとしたことを説明しています。

これを修正するには、変数を使う前に定義する必要があります。

python
# name_error_fixed.py
# Fixed version
 
greeting = "Hello!"
print(greeting)

Output:

Hello!

Example 2: TypeError

python
# type_error.py
# This code will cause a TypeError
 
number = 5
text = "The number is "
result = text + number
print(result)

これを実行すると次のようになります。

Traceback (most recent call last):
  File "type_error.py", line 6, in <module>
    result = text + number
             ~~~~~^~~~~~~~
TypeError: can only concatenate str (not "int") to str

エラーメッセージは、文字列と整数を直接足す (連結する) ことはできない、と教えています。Python は、算術的な足し算をしたいのか、文字列連結をしたいのか判断できません。

修正するには、数値を文字列に変換します。

python
# type_error_fixed.py
# Fixed version
 
number = 5
text = "The number is "
result = text + str(number)
print(result)

Output:

The number is 5

Example 3: ZeroDivisionError

0 で割ろうとするとどうなるでしょうか。

python
# zero_division.py
# This code will cause a ZeroDivisionError
 
result = 10 / 0
print(result)

これを実行すると次のようになります。

Traceback (most recent call last):
  File "zero_division.py", line 4, in <module>
    result = 10 / 0
             ~~~^~~
ZeroDivisionError: division by zero

このエラーは文字どおりで、0 で割ることはできないという意味です。数学的に定義されていないため、Python はエラーを発生させます。

1.5.4) トレースバックを効果的に読む

トレースバックに遭遇したときは、下から上へ読みましょう。下から読むのは、最後の行にエラーの種類とメッセージが書かれているからです。その上の行は、エラーに至るまでにどの関数 (function) が呼び出されたかを示しています。ここで扱っているようなシンプルなプログラムでは、最後の行を読めば必要な情報がほとんどすべて得られます。

  1. 一番下から見る: まずエラーの種類とメッセージを確認します。
  2. エラーを理解する: Python が何について文句を言っているのかを把握します。
  3. 場所を特定する: エラーが起こったファイル名と行番号を確認します。
  4. コードを確認する: ファイルの該当行を見てみます。
  5. 必要なら前の行も辿る: 実際の原因が、Python が指している行の一つ前にある場合もあります。

1.5.5) 初心者がよく遭遇するエラー

Python を学び始めると、次のようなエラーによく出会うでしょう。

インデントエラー (Indentation Errors):

Python は、行頭のスペースやタブ (インデント) を使ってコードブロックを表現します。インデントがおかしいとエラーになります。

python
# indentation_error.py
# Incorrect indentation
 
print("First line")
    print("Second line")  # This line is incorrectly indented

Error:

  File "indentation_error.py", line 5
    print("Second line")
    ^
IndentationError: unexpected indent

スペルミス (Spelling Mistakes):

Python は大文字と小文字を区別します。Printprint と同じではありません。

python
# spelling_error.py
# Incorrect capitalization
 
Print("Hello")  # Should be print, not Print

Error:

Traceback (most recent call last):
  File "spelling_error.py", line 4, in <module>
    Print("Hello")
    ^^^^^
NameError: name 'Print' is not defined

かっこの付け忘れ (Missing Parentheses):

Python 3 では、print にかっこが必須です。

python
# missing_parentheses.py
# Missing parentheses
 
print "Hello"  # Should be print("Hello")

Error:

  File "missing_parentheses.py", line 4
    print "Hello"
          ^^^^^^^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?

ここでの Python のエラーメッセージは非常に親切で、修正案まで提案してくれています。

1.5.6) エラーへの対処戦略

エラーに遭遇したときには、次のように対処しましょう。

  1. 慌てない (Don't Panic): エラーは普通のことです。すべてのプログラマーが常にエラーを見ています。

  2. エラーメッセージをよく読む (Read the Error Message Carefully): Python のエラーメッセージはたいてい役に立ちます。何がどこでおかしいのかを教えてくれます。

  3. 行番号を確認する (Check the Line Number): Python が示した行に移動し、問題を探します。

  4. 周辺の行も見る (Look at Nearby Lines): 時には、実際の問題が Python が指している行の前の行にある場合もあります。

  5. よくあるミスを確認する (Check for Common Mistakes): コロンの付け忘れ、引用符の不一致、インデントの誤り、スペルミスなどはとてもよくあるミスです。

  6. 小さな変更を試す (Test Small Changes): 一度に一つずつ修正し、修正のたびにテストしましょう。

  7. REPL を利用する (Use the REPL): よくわからないことがあれば、まず REPL で試してみます。

  8. エラーを検索する (Search for the Error): エラーメッセージの意味がわからないときは、そのままオンラインで検索してみましょう。多くの場合、解説や解決策が見つかります。

1.5.7) エラーと修正を含む完全な例

複数のエラーを含むスクリプトを見て、それを一つずつ修正していきましょう。このプログラムは、学生に関する情報を表示し、10 年後の年齢を計算することを目的としています。

Original (with errors):

python
# buggy_student.py
# This program has several errors
 
student_name = "Alice
student_age = 25
 
print("Name:", student_name)
print("Age:" student_age)
print("In 10 years, you will be", student_age + "10")

Running this produces multiple errors. Let's fix them one by one:

Error 1: Unterminated string

  File "buggy_student.py", line 4
    student_name = "Alice
                   ^
SyntaxError: unterminated string literal (detected at line 4)

Fix: 閉じる引用符を追加します。

python
student_name = "Alice"

Error 1 を修正すると、次は Error 2: Missing comma

  File "buggy_student.py", line 8
    print("Age:" student_age)
                 ^^^^^^^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?

Fix: 文字列と変数の間にカンマを追加します。

python
print("Age:", student_age)

Error 2 を修正すると、次は Error 3: Type error

Traceback (most recent call last):
  File "buggy_student.py", line 9, in <module>
    print("In 10 years, you will be", student_age + "10")
                                      ~~~~~~~~~~~~^~~~~~
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Fix: "10" を整数に変更します。

python
print("In 10 years, you will be", student_age + 10)

Final corrected version:

python
# buggy_student_fixed.py
# Fixed version of the program
 
student_name = "Alice"
student_age = 25
 
print("Name:", student_name)
print("Age:", student_age)
print("In 10 years, you will be", student_age + 10)

Output:

Name: Alice
Age: 25
In 10 years, you will be 35

この例からわかるように、エラー修正は一度にすべて終わるとは限らず、段階的な作業になることがよくあります。一つエラーを直して実行し、次のエラーを見つけて直す、というのを繰り返すことは、ごく普通のことです。

1.6) 対話シェルとスクリプトファイルを使い分けるとき

ここまでで REPL とスクリプトファイルの両方について学んできました。では、どのようなときにどちらを使えばよいのでしょうか。どちらも価値のあるツールであり、経験豊富な Python プログラマーは両方を日常的に使い分けています。それぞれを使うべき場面を理解することで、より効率的に作業できるようになります。

1.6.1) 対話シェル (REPL) を使うべきとき

1. 新しい概念を学習するとき (Learning New Concepts)

新しいことを学ぶとき、REPL を使えばすぐにフィードバックが得られます。

python
>>> # Testing string methods
>>> text = "hello world"
>>> text.upper()
'HELLO WORLD'
>>> text.title()
'Hello World'
>>> text.capitalize()
'Hello world'

ファイルを作成することなく、いろいろなメソッドを試して結果をすぐに確認できます。

2. 小さなコード片のテスト (Testing Small Code Snippets)

プログラムにコードを書き加える前に、まず REPL でテストしてみましょう。

python
>>> # Testing a calculation
>>> price = 19.99
>>> quantity = 3
>>> total = price * quantity
>>> total
59.97
>>> # Looks good, now I can add this to my script

3. ちょっとした計算 (Quick Calculations)

REPL は、いつでも起動できる電卓として使えます。

python
>>> # How many seconds in a day?
>>> 24 * 60 * 60
86400
>>> # What's 15% of 250?
>>> 250 * 0.15
37.5

4. デバッグ (Debugging)

スクリプトがうまく動かないとき、その一部を REPL でテストしてみます。

python
>>> # My script isn't working. Let me test this part:
>>> numbers = [1, 2, 3, 4, 5]
>>> sum(numbers) / len(numbers)
3.0
>>> # This works, so the problem must be elsewhere

Note: リスト (list) については第 13 章で学びます。この例は、REPL がコード片のテストにどう役立つかを示しています。

1.6.2) スクリプトファイルを使うべきとき

1. 繰り返し使いたいプログラムを書くとき (Writing Programs You Want to Keep)

後からも何度も実行したいものは、スクリプトファイルにしておきましょう。

python
# temperature_converter.py
# A program to convert Fahrenheit to Celsius
 
fahrenheit = 98.6
celsius = (fahrenheit - 32) * 5/9
print("Temperature:", fahrenheit, "°F is", round(celsius, 1), "°C")

Output:

Temperature: 98.6 °F is 37.0 °C

このスクリプトは、必要なときにいつでも実行できますし、後から修正を加えることもできます。

2. 複数行にわたるプログラムを書くとき (Writing Multi-Line Programs)

REPL でも複数行のコードを書くことはできますが、ある程度の規模になると扱いにくくなります。そのような場合は、スクリプトファイルを使いましょう。

python
# grade_calculator.py
# Calculate final grade from multiple scores
 
homework = 85
midterm = 78
final = 92
 
# Calculate weighted average
final_grade = (homework * 0.3) + (midterm * 0.3) + (final * 0.4)
 
print("Final Grade:", final_grade)

Output:

Final Grade: 85.3

3. 他人とコードを共有するとき (Sharing Code with Others)

REPL セッションは共有が難しいですが、スクリプトファイルなら簡単に共有できます。

python
# greeting.py
# A simple greeting program
 
name = input("What is your name? ")
print("Hello,", name + "! Welcome to Python.")

Note: input() 関数については第 2 章で学びます。この例は、スクリプトがどのように共有できるかを示しています。

このファイルを他の人に送れば、その人も自分のコンピュータで実行できます。

4. 再利用可能なツールを作るとき (Building Reusable Tools)

繰り返し使うツールを作るのであれば、スクリプトにしましょう。

python
# file_counter.py
# Count files in a directory
 
import os
 
directory = "."  # Current directory
files = [f for f in os.listdir(directory) if os.path.isfile(f)]
print("Number of files:", len(files))

Note: モジュールのインポートについては第 22 章で、リスト内包表記 (list comprehension) については第 34 章で学びます。この例は、スクリプトが再利用可能なツールになりうることを示しています。

5. 複雑なロジックを組むとき (Developing Complex Logic)

複数の関数 (function) やクラス (class)、複雑なロジックが関わるものは、スクリプトファイルで書くべきです。

python
# password_checker.py
# Check password strength
 
def check_password_strength(password):
    """Check if a password meets basic requirements."""
    if len(password) < 8:
        return "Too short"
    if not any(c.isupper() for c in password):
        return "Needs uppercase letter"
    if not any(c.isdigit() for c in password):
        return "Needs number"
    return "Strong password"
 
# Test the function
test_password = "MyPass123"
result = check_password_strength(test_password)
print("Password '" + test_password + "':", result)

Output:

Password 'MyPass123': Strong password

Note: 関数 (function) については第 19 章で学びます。この例は、スクリプトがどのように複雑なロジックを扱うかを示しています。

6. 作業を自動化するとき (Automating Tasks)

スクリプトは自動化に最適です。

python
# backup_reminder.py
# Remind user to backup files
 
import datetime
 
today = datetime.date.today()
day_of_week = today.strftime("%A")
 
if day_of_week == "Friday":
    print("Don't forget to backup your files!")
else:
    print("Backup reminder: Next backup on Friday")

Note: datetime モジュールについては第 39 章で学びます。この例は、スクリプトがタスクの自動化にどう役立つかを示しています。

1.6.3) 実践的なワークフロー

プロの Python プログラマーは、REPL とスクリプトファイルを補完的に組み合わせて使うのが一般的です。

Example Workflow:

  1. Explore in REPL: 新しい概念や計算を REPL で試す
  2. Prototype in REPL: 小さな動くバージョンを REPL で作る
  3. Move to Script: 動くことが確認できたら、スクリプトファイルにまとめる
  4. Expand in Script: さらに機能を追加したり、エラーハンドリングを加えたりする
  5. Debug with REPL: うまく動かなくなったときは、問題の部分を REPL でテストする
  6. Finalize Script: 完成させて、テストし、保存されたプログラムとする

1.6.4) 具体例

このワークフローが実際にどのように機能するか見てみましょう。例えば、円の面積を計算するプログラムを書きたいとします。

Step 1: REPL で探索する (Explore in REPL)

python
>>> # What's the formula? Area = π * r²
>>> # Let me use a simple approximation for π
>>> 3.14159 * 5 * 5
78.53975
>>> # Looks right!

Step 2: スクリプトを作成する (Create a Script)

動作が確認できたので、circle_area.py を作成します。

python
# circle_area.py
# Calculate the area of a circle
 
radius = 5
pi = 3.14159
area = pi * radius * radius
 
print("Radius:", radius)
print("Area:", area)

Output:

Radius: 5
Area: 78.53975

Step 3: スクリプトを拡張する (Enhance the Script)

異なる半径に対しても動くようにします。

python
# circle_area_enhanced.py
# Calculate area for multiple circles
 
radii = [3, 5, 7, 10]
pi = 3.14159
 
for radius in radii:
    area = pi * radius * radius
    print("Circle with radius", radius, "has area", round(area, 2))

Output:

Circle with radius 3 has area 28.27
Circle with radius 5 has area 78.54
Circle with radius 7 has area 153.94
Circle with radius 10 has area 314.16

Note: for ループ (loop) については第 11 章で学びます。第 2 章では、ユーザーから入力を受け取ってインタラクティブに動かす方法を学びます。

このように、まず REPL で実験し、その後スクリプトで正式な形にまとめていく、というのが多くの Python プログラム開発で使われる流れです。

1.6.5) まとめのポイント (Key Takeaways)

REPL の強み (REPL Strengths):

  • Immediate feedback (すぐにフィードバックが得られる)
  • Great for learning (学習に最適)
  • Perfect for quick tests (簡単なテストに最適)
  • Excellent for exploration (探索に非常に便利)
  • No file management needed (ファイル管理が不要)

REPL の制約 (REPL Limitations):

  • Code is not saved (コードが保存されない)
  • Awkward for multi-line code (複数行のコードには向かない)
  • Can't be shared easily (簡単には共有できない)
  • Not suitable for complex programs (複雑なプログラムには不向き)

スクリプトファイルの強み (Script File Strengths):

  • Code is saved permanently (コードが永続的に保存される)
  • Easy to edit and modify (編集や修正が容易)
  • Can be shared with others (他人と共有しやすい)
  • Suitable for complex programs (複雑なプログラムに適している)
  • Can be run repeatedly (何度でも実行できる)
  • Can be automated (自動化できる)

スクリプトファイルの制約 (Script File Limitations):

  • Requires creating and managing files (ファイルを作成し、管理する必要がある)
  • Need to run to see results (実行して初めて結果がわかる)
  • More overhead for quick tests (簡単なテストには少し手間がかかる)

最も良いアプローチは、両方を使うことです。学習やテスト、探索には REPL を、保存したり、共有したり、繰り返し実行したいコードにはスクリプトファイルを使いましょう。

1.7) 本書が使う Python バージョンと、その重要性

Python は長い年月をかけて大きく進化してきました。そのため、バージョンによって挙動が異なる場合があります。Python のバージョンについて理解しておくことは、混乱を避け、自分のコードが期待どおり動作することを確認するうえで重要です。

なぜ Python のバージョンの話に時間を割くのか、不思議に思うかもしれません。その理由は単純で、今後あなたはオンラインのチュートリアルやドキュメントなど、さまざまな場所で Python コードに出会うことになります。バージョンの違いを理解しておくことで、古いコードを見分けられるようになり、「なぜこのコードは自分の環境では動かないのだろう」という混乱を防ぐことができます。

1.7.1) Python 2 と Python 3

Python の歴史の中で最も大きな分岐は、Python 2 と Python 3 の違いです。

Python 2 は 2000 年にリリースされ、長年にわたって主流のバージョンでした。しかし、既存コードとの互換性を保ったままでは修正できない設計上の問題がいくつかありました。

Python 3 は、そうした問題を根本から解決するため、2008 年に大きな再設計を行ってリリースされました。ただし Python 3 は 後方互換性がありません (not backward compatible)。つまり、Python 2 向けに書かれたコードは、そのままでは Python 3 で動かないことがよくあります。

長い間、両バージョンが並行して存在していましたが、Python 2 は 2020 年 1 月 1 日をもってサポート終了 (end-of-life) となりました。これは次のことを意味します。

  • Python 2 に対するアップデートやセキュリティ修正はもう提供されない
  • 新しい Python 開発はすべて Python 3 で行われている
  • 主要なライブラリはすべて Python 3 に移行済み
  • いまから Python 2 を学ぶことは推奨されない

本書は Python 3 のみを対象とします。 すべてのコード例は Python 3 向けに書かれており、Python 2 では動かない可能性があります。

1.7.2) Python 3 のマイナーバージョン

Python 3 の中にも、3.6、3.7、3.8、3.9、3.10、3.11、3.12 などのマイナーバージョンがあります。各マイナーバージョンは、新しい機能や改良を追加しますが、Python 3 の以前のバージョンとの後方互換性は維持されます。

本書は Python 3.11 以降を対象として書かれています が、多くの例は Python 3.8 以上で動作します。

自分の Python バージョンを確認するには次のようにします。

bash
python --version  # Windows
python3 --version  # macOS/Linux

次のような表示が出るはずです。

Python 3.11.5

もし次のように表示されたら:

Python 2.7.18

それは Python 2 であり、すでに古いバージョンです。1.2 節の手順に従って Python 3 をインストールしてください。

1.7.3) よく目にする主な違い

特に 2020 年より前の古いチュートリアルや Stack Overflow の回答などでは、Python 2 のコードが掲載されていることがあります。そうしたコードの中には、Python 3 では動かない書き方が含まれていることがあります。よく見かける違いをいくつか挙げます。

1. print 文と print 関数 (The print Statement vs Function)

Python 2:

python
print "Hello, World!"  # No parentheses

Python 3:

python
print("Hello, World!")  # Parentheses required

Python 3 では print は関数 (function) であり、かっこが必要です。これは最も目につきやすい違いです。

2. 割り算の挙動 (Division Behavior)

これらの変更は、Python をより一貫性があり安全な言語にするために行われました。例えば、print を関数にすることで他の関数と同じように扱えるようになり、/ を常に浮動小数点の割り算にすることで、よくあるバグの原因をなくしています。

Python 2:

python
>>> 5 / 2
2  # Integer division
>>> 5.0 / 2
2.5  # Float division

Python 3:

python
>>> 5 / 2
2.5  # Always float division
>>> 5 // 2
2  # Integer division (floor division)

Python 3 では、/ は常に浮動小数点の割り算を行います。整数の割り算をしたい場合は // を使います。

3. input() 関数 (input() Function)

Python 2:

python
name = raw_input("Enter your name: ")  # Returns string
age = input("Enter your age: ")  # Evaluates input as Python code (dangerous!)

Python 3:

python
name = input("Enter your name: ")  # Always returns string
age = int(input("Enter your age: "))  # Convert to int if needed

Python 3 では、input() は常に文字列を返します。これはより安全で一貫性のある挙動です。

4. 文字列と Unicode (String and Unicode)

Python 3 は、Python 2 に比べてテキスト (Unicode) の扱いが大幅に改善されています。Python 3 では、すべての文字列がデフォルトで Unicode になっており、多言語テキストの扱いがずっと容易になっています。

1.7.4) Python 3 バージョンごとの機能

Python 3 の各バージョンでは、さまざまな機能が追加されてきました。ここでは知っておくべきポイントだけを整理します。

Python 3.6 (December 2016):

  • 文字列フォーマットのための f 文字列 (f-strings) が追加されました (本書でも頻繁に使います)。
python
# f_string_example.py
name = "Alice"
print("Hello, " + name + "!")

Output:

Hello, Alice!

Note: f 文字列については第 6 章で学びます。ここでは、+ を使ったシンプルな文字列連結を使っています。

Python 3.8 (October 2019):

  • 代入式 (walrus 演算子 :=) が追加されました (第 40 章で扱います)。

Python 3.10 (October 2021):

  • matchcase による構造的パターンマッチングが追加されました (第 12 章で扱います)。

Python 3.11 (October 2022):

  • エラーメッセージが大幅に改善
  • パフォーマンスの向上
  • 例外処理の改善

Python 3.12 (October 2023):

  • さらなるパフォーマンスの改善
  • 新しい型アノテーション機能
  • f 文字列の構文が改善

1.7.5) どのバージョンを使うべきか

可能であれば Python 3.11 以降を使うことをおすすめします。 その理由は次のとおりです。

  1. より良いエラーメッセージ (Better Error Messages): Python 3.11 では、初心者にとってより理解しやすいエラーメッセージが追加されています。

  2. パフォーマンス向上 (Better Performance): Python 3.11 は、以前のバージョンより高速です。

  3. 最新の機能 (Modern Features): すべての最新機能を利用できます。

  4. 将来への備え (Future-Proof): Python 3.11 用に書かれたコードは、将来のバージョンでも動作しやすくなります。

とはいえ、Python 3.8 以降であれば本書の学習には十分です。 核となる概念は同じです。

1.7.6) 機能の利用可能性を確認する

もし古い Python バージョンを使っていて、あるコードが動かない場合、その機能がどのバージョンで導入されたかを確認するとよいでしょう。

例えば、Python 3.5 以前を使っている場合、古い形式の文字列フォーマットを使う必要があるかもしれません。

python
# format_example.py
# Works in all Python 3 versions
name = "Alice"
print("Hello, {}!".format(name))

Output:

Hello, Alice!

1.7.7) 最新状態を保つ

Python は、およそ 1 年に 1 回のペースで新しいマイナーバージョンをリリースしています。すぐにアップグレードする必要はありませんが、ある程度新しい状態を保つことは大切です。

  • 数ヶ月に一度は アップデートを確認する
  • リリースノートを読む ことで、新しい機能を知る
  • 特にセキュリティ更新がある場合は、都合の良いタイミングでアップグレードする
  • アップグレード後は、自分のコードをテストして互換性を確認する

Python のリリースやドキュメントは https://www.python.org/ から入手できます。

1.7.8) 本書におけるバージョン互換性

本書全体を通して次の方針に従います。

  • すべてのコード例は Python 3.11 以降で動作します。
  • ほとんどの例は Python 3.8 以降で動作します。
  • 特定のバージョンが必要な機能については明示的に注記します。 (例: 「これは Python 3.10 以降が必要です」)
  • 古いバージョン向けに代替手法が必要な場合は、適宜紹介します。

本書に掲載しているコードは、Python 3.11 以降にそのまま入力すれば、ここで示したとおりに動作する、と考えて構いません。

1.7.9) オンラインで見かける Python 2 コードについての注意

Python についてオンラインで情報を検索すると、Python 2 のコードに出会うことがあります。その見分け方を紹介します。

Python 2 コードのサイン:

  • かっこなしの print: print "Hello"
  • raw_input() 関数
  • 5 / 22 になるような整数の割り算
  • "Hello %s" % name のような古い書式指定による文字列フォーマット
  • コメントなどで "Python 2" や 2.x のバージョン番号に言及している

そうしたコードを見かけたら (What to Do):

  • Python 3 向けの代替例を探す
  • 検索キーワードに "python 3" を追加する
  • 公開日付を確認し、2020 年以前のものは Python 2 の可能性が高いと考える
  • 公式の Python 3 ドキュメント https://docs.python.org/3/ を参照する

Congratulations! これで第 1 章が完了し、Python への第一歩を踏み出しました。あなたはすでに次のことができるようになりました。

  • Python が何か、どのように動作するかを理解した
  • Python をインストールし、インタープリタを実行した
  • Python の対話シェル (REPL) を使って実験した
  • Python スクリプトファイルを作成し、実行した
  • エラーメッセージとトレースバックの読み方を学んだ
  • REPL とスクリプトファイルをいつ使い分けるかを理解した
  • どの Python バージョンを使うべきか、その理由を理解した

次の第 2 章では、最初の「完成した」Python プログラムを書き、print() 関数を詳しく学び、ユーザー入力の扱いを始めます。この章で築いた基礎は、今後学んでいくすべての内容を支える土台になります。

© 2025. Primesoft Co., Ltd.
support@primesoft.ai