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のスコープにはいくつかの基本的なルールがあります。
- ローカル変数はローカルスコープでのみアクセス可能
ローカル変数は、それが定義されている関数内でのみアクセスできます。 - グローバル変数はどこからでもアクセス可能
グローバル変数は、プログラムのどこからでもアクセスできますが、関数内でグローバル変数を変更するにはglobal
キーワードが必要です。 - ローカル変数はグローバル変数より優先される
ローカル変数とグローバル変数の名前が同じ場合、ローカル変数が優先されます。
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
関数を使用して、基本的な情報を取得および表示しています。
print()
: 値をコンソールに出力するlen()
: オブジェクトの長さを返すtype()
: オブジェクトのタイプを返す
おすすめプログラミングスクール
就職したら全額返金のウズウズカレッジが熱い!
▲YouTubeで累計390万再生を超える学習動画。学習コンテンツは、YouTubeで高評価率98.2%を誇るLinuC学習動画をさらにパワーアップした内容で提供。 さらにYouTubeでは公開していないカリキュラムを専任講師の指導の元、全て受講することが可能です。 https://www.youtube.com/playlist?list=PLXXalsdlzX-InzSH2uMWkoAdd1rE9p0O-
プログラミング未経験でも就職が可能
未経験でも正社員で働ける!?
未経験からITエンジニアを目指したい方の特化型就職サポート!
▼ブラック企業を徹底排除!
離職率/労働時間/社会保険の有無/雇用形態などで厳しい基準を設けています。全ての企業に訪問して基準を満たしているかを確認し、弊社から入社された方の定着率は93%以上と非常に高いです!
▲就職サポートのみならずIT学習のサポートも受けられる (※どちらも完全無料) ・UZUZで利用できる無料のYouTube動画はなんと20本(16時間分)!
https://www.youtube.com/playlist?list=PLXXalsdlzX-IuXHRLIrw9G55Hw6oiXQGS
https://www.youtube.com/playlist?list=PLXXalsdlzX-J7AUuw2zSHit5nRUZ3eDdz