python基礎文法-5 関数とモジュール

python基礎

Pythonでは、関数とモジュールを活用することで、コードを整理し、再利用性を高めることができます。本記事では、Pythonにおける関数とモジュールの基本について解説します。

関数の定義(def, return)

関数とは、一連の処理をまとめて定義し、必要なときに呼び出せる仕組みです。関数を使用すると、同じ処理を繰り返し記述する必要がなくなり、コードの可読性や保守性が向上します。特に大規模なプログラムでは、関数を適切に使うことで、コードの管理が容易になります。

関数の定義(def, return)

Pythonでは、関数を定義する際にdefキーワードを使用します。関数の処理が終了した後、returnを使うことで、処理結果を呼び出し元に返すことができます。

関数を書く際の標準的な書き方は以下の通りです:

def 関数名(引数1, 引数2, ...):
    """関数の説明"""
    処理内容
    return 戻り値
  • 関数名:関数の名前を定義します。慣例として、小文字の単語をアンダースコアで区切った形式(スネークケース)を使います。例えば、greet_usercalculate_areaなどです。
  • 引数:関数が受け取る引数を定義します。引数は必要に応じて指定し、デフォルト値を設定することもできます。
  • 関数の説明(docstring):関数の冒頭に"""関数の説明"""を追加することで、その関数が何をするのか簡単に説明することができます。これにより、後でコードを読むときに役立ちます。
  • 処理内容:関数内で実行する処理を記述します。
  • 戻り値returnを使って処理結果を呼び出し元に返します。returnを省略すると、関数はNoneを返します。
# 関数の定義
def greet(name):
    """与えられた名前に対して挨拶を返す関数"""
    return f"Hello, {name}!"

# 関数の呼び出し
print(greet("Alice"))

このコードでは、greetという関数を定義し、nameという引数を受け取っています。関数内ではf"Hello, {name}!"というフォーマットされた文字列を作成し、それをreturn文で返しています。フォーマットとは、関数内で文字列を生成する際、動的に内容を埋め込む方法です。Pythonでは、f-string(フォーマット文字列リテラル)を使用することで、コードを簡潔に書けます。関数を呼び出す際に"Alice"を引数として渡しているため、結果としてHello, Alice!が出力されます。

returnを使わない場合、関数は値を返さずに終了します。

# returnを使用しない場合
def greet(name):
    print(f"Hello, {name}!")

result = greet("Alice")
print(result)  # None

この例では、関数内で直接print()を実行しているため、結果は画面に表示されますが、関数の戻り値はNoneになります。

引数とデフォルト値

関数の引数にはデフォルト値を設定できます。デフォルト値がある場合、引数を省略するとその値が自動的に適用されます。

def greet(name="Guest"):
    return f"Hello, {name}!"

print(greet())       # Hello, Guest!
print(greet("Bob")) # Hello, Bob!

ここでは、nameのデフォルト値として"Guest"を指定しています。関数を引数なしで呼び出すとnameにはGuestが設定され、Hello, Guest!が出力されます。

可変長引数(*args, **kwargs)

可変長引数を使うと、関数に渡す引数の数を柔軟に変えられます。

# *args: 複数の位置引数を受け取る
def add_numbers(*args):
    return sum(args)

print(add_numbers(1, 2, 3, 4))  # 10

ここでは、*argsを使用して複数の数値を受け取り、それらの合計を求めています。sum(args)によって、渡されたすべての数値が足し合わされ、結果が返されます。

*argsはタプルとして扱われるため、リストと同様にインデックスでアクセスすることも可能です。

def display_numbers(*args):
    for i, num in enumerate(args):
        print(f"Index {i}: {num}")

display_numbers(10, 20, 30)

このコードでは、enumerate()を使ってargs内の各要素をインデックス付きで出力しています。

# **kwargs: キーワード引数を辞書として受け取る
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=25, city="Tokyo")

ここでは、**kwargsを使用して複数のキーワード引数を受け取り、それを辞書のように扱っています。関数内では、kwargs.items()を使って各キーと値のペアを取得し、フォーマットして出力しています。

**kwargsを活用すると、関数のパラメータを自由に追加できるため、柔軟性が向上します。

def create_profile(name, **details):
    print(f"Profile of {name}:")
    for key, value in details.items():
        print(f"  {key}: {value}")

create_profile("Alice", age=30, job="Engineer", city="New York")

