【コピペで動く】Python関数の作り方マスター講座!defの基本から応用まで
PythonをコマンドプロンプトやPowerShellでPC上で動かすには、Pythonをダウンロードしてインストールする必要があります。
まだの方はPythonのインストールと開発環境の構築の記事を参考にして、Pythonをインストールしてください。
Webサイト制作やアプリ開発をしていると、「あれ、この処理、さっきも書いたな…」なんてこと、よくありますよね。そんな「同じ処理の繰り返し」をスッキリ解決してくれるのが、今回ご紹介するPythonの「関数(かんすう)」です。
この記事では、プログラミング初心者の方でも安心して学べるように、Pythonの関数の基本的な作り方から、ちょっと便利な応用テクニックまで、たくさんのサンプルコードと一緒に解説していきます。キーワードは「コピペで動く」。難しい理屈は後回しにして、まずは「自分の書いたコードが動く!」という楽しさを体験してみてください!
そもそもPythonの「関数」って何?
関数を一番イメージしやすいのは、「自動販売機」かもしれません。
- お金を入れ(引数)、ボタンを押す(関数を呼び出す)と…
- ジュースが出てくる(戻り値)
このように、「特定の仕事(処理)をまとめたもの」が関数です。一度作ってしまえば、あとはボタンを押すように何度も呼び出して同じ仕事をさせることができます。これにより、コードが短くシンプルになり、修正も楽になるという大きなメリットがあるのです。
Pythonでは、この関数をdefという命令文(def文)を使って作ります。さっそく、具体的な作り方を見ていきましょう!
【基本編】Python関数の作り方と使い方
まずは基本の「き」。引数も戻り値もない、最もシンプルな関数から作ってみましょう。
1. 基本の構文:defを使って関数を定義する
関数を作るには、def 関数名():という形で書き始め、次の行からインデント(字下げ)をして処理内容を記述します。ここでは、「こんにちは!」と表示するだけの簡単な関数say_helloを作ってみます。
# 1. 関数の定義
def say_hello():
print("こんにちは!")
# 2. 関数の呼び出し
say_hello()
実行結果:
こんにちは!
ポイントは、関数を定義した(作った)だけでは何も起こらないということです。say_hello()のように関数名を書いてカッコをつけることで、初めて関数が呼び出され、中の処理が実行されます。
2. 引数(ひきすう)を使ってみよう
次に、自動販売機で言うところの「お金」にあたる「引数(ひきすう)」を使ってみましょう。引数を使うと、関数に外から情報を与えて、処理内容を変化させることができます。
ここでは、与えられた名前に対して挨拶を返す関数greetを作ります。def greet(name):のように、カッコの中に変数名(この場合はname)を入れると、それが引数になります。
# 引数を受け取る関数を定義
def greet(name):
print(f"{name}さん、こんにちは!")
# 関数を呼び出す際に、引数として具体的な値を渡す
greet("田中")
greet("鈴木")
実行結果:
田中さん、こんにちは!
鈴木さん、こんにちは!
このように、引数として渡す値を変えるだけで、同じ関数でも結果を柔軟に変えることができました。
3. 戻り値(もどりち)で結果を受け取ろう
今度は、自動販売機の「ジュース」にあたる「戻り値(もどりち)」です。関数内で計算した結果などを、関数の呼び出し元に返したい場合に使います。戻り値を返すにはreturn文を使います。
2つの数値を受け取って、その合計を返すadd関数を作ってみましょう。
# 2つの引数を受け取り、合計を返す関数
def add(a, b):
total = a + b
return total # return文で結果を返す
# 関数を呼び出し、戻り値を変数resultに保存
result = add(5, 3)
print(f"5 + 3 の計算結果は {result} です。")
実行結果:
5 + 3 の計算結果は 8 です。
add(5, 3)が実行されると、関数の中でtotal = 8が計算され、その8という値がreturnによって関数の呼び出し元に返されます。そして、返された8が変数resultに代入されています。
print()で直接表示するのではなくreturnを使うことで、計算結果をさらに別の処理に使うことができるようになり、非常に便利です。
【応用編】もっと便利な関数の使い方
基本を押さえたところで、もう少し踏み込んだ応用的な使い方を見ていきましょう。これらをマスターすれば、より柔軟で効率的なコードが書けるようになります。
1. デフォルト引数:引数がなくても大丈夫!
関数を呼び出すときに、引数を省略したい場合があります。そんな時に便利なのが「デフォルト引数」です。def 関数名(引数名="デフォルト値"):のように、あらかじめ初期値を設定しておきます。
# 第2引数langにデフォルト値 "ja" を設定
def greet_language(name, lang="ja"):
if lang == "ja":
message = f"{name}さん、こんにちは!"
elif lang == "en":
message = f"Hello, {name}!"
else:
message = "言語が指定されていません。"
return message
# 第2引数を省略(デフォルト値 "ja" が使われる)
print(greet_language("佐藤"))
# 第2引数を指定
print(greet_language("John", lang="en"))
実行結果:
佐藤さん、こんにちは!
Hello, John!
greet_language("佐藤")のように引数を省略すると、自動的にlang="ja"として扱われるため、日本語の挨拶が出力されます。とても便利ですね。
2. キーワード引数:引数の順番を気にしない
引数が多くなってくると、その順番を覚えるのが大変になります。「キーワード引数」を使えば、引数名=値という形で指定できるため、順番を気にする必要がありません。
def create_user_profile(name, age, country):
return f"名前: {name}, 年齢: {age}歳, 出身国: {country}"
# 引数の順番通りに指定
profile1 = create_user_profile("山田", 30, "日本")
print(profile1)
# キーワード引数を使って順番を入れ替えて指定
profile2 = create_user_profile(country="アメリカ", name="Emily", age=25)
print(profile2)
実行結果:
名前: 山田, 年齢: 30歳, 出身国: 日本
名前: Emily, 年齢: 25歳, 出身国: アメリカ
キーワード引数を使うと、どの引数にどの値を渡しているかが一目瞭然になり、コードが読みやすくなるというメリットもあります。
【体験コーナー】ブラウザで動くPython関数
最後に、Webクリエイターの皆さんならお馴染みのHTMLファイルだけでPythonを動かしてみましょう!
以下のコードをまるごとコピーして、index.htmlのような名前で保存し、ブラウザで開いてみてください。入力した文字で挨拶を返してくれる、簡単なWebアプリケーションが完成します。
これはPyScriptという技術を使って、HTMLファイルの中で直接Pythonコードを動かしています。難しい設定は一切不要。「コピペで動く」をぜひ体験してください!
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Python関数をブラウザで体験!</title>
<!-- PyScriptの読み込み -->
<link rel="stylesheet" href="https://pyscript.net/releases/2024.1.1/core.css">
<script type="module" src="https://pyscript.net/releases/2024.1.1/core.js"></script>
<style>
body { font-family: sans-serif; padding: 2em; line-height: 1.6; }
input { padding: 8px; font-size: 1em; }
button { padding: 8px 16px; font-size: 1em; cursor: pointer; }
#output { margin-top: 1em; font-weight: bold; font-size: 1.2em; color: #2c3e50; }
</style>
</head>
<body>
<h1>挨拶ジェネレーター</h1>
<p>あなたの名前を入力してボタンを押してください。</p>
<input id="user-name" type="text" placeholder="名前を入力...">
<button py-click="generate_greeting">挨拶を生成</button>
<div id="output"></div>
<py-script>
from pyscript import document
# ★ここにPythonの関数を定義★
def create_greeting_message(name):
# 名前が空ならデフォルトの挨拶を返す
if not name:
return "お名前を入力してくださいね!"
# 名前があれば、その名前を使った挨拶文を返す
return f"{name}さん、Webの世界へようこそ!"
# ボタンがクリックされたときに実行される関数
def generate_greeting(event):
# input要素からユーザーの入力を取得
input_element = document.querySelector("#user-name")
user_name = input_element.value
# 上で定義した関数を使って挨拶メッセージを作成
message = create_greeting_message(user_name)
# 結果を表示するdiv要素にメッセージを書き込む
output_div = document.querySelector("#output")
output_div.innerText = message
</py-script>
</body>
</html>
関数を使う上で気をつけるべき点
関数は非常に強力ですが、正しく使うためにいくつか注意点があります。
-
インデントは命!
Pythonでは、インデント(字下げ)がコードのブロックを意味します。defの後の処理は、必ず同じ数のスペース(通常は4つ)でインデントしてください。インデントがずれているとエラーの原因になります。 -
わかりやすい関数名をつける
関数名は、その関数が「何をするのか」が一目でわかるような名前にしましょう。例えば、addやcreate_user_profileのように、動詞を含んだ名前が一般的です。悪い例はfunction1やprocのような、役割がわからない名前です。 -
変数のスコープを意識する
関数の中で定義した変数(ローカル変数)は、その関数の外からは使えません。これは、関数が外部に意図せず影響を与えないようにするための重要な仕組みです。
変数のスコープの例を見てみましょう。
def my_function():
# local_variableはmy_functionの中だけで有効なローカル変数
local_variable = "これは関数の中の変数です"
print(local_variable)
# 関数の実行
my_function()
# 関数の外からlocal_variableにアクセスしようとするとエラーになる
# print(local_variable) # NameError: name 'local_variable' is not defined
実行結果:
これは関数の中の変数です
最後の行のprint(local_variable)のコメントを外して実行すると、NameErrorというエラーが発生します。これは、local_variableが関数の外には存在しないためです。この「影響範囲が限定されている」という性質が、コードを安全で管理しやすくしてくれます。
まとめ:関数を使いこなして、一歩先のプログラミングへ!
今回は、Pythonの関数の基本から応用までを、たくさんのコピペで動くコードと一緒に学んできました。
- 関数は
defを使って定義する - 引数を使えば、関数に情報を渡せる
returnを使えば、関数から結果を受け取れる- デフォルト引数やキーワード引数で、もっと便利に関数を使える
関数は、プログラミングにおける最も基本的で、最も重要な概念の一つです。同じ処理を何度も書く必要がなくなり、コード全体の見通しが格段に良くなります。
まずはこの記事のサンプルコードを色々といじって、自分だけの関数を作ってみてください。「動く」を体験することが、上達への一番の近道です。
関数をマスターしたら、次はデータをまとめて扱う方法を学んでみませんか?以下の記事では、Pythonで最もよく使われるデータ構造である「リスト」や「辞書」について詳しく解説しています。