関数 concat(*args, sep=”/”)

programing
Portrait of beautiful Asian woman looking happy exploring city alone. Pretty Japanese girl enjoying good day outdoors
def concat(*args, sep="/"):
    return sep.join(args)

words = ["spam", "ham", "eggs"]
options = {"sep": "&"}
print(concat(*words, **options))

このPythonコードの実行結果は spam&ham&eggs になります。それぞれの部分について説明していきましょう。

まず、関数 concat(*args, sep="/") を見てみましょう。これは可変長の位置引数(*args)とキーワード引数(sep)を受け取る関数です。*args は、関数に渡された複数の非キーワード引数をタプルとして受け取るためのパラメータです。一方、sep はキーワード引数で、デフォルト値として “/” を持っています。

この関数の中身 return sep.join(args) は、sep で指定した文字列を使って args の各要素を連結するという意味です。例えば args["spam", "ham", "eggs"]sep"&" ならば、それぞれの文字列を "&" で連結し、 "spam&ham&eggs" を返します。

次に、words = ["spam", "ham", "eggs"]options = {"sep": "&"} の2つの変数を定義しています。これらは、上記の concat 関数に渡す引数です。

そして、print(concat(*words, **options)) により concat 関数を呼び出しています。この際、* 演算子と ** 演算子が用いられています。これらはアンパック演算子と呼ばれ、* はリストやタプルの要素をアンパック(展開)し、** は辞書のキーと値をアンパックします。したがって、*words["spam", "ham", "eggs"] を、**options{"sep": "&"} をそれぞれアンパックして、関数 concat に引数として渡しています。

結果的に、concat(*words, **options)concat("spam", "ham", "eggs", sep="&") と同じになります。これにより、sep.join(args) の部分で “&” がセパレータとして用いられ、 "spam", "ham", "eggs" が “&” で連結されることになります。

そのため、最終的な出力結果は spam&ham&eggs となるわけです。

コメント

タイトルとURLをコピーしました