このコードでは、name以外の情報をすべて**detailsに格納し、それをループで表示しています。これにより、任意の数の属性を簡単に扱うことができます。

ラムダ関数(無名関数)

ラムダ関数は、lambdaキーワードを使って定義する簡潔な関数です。ラムダ関数を使うことで、簡単な処理を一時的に定義したい場合に便利です。

ラムダ関数の標準的な書き方

ラムダ関数の基本的な構文は以下の通りです:

lambda 引数1, 引数2, ...: 処理内容
  1. lambda:ラムダ関数を定義するためのキーワードです。
  2. 引数:関数に渡す引数を指定します。複数の引数をカンマで区切って定義できます。
  3. 処理内容:引数に対して実行する処理を指定します。ラムダ関数ではreturnを使わず、処理内容をそのまま返します。
# 通常の関数
def square(x):
    return x ** 2

# ラムダ関数
square_lambda = lambda x: x ** 2

print(square(5))        # 25
print(square_lambda(5)) # 25

このコードでは、square関数とlambda式を使った関数square_lambdaが同じ動作をします。ラムダ関数は簡潔に記述できますが、複雑な処理には向いていません。

モジュールの利用

Pythonでは、既存のモジュールをインポートすることで、便利な機能を利用できます。

モジュールの標準的な利用方法

Pythonのモジュールはimportキーワードを使ってインポートし、モジュール内の関数やクラスを利用します。標準ライブラリのモジュールを使う場合、次のように記述します:

import モジュール名

また、特定の関数のみをインポートする場合は以下のように記述します:

from モジュール名 import 関数名

これにより、モジュール全体をインポートせずに必要な部分だけを取り込むことができます。

コードの例

import math  # mathモジュールをインポート

print(math.sqrt(16))  # 16の平方根を計算して出力  # 結果は 4.0

ここでは、mathモジュールをインポートしてsqrt関数を使用しています。math.sqrt(16)は16の平方根を計算してその結果を出力します。

import random  # randomモジュールをインポート
import datetime  # datetimeモジュールをインポート

# 乱数の生成
print(random.randint(1, 100))  # 1から100の間のランダムな整数を生成

# 現在の日時を取得
print(datetime.datetime.now())  # 現在の日時を出力

このコードでは、randomモジュールを使って1から100の間でランダムな整数を生成し、datetimeモジュールを使って現在の日付と時刻を取得して出力しています。

よく使われるモジュール

モジュール名 概要
math 数学的関数(平方根、三角関数など)を提供
random 乱数生成に関連する関数を提供
datetime 日時の処理に関連する関数を提供
os OSとのインタラクション(ファイル操作、環境変数など)を提供
sys Python実行環境に関する情報を提供
json JSON形式のデータの処理(読み込み、書き込み)を提供
requests HTTPリクエストを簡単に送信できるライブラリ

ユーザー定義モジュールの作成

ユーザー定義モジュールは、自分で作成したPythonファイル(.py)をモジュールとして他のファイルで利用できるようにする方法です。

ユーザー定義モジュールの作成方法と利用方法

  1. モジュールの作成
    • Pythonファイル(.py)を作成します。このファイル内に関数やクラスなどを定義し、それらを他のPythonファイルからインポートして利用できるようにします。
  2. モジュールの利用
    • import文を使ってモジュールをインポートします。モジュール内の関数やクラスを使用するには、モジュール名を指定してアクセスします。

my_module.py(作成するモジュール)

# 自作モジュールの定義

def greet(name):
    return f"Hello, {name}!"

def add(a, b):
    return a + b
  • greet関数は、引数nameに指定された名前に対して挨拶を行います。例えば、greet("Charlie")を呼び出すと、"Hello, Charlie!"という文字列を返します。

main.py(モジュールの利用)

import my_module

print(my_module.greet("Charlie"))  # Hello, Charlie!
print(my_module.add(3, 5))  
  • import my_modulemy_module.pyという自作モジュールをインポートします。
  • my_module.greet("Charlie")my_moduleモジュール内のgreet関数を呼び出し、"Charlie"という名前を渡します。関数は挨拶の文字列"Hello, Charlie!"を返します。
  • my_module.add(3, 5)my_moduleモジュール内のadd関数を呼び出し、35を引数として渡します。関数は合計値8を返します。

 

 

以上、関数とモジュールについての説明でした。次の章は、クラスとオブジェクト指向です!

error: Content is protected !!
タイトルとURLをコピーしました