1. ホーム
  2. python

[解決済み] 位置引数v.s.キーワード引数

2022-11-08 10:36:22

質問

ベースは この

位置引数は、名前の後に等号 (=)とデフォルトの値です。

キーワード引数は、等号とデフォルト値を与える式が続くものです。 が続きます。

def rectangleArea(width, height):
    return width * height

print rectangleArea(width=1, height=2)

質問 >私は、両方の widthheight は位置引数です。では、なぜキーワード引数の構文でも呼び出せるのでしょうか?

どのように解決するのですか?

引用した文章は、2つの全く異なる事柄を混同しているようです。

私は、そのコースウェアを作った人たちは 全く Python に精通していなかったのでしょう :-) したがって、あなたが提供するそのリンクは、あまり質の良いものではありません。


あなたの を呼び出す で、あなたは "キーワード引数" 機能 (引数がその位置に依存するのではなく、名前が付けられている) を使用しています。この機能がない場合、値は順序だけに基づいて名前にバインドされます。したがって、この例では、以下の 2 つの呼び出しは等価です。

def process_a_and_b(a, b):
   blah_blah_blah()

process_a_and_b(1, 2)
process_a_and_b(b=2, a=1)

さらに例として、以下の定義と呼び出しを参照してください。

def fn(a, b, c=1):        # a/b required, c optional.
    return a * b + c

print(fn(1, 2))            # returns 3, positional and default.
print(fn(1, 2, 3))         # returns 5, positional.
print(fn(c=5, b=2, a=2))   # returns 9, named.
print(fn(b=2, a=2))        # returns 5, named and default.
print(fn(5, c=2, b=1))     # returns 7, positional and named.
print(fn(8, b=0))          # returns 1, positional, named and default.