Python の関数定義は非常にシンプルですが、その柔軟性は非常に大きいです。通常定義される必須パラメータに加えて、デフォルト パラメータ、変数パラメータ、およびキーワード パラメータも使用できるため、関数によって定義されたインターフェイスは複雑なパラメータを処理できるだけでなく、呼び出し元のコードも簡素化できます。
Python 関数には、次のようなものもあります。可変パラメータを定義できます。名前が示すように、可変パラメーターは、渡されるパラメーターの数が可変であり、1、2、または任意の数、または 0 の可能性があることを意味します。
#ケース: a2 b を計算してください。 #2 c2…。 一連の数値 a、b、c...、
が与えられた場合の数学の問題を例として考えてみましょう。
この関数を定義するには、入力パラメータを決定する必要があります。パラメータの数が不確かなので、最初は a、b、c... をリストまたはタプルとして渡せるのではないかと考えました。
関数は次のように定義できます:
def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n return sum
ただし、呼び出すときはリストを組み立てる必要があります。最初のタプル:
print(calc([1, 2, 3])) #结果:14 print(calc((1, 3, 5, 7)) #结果:84
##コードの簡略化
可変パラメータを使用する場合、関数の呼び出し方法は次のように簡略化できます:
そこで、関数のパラメータを可変パラメータに変更します:
def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum
リストまたはタプル パラメーターを定義する場合と比較して、可変パラメーターを定義する場合は、パラメーターの前に * 記号を追加するだけです。
関数内では、パラメータ番号がタプルを受け取るため、関数コードはまったく変更されません。ただし、この関数を呼び出すときは、パラメータ 0 個を含む任意の数のパラメータを渡すことができます。変数パラメータを使用してリストまたはタプルを呼び出したい場合はどうすればよいですか?
例:
nums = [1, 2, 3] print(calc(nums[0], nums[1], nums[2]))
这种写法当然是可行的,问题是太繁琐。
所以Python允许在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
nums = [1, 2, 3] calc(*nums)
*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。
可变参数允许传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。
而关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:
def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw)
函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数:
person('Michael', 30)
运行结果:
也可以传入任意个数的关键字参数:
extra = {'city': 'Beijing', 'job': 'Engineer'} person('Jack', 24, **extra)
关键字参数有什么用?
它可以扩展函数的功能。
比如,在person函数里,保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,也能收到。
试想正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。
extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra。
この記事は Python の基礎に基づいており、Python 関数のパラメーターを紹介します。 Python の関数には非常に柔軟なパラメーター形式があり、単純な呼び出しを実装できるだけでなく、非常に複雑なパラメーターを渡すこともできます。共通変数パラメータとキーワードパラメータが導入されました。
以上がPython 関数のパラメーターの簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。