Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 任意の位置引数 | 可変長引数
Python関数チュートリアル
セクション 3.  1
single

single

任意の位置引数

メニューを表示するにはスワイプしてください

位置引数オプション引数についてはすでに知っていますが、関数が多数の入力を受け取る場合や、事前に入力が分からない場合には、任意の位置引数を使用できます。これにより、関数は任意の数の値を受け取ることができます。

Note
注意

各引数は任意のデータ構造(リスト、辞書など)にできます。任意引数を使うことで、必要なだけ多くのオブジェクトを渡すことが可能です。

任意の位置引数を定義するには、パラメータ名の前にアスタリスク * を付けます。例:

12345678
# Define function with arbitrary positional arguments named values def calculate_sum(*values): return sum(values) # Test the function using different number of arguments print(calculate_sum(1, 2, 3)) print(calculate_sum(1, 2, 3, 4)) print(calculate_sum(1, 2, 3, 4, 5))

ここで、*values は渡されたすべての位置引数をタプルとしてまとめる。関数内では、変数名は * を付けずに使用する。引数の数に関係なく、結果は正しく計算される。

Note
注意

どんな名前でも使用できるが、一般的で読みやすい形式は *args である。

1234567891011121314
def example_function(*args): print(type(args)) print(args) for arg in args: print(arg) print('Call without arguments:') example_function() print('\nCall with one argument:') example_function(1) print('\nCall with multiple arguments:') example_function(1, 2, 3, 'hello', [4, 5, 6])

以下のようになります:

  • 引数なし → args()
  • 引数が1つ → (1,)
  • 複数の引数 → すべての値がタプルに格納されます。例:(1, 2, 3, 'hello', [4, 5, 6])

*args は通常のタプルと同様に動作し、多数の入力を柔軟に扱うことができます。

*args は単なるタプルであるため、その値に対して任意のロジック(条件分岐など)を適用できます。例えば、すべての価格を合計した後、合計値に応じて異なるルールを適用することが可能です。

空の引数の処理

*args は入力をタプルにまとめるため、ユーザーが引数を何も渡さずに関数を呼び出す可能性があります(example_function())。この場合、args は空のタプル () になります。

データを処理する前に *args が空かどうかを確認することがベストプラクティスです。空のタプルは Python では「偽」とみなされるため、簡単に確認できます。 以下は、空の *args タプルを処理する一般的な2つの方法です。

if not args の使用

if not args を使うことで、空のタプルを検出し、すぐに 0 やカスタムメッセージを返すなどの処理が可能です。

1234567891011
def calculate_average(*prices): # Checking if the tuple is empty if not prices: return 'No prices provided!' # If it's not empty, proceed with the calculation return sum(prices) / len(prices) # Testing the function print(calculate_average(10, 20, 30)) # Output: 20.0 print(calculate_average()) # Output: No prices provided!

len() で長さを確認

または、len() 関数を使って引数の総数がゼロかどうかを確認する方法もあります。

1234567
def strict_sum(*values): if len(values) == 0: print('Warning: No values received.') return 0 return sum(values) print(strict_sum()) # Output: Warning: No values received. -> 0
タスク

スワイプしてコーディングを開始

calculate_total 関数を実装し、カート内の商品の合計金額を計算し、合計金額に応じた割引を適用します。

  1. calculate_total 関数では、任意の位置引数を prices という名前で受け取ります。
  2. 引数が指定されていない場合は、'Your cart is empty.' を返します。
  3. 割引は排他的です ― 適用可能な中で最も高いもののみを適用します:
    • 合計が $200 以上の場合、20% 割引を適用します。
    • 合計が $100 以上の場合、10% 割引を適用します。
    • それ以外の場合は割引を適用しません。
  4. 最終的な合計金額をフォーマットされた文字列 'Final total: $X.XX' で返します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  1
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt