【Python関数】理解と活用 Part-1はこちら

6. 可変長引数

6-1. 可変長引数とは?

通常の関数は固定された数の引数を受け取ります。しかし、可変長引数を使用すると、関数は任意の数の引数を受け取ることができます。

# 可変長引数を持つ関数の例
def add_numbers(*args):
    total = 0
    for num in args:
        total += num
    return total

# 関数呼び出し
result = add_numbers(1, 2, 3, 4, 5)
print(result)  # 出力: 15

上記のadd_numbers関数は、*argsという可変長引数を持っています。これにより、この関数は任意の数の引数を受け取ることができ、それらの引数はargsというタプルとして関数内で利用できます。

この例では、5つの引数をadd_numbers関数に渡しており、関数はこれらの引数の合計を計算して返しています。

6-2. *args**kwargsの説明と利用例

*args**kwargsは、Pythonで可変長引数を扱うための標準的な慣習です。それぞれのキーワードは異なるタイプの引数を受け取ります。

*args
任意の数の位置引数を受け取るために使用されます。これらの引数は、関数内でタプルとしてアクセスされます。

**kwargs
任意の数のキーワード引数を受け取るために使用されます。これらの引数は、関数内で辞書としてアクセスされます。

def gather_info(*args, **kwargs):
    print(f"Arguments: {args}")
    print(f"Keyword Arguments: {kwargs}")

gather_info(1, 2, 3, name="Alice", age=25)

上記のコードスニペットでは、gather_info関数は*args**kwargsを使用して可変長引数を受け取ります。

この関数を呼び出すときに、3つの位置引数(1, 2, 3)と2つのキーワード引数(name=”Alice”, age=25)を提供します。

実行結果は以下の通りです。

Arguments: (1, 2, 3)
Keyword Arguments: {'name': 'Alice', 'age': 25}

このように、*args**kwargsを使用することで、関数は任意の数とタイプの引数を受け取り、これらの引数に基づいて動作することができます。

7. スコープ

7-1. ローカルスコープとグローバルスコープの違い

スコープは主にローカルスコープとグローバルスコープの2つのタイプに分かれます。

  • ローカルスコープ
    ローカルスコープは「関数内」で定義された変数に適用されます。これらの変数は関数内でのみアクセス可能であり、関数が終了するとローカル変数は消滅します。

  • グローバルスコープ
    グローバルスコープは「関数の外」で定義された変数に適用されます。これらの変数はプログラムのどこからでもアクセスできます。

7-2. スコープのルール

Pythonのスコープにはいくつかの基本的なルールがあります。

  1. ローカル変数はローカルスコープでのみアクセス可能
    ローカル変数は、それが定義されている関数内でのみアクセスできます。

  2. グローバル変数はどこからでもアクセス可能
    グローバル変数は、プログラムのどこからでもアクセスできますが、関数内でグローバル変数を変更するにはglobalキーワードが必要です。

  3. ローカル変数はグローバル変数より優先される
    ローカル変数とグローバル変数の名前が同じ場合、ローカル変数が優先されます。
x = 10  # グローバル変数

def example():
    x = 5    # ローカル変数
    print(x) # 出力: 5

example()
print(x)  # 出力: 10

このコードでは、グローバル変数とローカル変数の概念を示しています。

example関数内で定義されたxはローカル変数で、関数の外で定義されたxはグローバル変数です。

example関数内でprint(x)を実行すると、ローカル変数xの値である5が出力されます。

しかし、関数の外でprint(x)を実行すると、グローバル変数xの値である10が出力されます。

スコープの理解は、バグを避け、コードをより整理され、読みやすくするために重要です。また、スコープのルールを遵守することで、プログラムの予測可能性と保守性を向上させることができます。

8. ラムダ関数

8-1. ラムダ関数の定義と利用例

ラムダ関数は、名前なしの小さな関数であり、lambdaキーワードを使用して定義されます。

# 例:2つの数字を加算するシンプルなラムダ関数
add = lambda a, b: a + b

# ラムダ関数の使用
result = add(5, 3)
print(result)  # 出力: 8

上記の例では、2つの数を加算するラムダ関数を定義し、それを使用しています。ラムダ関数は、シンプルで簡潔なコードを書くことを可能にし、一時的な計算や簡単なタスクを高速に実行するのに役立ちます。

8-2. ラムダ関数と通常の関数の比較

通常の関数定義

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

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

lambda関数定義

add = lambda a, b: a + b

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

文法

  • 通常の関数
    defキーワードを使って定義され、returnステートメントを使って値を返します。
  • lambda関数
    lambdaキーワードを使って定義され、returnステートメントなしで値を返します。

簡潔さ

  • 通常の関数
    少なくとも2行以上のコードが必要です。
  • lambda関数
    一行で定義でき、コードが簡潔になります。

名前付け

  • 通常の関数
    名前を持ち、defキーワードの後に名前が来ます。
  • lambda関数
    名前を持たない関数ですが、変数に代入することで名前を付けることができます。

可読性

  • 通常の関数
    読みやすく、初心者にとって理解しやすいです。
  • lambda関数
    簡潔ですが、初心者にとっては少し理解しにくい場合があります。

9. 組み込み関数

9-1. Pythonの組み込み関数

組み込み関数は、追加のインポートや設定なしで利用できる関数です。これらはPythonのコア機能の一部であり、日常のタスクを簡単に実行するのに役立ちます。

# 組み込み関数の使用例

print("Hello, World!")  # ① 出力: Hello, World!

my_list = [1, 2, 3, 4, 5]

print(len(my_list))  # ② 出力: 5

print(type(my_list))  # ③ 出力: <class 'list'>

上記のコードスニペットでは、print, len, および type関数を使用して、基本的な情報を取得および表示しています。

  1. print(): 値をコンソールに出力する
  2. len(): オブジェクトの長さを返す
  3. type(): オブジェクトのタイプを返す

Python関数Part1はこちら

おすすめプログラミングスクール

就職したら全額返金のウズウズカレッジが熱い!

▲YouTubeで累計390万再生を超える学習動画。学習コンテンツは、YouTubeで高評価率98.2%を誇るLinuC学習動画をさらにパワーアップした内容で提供。 さらにYouTubeでは公開していないカリキュラムを専任講師の指導の元、全て受講することが可能です。 https://www.youtube.com/playlist?list=PLXXalsdlzX-InzSH2uMWkoAdd1rE9p0O-

プログラミング未経験でも就職が可能

未経験でも正社員で働ける!?

▲就職サポートのみならずIT学習のサポートも受けられる (※どちらも完全無料) ・UZUZで利用できる無料のYouTube動画はなんと20本(16時間分)!

https://www.youtube.com/playlist?list=PLXXalsdlzX-IuXHRLIrw9G55Hw6oiXQGS

https://www.youtube.com/playlist?list=PLXXalsdlzX-J7AUuw2zSHit5nRUZ3eDdz