1. 関数とは何ですか
Python では、関数は特定のタスクまたは操作を実行する再利用可能なコード ブロックです。関数は入力パラメーターを受け取り、出力結果を返すことができるため、モジュール化されたカプセル化されたプログラミングの目的を達成できます。Python で関数を定義するための構文は次のとおりです。
def function_name(parameters):
"""
Function documentation string.
"""
# Function body goes here.
return [expression]
このうち、def
は関数を定義するキーワード、function_name
は関数の名前、parameters
は関数のパラメータリストを括弧で囲みます。複数のパラメータはカンマで区切られます。パラメータがない場合は空白のままにしてください。関数名とパラメーター リストは関数のシグネチャを形成し、関数を一意に識別して呼び出すために使用されます。
関数の本体はコロンとインデントされたコード ブロックで構成され、通常は特定の計算や操作を完了するためのいくつかのステートメントと式が含まれています。関数のドキュメント文字列は、関数の関数、パラメータ、戻り値、その他の情報を説明するために使用されるオプションの文字列で、help()
組み込み関数を通じて表示できます。
関数の実行後、return
ステートメントを使用して値 (式) を返すことも、値を返さないこともできます。この場合、デフォルトで が返されますNone
。
以下は、関数を定義して呼び出す方法を示す簡単な例です。
def add_numbers(a, b):
"""
Add two numbers and return the result.
"""
return a + b
x = 3
y = 4
z = add_numbers(x, y)
print(z) # Output: 7
add_numbers
上の例では、 2 つのパラメーターを受け取りa
、それらの合計を返す関数を定義しましたb
。次に、x
との値をy
それぞれ 3 と 4 に設定し、add_numbers
関数を呼び出してそれらの合計を計算し、最後に結果z
を変数に代入して出力します。
2. 関数パラメータ
Python の関数は、位置パラメータ、デフォルト パラメータ、変数パラメータ、キーワード パラメータ、その他のさまざまな種類のパラメータを含む複数のパラメータを受け入れることができます。一つずつ紹介していきましょう。
2.1 位置パラメータ
位置パラメータは、パラメータの位置の順序で渡されるパラメータを指し、必須パラメータとも呼ばれます。関数が呼び出されるときは、関数定義のパラメータ リストに従って、対応する数の位置パラメータを順番に渡す必要があります。例えば:
def greet_user(name):
"""
Greet the user with a personalized message.
"""
print(f"Hello, {name}!")
greet_user("Alice") # Output: Hello, Alice!
greet_user("Bob") # Output: Hello, Bob!
greet_user
上の例では、位置パラメーターを受け入れてパーソナライズname
された挨拶メッセージをユーザーに送信する関数を定義しました。greet_user
次に、それぞれの関数を呼び出し、異なるパラメータ値を渡して、異なる挨拶メッセージを出力します。
2.2 デフォルトパラメータ
デフォルトパラメータとは、関数定義時に与えられる固定のパラメータ値を指し、省略することもデフォルト値を使用することもできます。関数が呼び出されたときに、対応するパラメーターが指定されていない場合は、代わりにデフォルト値が使用されます。例えば:
def greet_user(name, message="How are you doing?"):
"""
Greet the user with a personalized message.
"""
print(f"Hello, {name}! {message}")
greet_user("Alice") # Output: Hello, Alice! How are you doing?
greet_user("Bob", "Nice to meet you")# Output: Hello, Bob! Nice to meet you
上の例では、greet_user
関数の定義を変更し、デフォルトのパラメータを追加しmessage
、そのデフォルト値を「How are you doing?」に設定しました。
次に、関数を個別に呼び出してgreet_user
、異なるパラメーター値を渡します。最初の呼び出しでは必要なパラメーターのみが提供されるname
ため、欠落しているパラメーター値の代わりにデフォルト値「How are you doing?」が使用されます。2 番目の呼び出しでは、2 つのパラメーター値を明示的に提供するため、デフォルト値がオーバーライドされます。関数定義では、デフォルト パラメータは位置パラメータの後に配置する必要があります。
2.3 可変パラメータ
可変パラメーターは、任意の数のパラメーターを受け入れることができる関数を指し、可変長パラメーターとも呼ばれます。Python には、*args と **kwargs の 2 種類の可変個引数があります。
*args は、任意の数の位置パラメータを受け入れることを意味します。パラメータはタプルにパックされて関数に渡されます。例えば:
def add_numbers(*nums):
"""
Add any number of numbers and return the result.
"""
total = 0
for num in nums:
total += num
return total
sum1 = add_numbers(1, 2, 3) # Output: 6
sum2 = add_numbers(4, 5, 6, 7, 8) # Output: 30
add_numbers
上の例では、可変引数 *nums 引数を使用して任意の数の位置引数を受け取り、それらを合計して結果を返す関数を定義します。ループを使用して関数内のすべてのパラメーターを処理する場合、最初にパラメーターをタプルにパックする必要があることに注意してください。
**kwargs は、任意の数のキーワード パラメータを受け入れることを意味します。パラメータは辞書 (dict) にパックされ、関数に渡されます。例えば:
def print_info(**kwargs):
"""
Print out the key-value pairs of any number of keyword arguments.
"""
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=23, gender="female")
# Output:
# name: Alice
# age: 23
# gender: female
print_info
上の例では、可変長引数 **kwargs を使用して任意の数のキーワード引数を受け入れ、各引数の名前と値を順番に出力する関数を定義します。
2.4 キーワードパラメータ
キーワード パラメータは、名前付きパラメータとも呼ばれる、正式なパラメータ名に従って明示的に渡されるパラメータを指します。関数を呼び出すときは、仮パラメータ名を使用して、対応するパラメータ値を識別し、渡すことができます。例えば:
def greet_user(name, message="How are you doing?"):
"""
Greet the user with a personalized message.
"""
print(f"Hello, {name}! {message}")
greet_user(name="Alice") # Output: Hello, Alice! How are you doing?
greet_user(message="Nice to meet you", name="Bob") # Output: Hello, Bob! Nice to meet you
上記の例では、渡されるパラメータ値を指定するために正式なパラメータ名を使用し、パラメータの意味と順序をより明確に表現しています。これは、インターフェイスが複雑な場合、または多数のパラメーターがある場合に特に便利です。
3. 機能範囲
Python では、関数には独自のスコープがあり、これは変数やオブジェクトのアクセス スコープです。関数の内部で定義された変数はローカル変数であり、関数の内部でのみ使用できます。関数の外部で定義された変数はグローバル変数で、関数の内部と外部の両方で使用できます。例えば:
x = 10 # Global variable
def print_x():
"""
Print out the value of global variable x.
"""
print(x)
print_x() # Output: 10
上の例では、グローバル変数を定義しx
、print_x
その値を関数で出力しました。はグローバル変数であるためx
、関数内で直接アクセスして使用できます。
ただし、関数内でグローバル変数の値を変更しようとすると、エラーが表示されます。関数内でグローバル変数の値を変更するには、次のglobal
キーワードを使用して宣言する必要があります。
x = 10 # Global variable
def modify_x():
"""
Modify the value of global variable x.
"""
global x
x = 20
modify_x()
print(x) # Output: 20
上の例では、グローバル変数を定義しx
、関数内のキーワードmodify_x
を使用してその値を変更できるようにグローバル変数であることを宣言しています。関数呼び出し後、値は 20 に変更されます。global
x
x
Python では、ローカル変数とグローバル変数の名前を繰り返すことができないことに注意してください。そうしないと、名前の競合やスコープ エラーが発生します。グローバル変数の値を変更せずに関数内で使用する場合は、global
キーワードを使用して参照するか、パラメータとして関数に渡すことができます。
4. 匿名関数
Python の匿名関数 (ラムダ関数) は、名前を持たない特別なタイプの関数で、通常は式のみを含み、任意の数の引数を受け入れることができます。無名関数の構文は次のとおりです。
lambda parameters: expression
このうち、lambda
はキーワード、 はparameters
パラメータリストです。複数のパラメータはカンマで区切られます。パラメータがない場合は空白のままにしてください。expression
これは関数本体であり、特定の計算または操作を実行して結果を返すために使用されます。
たとえば、ラムダ関数を使用して 2 つの数値の合計を計算する例を次に示します。
add_numbers = lambda x, y: x + y
sum1 = add_numbers(3, 4) # Output: 7
sum2 = add_numbers(-5, 10) # Output: 5
add_numbers
上の例では、 2 つのパラメーター x と y を受け取り、それらの合計を計算して結果を返す無名関数を定義しました。add_numbers
次に、関数を個別に呼び出し、異なるパラメータ値を渡して、異なる結果を出力します。
匿名関数は通常、単純な 1 回限りの操作に使用されるか、または他の関数に引数として渡されるために使用されます。匿名関数には名前がないため、コードが保存され、読みやすくなります。
5. まとめ
Python では、関数は特定のタスクまたは操作を実行する再利用可能なコード ブロックです。関数は入力パラメーターを受け取り、出力結果を返すことができるため、モジュール化されたカプセル化されたプログラミングの目的を達成できます。Python の関数には、位置パラメータ、デフォルト パラメータ、変数パラメータ、キーワード パラメータなど、複数のタイプのパラメータがあります。関数には独自のスコープもあります。ローカル変数とグローバル変数の名前を繰り返すことはできません。global
グローバル変数の値を宣言および変更するには、キーワードを使用する必要があります。最後に、Python は匿名関数 (ラムダ関数) もサポートしています。これは、単純な 1 回限りの操作に使用されたり、引数として他の関数に渡されたりすることがよくあります。