Pythonの関数を一通り学んだけれど、もう少し柔軟な使い方がしたい。
そんなあなたに向けて、この記事では「関数の応用」についてわかりやすく解説します。
関数のスコープ(変数の有効範囲)、デフォルト引数、関数のネストなどを、Google ColabとChatGPTを活用しながら丁寧に紹介していきます。
▶ 前回の記事はこちら:
👉 ChatGPTで学ぶPython関数の基本入門
スコープ(変数の有効範囲)を理解しよう
Pythonでは、変数がどこで使えるかが「スコープ(有効範囲)」によって決まります。
スコープには大きく分けて2種類あります。
- グローバルスコープ:関数の外で定義された変数
- ローカルスコープ:関数の中で定義された変数
例:スコープの違いを体験
x = 10
def test():
x = 5
print("関数内:", x)
test()
print("関数外:", x)
結果:
関数内: 5
関数外: 10
関数の中の x
は別物として扱われます。これはローカルスコープにある変数が優先されるためです。
Google Colabの実行結果:

globalで外の変数を使う方法
x = 10
def test():
global x
x = 20
print("関数内:", x)
test()
print("関数外:", x)
結果:
関数内: 20
関数外: 20
globalを使うと、関数内でも外の変数を書き換えることができます。
Google Colabの実行結果:

デフォルト引数で関数を柔軟に
関数にデフォルトの値(初期値)を設定することで、引数を省略しても動く便利な関数が作れます。
例:デフォルト引数の使い方
def greet(name="ゲスト"):
print(name + "さん、こんにちは!")
greet()
greet("たろう")
結果:
ゲストさん、こんにちは!
たろうさん、こんにちは!
name
を指定しなかった場合は “ゲスト” が使われます。
Google Colabの実行結果:

引数なしのgreet()関数は、name=ゲスト。実行結果は「ゲストさん、こんにちは!」
引数ありのgreet()関数は、name=たろう。実行結果は「たろうさん、こんにちは!」
キーワード引数と位置引数
関数を呼び出すときの引数には2種類あります。
- 位置引数:順番で渡す
- キーワード引数:名前を指定して渡す
例:両方の使い方
def info(name, age):
print(f"名前:{name}, 年齢:{age}")
info("さくら", 20) # 位置引数
info(age=25, name="そうた") # キーワード引数(順番自由)
位置引数は順番に注意が必要ですが、キーワード引数なら順序が逆でもOKです。
Google Colabの実行結果:

関数のネスト(関数の中に関数)
関数の中に別の関数を定義することができます。これをネスト関数(nested function)と呼びます。
例:ネスト関数の定義と実行
def outer():
def inner():
print("内側の関数です")
print("外側の関数です")
inner()
outer()
結果:
外側の関数です
内側の関数です
ネスト関数は、特定の処理を関数内だけで使いたいときに便利です。
Google Colabの実行結果:

解説
- 最後の1行で outer 関数を呼び出します。
この時点で、outer の中身が順番に実行されます。 - outer の中に inner 関数が定義されます。
この時点では inner() は実行されていません。ただ「定義しただけ」です。 - outer 関数内のprint(“外側の関数です”) が実行されて、画面に表示されます。
- ここで、先ほど outer の中で定義した inner() 関数を実行します。
inner() の中身 print(“内側の関数です”) が実行されて、画面に表示されます。
Google Colabで試してみよう!
PythonのコードはGoogle Colabですぐに試すことができます。
手順:
- Google Colab にアクセス
- 新しいノートブックを作成
- 上記のコードをコピー&ペースト
- Shift + Enterで実行
コードの結果がすぐに確認できるので、理解も早まります。
ChatGPTを活用して疑問を解決!
ChatGPTは関数の応用でも強力なサポートをしてくれます。
こんな使い方がおすすめ:
- 「この変数はどのスコープですか?」
- 「デフォルト引数にリストを設定したいけど大丈夫?」
- 「ネスト関数をもっと活用したい」
エラーメッセージやコードの一部をそのまま貼り付けて質問してもOKです。
初心者がつまずきやすいポイントと解決法
よくあるミス | 解説 |
---|---|
スコープの混同 | 変数がどこで定義されたかをしっかり確認しましょう |
デフォルト引数をミュータブル型で定義 | リストなどは注意(新しいインスタンスを使う) |
ネスト関数を定義しただけで呼び出さない | inner() を忘れずに呼びましょう |
まとめ|関数の応用でコードの幅が広がる!
関数の応用をマスターすることで、コードの設計がグッと柔軟になります。
- スコープの理解でバグが減る
- デフォルト引数で関数がより使いやすくなる
- ネスト関数で機能をコンパクトにまとめられる
Google Colabで試して、ChatGPTと一緒に疑問を解決しながら進めれば、理解も確実に深まります。
次回は「Pythonの標準ライブラリ」について学んで、さらに一歩先へ進みましょう!
▶ 次回の記事はこちら:
👉 ChatGPTで学ぶPython標準ライブラリ入門