はじめに
Day4.5までに、基本的な文法、データ型、そして制御フローを学びました。これらを組み合わせることで、一連の処理を記述できるようになりましたが、同じ処理を何度も書くのは非効率的です。Day5では、関数について学習し、プログラムの再利用性、可読性、保守性を向上させる方法を学んでいきます。
まだまだ基本的な内容が続いていきますが、一旦基礎を学びなおしていきたいと思います。
関数の基本と定義方法
関数とは、特定の処理をひとまとめにしたブロックであり、必要なときに何度でも呼び出して利用できる仕組みです。
defキーワードによる関数の定義
Pythonで関数を定義するには、defキーワードを使います。
Python
def greet():
"""簡単な挨拶を出力する関数"""
print("こんにちは!Pythonへようこそ。")
関数の呼び出し
-
greet()
関数の定義は、defの後に関数名、そして丸括弧 () とコロン : を付け、インデントされたコードブロックに処理内容を記述します。 -
ドキュメンテーション文字列(Docstring)
上記の例にある"""..."""で囲まれた文字列は、Docstring(ドキュメンテーション文字列)と呼ばれ、関数の説明を記述します。これは、関数が何をするものなのかを他の開発者や将来の自分に伝えるために非常に重要です。help(greet)のようにhelp()関数で参照できます。
引数と戻り値
関数をより柔軟に使うためには、引数と戻り値が不可欠です。
- 引数(Arguments)
引数は、関数が処理を行うために外部から受け取る値です。関数定義の丸括弧内に変数名として記述します。
Python
def greet_user(name):
"""引数で受け取った名前を使って挨拶する関数"""
print(f"こんにちは、{name}さん!")
引数として値を渡して呼び出す
- greet_user("アリス")
戻り値(Return Value)
関数が処理した結果を呼び出し元に返すために、return文を使います。return文が実行されると、関数の処理はそこで終了します。
Python
def add(a, b):
"""2つの数値を受け取り、その合計を返す関数"""
result = a + b
return result
戻り値を変数に格納
sum_result = add(10, 5)
print(sum_result) # 出力: 15
※return文がない関数は、自動的に特別な値であるNoneを返します。
引数の種類と渡し方
Pythonの関数は、引数の渡し方に関して非常に柔軟です。
- 位置引数(Positional Arguments)
関数を呼び出す際に、定義された順序(位置)に従って値を渡す方法です。
Python
def describe_pet(animal, name):
print(f"この動物は{animal}で、名前は{name}です。")
describe_pet("犬", "ポチ")
- キーワード引数(Keyword Arguments)
引数名を明示して値を渡す方法です。順序を気にせず渡すことができ、コードの可読性が上がります。
Python
# 順序を入れ替えても、引数名が一致していれば問題ない
describe_pet(name="タマ", animal="猫")
- デフォルト引数(Default Arguments)
関数定義時に引数にデフォルト値(初期値)を設定しておくことで、呼び出し時にその引数を省略可能にします。
Python
def describe_car(color, maker="トヨタ"):
print(f"メーカーは{maker}で、色は{color}です。")
describe_car("赤") # makerにデフォルト値が使われる
describe_car("青", "ホンダ") # makerが上書きされる
可変長引数(*argsと**kwargs)
関数が受け取る引数の数が決まっていない場合に、可変長引数を使います。
- タプルで受け取る可変長位置引数(*args)
引数名の前にアスタリスクを1つつけると、渡されたすべての位置引数をタプルとして受け取ります。
Python
def calculate_sum(*numbers):
"""任意の数の引数の合計を計算する"""
return sum(numbers)
print(calculate_sum(1, 2, 3, 4)) # 出力: 10
- 辞書で受け取る可変長キーワード引数(**kwargs)
引数名の前にアスタリスクを2つつけると、渡されたすべてのキーワード引数を辞書として受け取ります。
Python
def print_user_info(**info):
"""任意のユーザー情報を辞書として受け取り表示する"""
for key, value in info.items():
print(f"{key}: {value}")
print_user_info(name="Ken", age=35, job="Engineer")
今回のまとめ
Day5の学習内容の振り返り
Day5では、再利用可能なコードを作成するための最も重要な要素である関数について学びました。
定義: defキーワードとDocstring。
基本: 引数とreturnによる戻り値。
応用: 位置引数、キーワード引数、デフォルト引数、そして可変長引数(*args, **kwargs)。
※なんとなく理解はしていたものの、厳密な定義を改めて試験で問われると考えると、やはり学習しなおして正解だなぁと思いました。
前回の記事作成から2か月も経っていました。。備忘録としても記事にするのは役立ちますね。
安心安全のホワイト高還元SESに転職を考えている方へ
新しい挑戦に踏み出すことは、人生において重要な一歩です。 転職活動は自分自身を知り、成長する貴重な機会でもあり、夢や成長を追求するためには必要な要素の一つ になるかと思います。 どんな選択をされるにせよ、その決断があなたに取って素晴らしい未来を切り開くことを願っています! グラディートと一緒に誇れるエンジニアを目指しましょう!
■『株式会社グラディート』では受託開発・SES・ブランディングデザイン・事業コンサルティングなどを事業として行う都内のIT企業です。現在、不遇な待遇で困っているエンジニアさんは、ぜひ一度グラディートに相談してみてね!(年収査定・SESへの転職相談も承っております!)
株式会社グラディート採用情報はこちら▼
https://en-gage.net/gradito/
株式会社グラディート公式サイトはこちら▼
https://www.gradito.co.jp/