ホームページ >バックエンド開発 >Python チュートリアル >Python 上級チュートリアル: 関数パラメータの複数の転送方法

Python 上級チュートリアル: 関数パラメータの複数の転送方法

WBOY
WBOYオリジナル
2016-06-16 08:42:211056ブラウズ

関数への引数の受け渡しについてはすでに触れました。その際、位置に応じて対応するパラメータを渡しました。さらにパラメータを渡すメソッドについても触れます。

位置転送の呼び出し:

コードをコピー コードは次のとおりです:

def f(a,b,c):
a+b+cを返します

print(f(1,2,3))


f が呼び出されると、位置に応じて 1、2、3 がそれぞれ a、b、c に渡されます。

キーワードの受け渡し

場合によっては、ポジションパスの使用が堅苦しく感じることがあります。キーワードの受け渡しとは、各パラメーターの名前に従ってパラメーターを渡すことです。キーワードは位置の対応に従う必要はありません。上記の f の定義を引き続き使用し、呼び出しメソッドを変更します。

コードをコピー コードは次のとおりです:

print(f(c=3,b=2,a=1))

キーワードの受け渡しは、位置の受け渡しと組み合わせることができます。ただし、位置パラメータはキーワード パラメータの前に指定する必要があります:

コードをコピー コードは次のとおりです:

print(f(1,c=3,b=2))

パラメータのデフォルト値

関数を定義するときは、a=19 の形式を使用してパラメータにデフォルト値を割り当てます。このパラメータに最終的に値が渡されない場合は、このデフォルト値が使用されます。

コードをコピー コードは次のとおりです:

def f(a,b,c=10):
a+b+cを返します

print(f(3,2))
print(f(3,2,1))


関数 f を初めて呼び出すとき、十分な値がありません。c には値が割り当てられておらず、c はデフォルト値 10 を使用します。

関数が 2 回目に呼び出されるとき、c には値 1 が割り当てられ、デフォルト値は使用されなくなります。

荷物の配達

関数を定義するとき、呼び出し時に渡されるパラメーターの数がわからないことがあります。現時点では、パラメータを渡すために位置パラメータをラップしたり、キーワード パラメータをラップしたりすると非常に便利です。

以下は荷物の場所への配送の例です:

コードをコピー コードは次のとおりです:

def func(*name):
印刷タイプ(名前)
名前を印刷します

関数(1,4,6)
func(5,6,7,1,2,3)


2 つの呼び出しは、パラメーターの数が異なりますが、同じ関数定義に基づいています。 func のパラメータ テーブルでは、すべてのパラメータが名前ごとに収集され、その位置に従ってタプルにマージされます。これがパッケージの位置転送です。

Python パラメータを思い出させるために、name は位置転送をパッケージ化するために使用されるタプル名です。func を定義するときは、name の前に * 記号を追加します。

以下はラップされたキーワードの受け渡しの例です:

コードをコピー コードは次のとおりです:

def func(**dict):
印刷タイプ(dict)
辞書を印刷

関数(a=1,b=9)
func(m=2,n=1,c=11)


上の例と同様に、dict はすべてのキーワードを収集し、関数 func に渡す辞書です。 Python に思い出していただくと、パラメーター dict はキーワード パスをラップするために使用される辞書であり、dict の前に ** を追加します。

パッケージ配信の鍵は、関数を定義するときに、対応するタプルまたは辞書の前に * または ** を追加することです。

開梱

* と ** は、呼び出し、つまり解凍するときにも使用できます。次に例を示します。

コードをコピー コードは次のとおりです:
def func(a,b,c):
a、b、c を印刷
引数 = (1,3,4)

func(*args)

この例では、いわゆるアンラップとは、タプルを渡すときに、タプルの各要素が位置パラメータに対応することを意味します。 func を呼び出すときに * を使用する目的は、引数を 3 つの分散要素に分割し、それぞれ a、b、c に渡したいということを Python に思い出させるためです。 (func を呼び出すときに引数の前に * がない場合にどのような結果が生じるかを想像してみてください。)
同様に、同じ func 定義を使用した辞書のアンラップもあり、次のようになります。


コードをコピー コードは次のとおりです: dict = {'a':1,'b':2,'c':3}
func(**dict)


辞書の dict を渡すときは、辞書の各キーと値のペアをキーとして func に渡します。

混ぜる
パラメータを定義または呼び出す場合、パラメータの複数の配信方法を混在させることができます。ただし、手順には注意してください。基本的な原則は、最初に位置、次にキーワード、次に位置をラップ、次にキーワードをラップし、上記の原則に基づいて詳細に区別することです。

注: 定義と呼び出しの違いに注意してください。ラッピングとアンラッピングは相反する操作ではなく、比較的独立した 2 つのプロセスです。

概要

キーワード、デフォルト値、

荷物の場所、荷物のキーワード

開梱

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。