Pythonの実行モデルをハンズオンで学ぼう!4.1

当サイトではアフィリエイト広告を利用しています。

リファレンス

こんにちは!今回は Pythonの実行モデル について、初心者向けに ハンズオン形式 で解説していきます。

__name__ == "__main__" って何?」
「モジュールとスクリプトの違いは?」
「パッケージってどう作るの?」

こんな疑問を解決しながら、実際にコードを書いて理解を深めていきましょう!💡


🎯 学習のゴール

✅ Pythonプログラムの基本構造を理解する
__main__ の役割を知る
モジュール・スクリプト・パッケージ の違いを把握する
名前空間とスコープ を体験する


1️⃣ Pythonプログラムの基本構造を理解しよう

Pythonのプログラムは、大きく次の3つに分類されます。

種類 説明
モジュール (Module) .py ファイル(他のプログラムからインポートできる)
スクリプト (Script) コマンドラインから直接実行するPythonプログラム
パッケージ (Package) モジュールをまとめたフォルダ

まずは、シンプルなPythonスクリプトを作成してみましょう!

📝 練習1: シンプルなスクリプトを作る

次のコードを hello.py という名前で保存してください。

print("Hello, Python!")

ターミナル(またはコマンドプロンプト)で次のコマンドを実行しましょう。

python hello.py

実行結果

Hello, Python!

これでPythonスクリプトを実行できました!🎉


2️⃣ __name__ と __main__ の役割

Pythonでは、ファイルが スクリプトとして実行される場合モジュールとしてインポートされる場合 で動作が変わります。

📝 練習2: __name__ の動作を確認する

次のコードを script.py という名前で保存してください。

def greet():
    print("Hello from script.py!")

if __name__ == "__main__":
    print("このファイルはスクリプトとして実行されました")
    greet()

ターミナルで次のように実行してみましょう。

python script.py

実行結果

このファイルはスクリプトとして実行されました
Hello from script.py!

次に、script.pyモジュールとしてインポート してみます。

import script
print("import script 完了!")

ターミナルで実行:

python -c "import script"

実行結果

import script 完了!

"このファイルはスクリプトとして実行されました" は出てきません。
これは、__name__"__main__" ではなく "script" になるためです。


3️⃣ モジュールを作ってみよう

📝 練習3: 自作モジュールを作る

次のコードを mymodule.py という名前で保存します。

def add(a, b):
    return a + b

次に、main.py を作成し、mymodule をインポートして使ってみましょう。

import mymodule

result = mymodule.add(3, 5)
print(f"3 + 5 = {result}")

ターミナルで実行:

python main.py

実行結果

3 + 5 = 8

4️⃣ 名前空間とスコープを理解しよう

📝 練習4: グローバル変数とローカル変数の違い

次のコードを scope.py に保存しましょう。

x = 10  # グローバル変数

def my_function():
    x = 5  # ローカル変数
    print("関数内の x:", x)

my_function()
print("関数外の x:", x)

実行してみましょう。

python scope.py

実行結果

関数内の x: 5
関数外の x: 10

関数内で x を変更しても、グローバル変数には影響を与えないことがわかります。


5️⃣ パッケージを作ってみよう

Pythonのパッケージは、フォルダ内に __init__.py を作成することで定義されます。

📝 練習5: パッケージを作る

次のフォルダ構成を作成します。

mypackage/
    __init__.py
    module1.py
    module2.py
main.py

mypackage/module1.py

def say_hello():
    return "Hello from module1!"

mypackage/module2.py

def say_goodbye():
    return "Goodbye from module2!"

mypackage/__init__.py

from .module1 import say_hello
from .module2 import say_goodbye

main.py

import mypackage

print(mypackage.say_hello())
print(mypackage.say_goodbye())

ターミナルで実行:

python main.py

実行結果

Hello from module1!
Goodbye from module2!

これで パッケージを作成・利用する方法 が理解できました!💡


✅ まとめ

🎯 今回学んだこと
✅ Pythonのプログラムは スクリプトモジュールパッケージ に分類される
__name__ == "__main__" を使うことで、スクリプトとモジュールの動作を分けられる
名前空間とスコープ を理解すれば、変数の影響範囲を制御しやすくなる
パッケージ を作ることで、大規模なプロジェクトも整理しやすくなる

Pythonの実行モデルをしっかり理解して、スクリプトやモジュールをうまく活用していきましょう!🚀

次回は 「クラスとオブジェクト」 について解説予定です!お楽しみに!😊