任意引數

Intermediate Python for Developers

Jasmin Ludolf

Curriculum Manager

已定義引數的限制

def average(values):
    """Find the mean in a sequence of values and round to two decimal places."""

    average_value = sum(values) / len(values)
    rounded_average = round(average_value, 2)
    return rounded_average

# Using six arguments print(average(15, 29, 4, 13, 11, 8))
TypeError: average() takes 1 positional argument but 6 were given
Intermediate Python for Developers

任意位置引數

  • Docstring 有助釐清自訂函式的用法

  • 任意引數可讓函式接受任意數量的引數

# 允許任意數量的位置(非關鍵字)引數
def average(*args):
    # 函式程式碼維持不變
  • 慣用命名:*args

  • 提供多種用法,且能得到預期結果!

Intermediate Python for Developers

使用任意位置引數

# 以六個位置引數呼叫 average
print(average(15, 29, 4, 13, 11, 8))
13.33
Intermediate Python for Developers

Args 形成單一可疊代物件

  • *」:將引數轉為單一可疊代物件(tuple)
# 跨多個清單計算
print(average(*[15, 29], *[4, 13], *[11, 8]))
13.33
Intermediate Python for Developers

任意關鍵字引數

# 使用任意關鍵字引數
def average(**kwargs):

average_value = sum(kwargs.values()) / len(kwargs.values()) rounded_average = round(average_value, 2) return rounded_average
  • 任意關鍵字引數:**kwargs

  • keyword=value

Intermediate Python for Developers

使用任意關鍵字引數

# 以六個 kwargs 呼叫 average
print(average(a=15, b=29, c=4, d=13, e=11, f=8))
13.33
# 以一個 kwargs 物件呼叫 average
print(average(**{"a":15, "b":29, "c":4, "d":13, "e":11, "f":8}))
13.33
  • 字典中的每個鍵值對都會對應到一個關鍵字引數與其值!
Intermediate Python for Developers

Kwargs 形成單一可疊代物件

# 以三組 kwargs 呼叫 average
print(average(**{"a":15, "b":29}, **{"c":4, "d":13}, **{"e":11, "f":8}))
13.33
Intermediate Python for Developers

一起來練習吧!

Intermediate Python for Developers

Preparing Video For Download...