【Python入門】6章の演習プログラム

 ここでは、6章で学んだ内容を実際のコードに落とし込み、演習プログラムを通して手を動かすことで、基礎をより確実なものにすることを目的としています。関数の定義や各種引数の使い方、変数のスコープについての知識を整理し、以下のサンプルプログラムを参考に実践的なプログラミング力を養っていきます。次の7章ではオブジェクト指向プログラミングに進むため、ここで基礎を固めることが重要です。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.関数の基本

1.1. 関数の定義

 関数は、処理を再利用可能なブロックとしてまとめるために使用します。Pythonでは、defキーワードを用いて定義します。

構文要素説明
def関数定義の開始を示すキーワード
関数名関数を識別するための名前
(引数)関数に渡す値(パラメータ)のリスト
:ブロック開始を示す記号
本体インデントされたブロック内に記述する処理

サンプルプログラム

def greet(name):
    print("Hello, " + name + "!")
    
greet("Alice")

1.2. 戻り値を返すreturn文

 関数は、return文を使って呼び出し元に結果を返すことができます。returnが実行されると、それ以降の処理は実行されません。

キーワード説明
return関数の結果を返し、関数の実行を終了する

サンプルプログラム

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

result = add(3, 5)
print(result)  # 出力: 8

2.引数の種類とその使い方

2.1. 関数の位置引数とデフォルト値の指定

 位置引数は、呼び出し時の順番に従って値が割り当てられます。デフォルト値を指定することで、引数を省略可能にできます。

引数の種類説明
位置引数渡された順番に従って値が割り当てられる引数
デフォルト値付き引数初期値を設定し、呼び出し時に省略できる引数

サンプルプログラム

def power(base, exponent=2):
    return base ** exponent

print(power(3))      # 出力: 9(3の2乗)
print(power(3, 3))   # 出力: 27(3の3乗)

2.2. 可変長引数

 可変長引数を使うことで、引数の個数が不定の場合でも対応できます。*argsは位置引数、**kwargsはキーワード引数をまとめて受け取ります。

引数の種類記法説明
可変長位置引数*args複数の位置引数をタプルとして受け取る
可変長キーワード引数**kwargs複数のキーワード引数を辞書として受け取る

サンプルプログラム

def summarize(*args, **kwargs):
    print("位置引数:", args)
    print("キーワード引数:", kwargs)

summarize(1, 2, 3, name="Alice", age=30)

2.3. 位置専用引数とキーワード専用引数

 Python 3.8以降、引数を位置専用(/より前)やキーワード専用(*より後)として明示的に指定できます。これにより、引数の受け渡し方法を制限し、意図しない使い方を防ぐことができます。

引数の種類記法説明
位置専用引数/この記号より前の引数は位置引数としてのみ渡す
キーワード専用引数*この記号より後の引数はキーワード引数としてのみ渡す

サンプルプログラム

def func(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)

# 正しい呼び出し例
func(1, 2, 3, 4, e=5, f=6)
# 以下はエラーとなる呼び出し例(位置専用引数にキーワードを使用しているため)
# func(a=1, b=2, c=3, d=4, e=5, f=6)

3.変数のスコープとグローバル変数

3.1. 変数のスコープ

 変数のスコープは、その変数が有効な範囲を指します。関数内で定義された変数はローカルスコープに、関数外で定義された変数はグローバルスコープに属します。

スコープの種類説明
ローカルスコープ関数内で定義された変数が有効な範囲
グローバルスコーププログラム全体で有効な変数が定義される範囲

サンプルプログラム

def show_local():
    x = "ローカル変数"
    print(x)

x = "グローバル変数"
show_local()
print(x)

3.2. グローバル変数とglobal文

 関数内でグローバル変数を変更する際は、global文を用いてグローバル変数であることを明示する必要があります。

文法要素説明
global関数内でグローバル変数を参照・変更するために宣言する

サンプルプログラム

counter = 0

def increment():
    global counter
    counter += 1

increment()
print(counter)  # 出力: 1

まとめ

 この演習プログラムでは、6章で学んだ関数の定義、各種引数の指定方法、そして変数のスコープに関する知識を実際にコードとして実装することで、理解を深めることを目指しました。各サンプルプログラムを実行し、動作を確認することで、次の7章で学ぶオブジェクト指向プログラミングへのスムーズな移行が可能となります。ぜひ、手を動かしながら各概念の意味と使い方を体感してください。