Pythonのタプルで*演算子(アスタリスク)はどのように機能するのか?
Pythonの*演算子は、シーケンスやコレクションの中身を「展開(アンパック)」し、個々の要素を位置引数として関数に渡すためのものです。
たとえば、タプルの各要素をその並び順どおりに関数の引数として渡したい場合、通常ならインデックスを使ってvalues[0]、values[1]のように一つずつ指定する必要があります。しかし、*演算子を使えば、タプル名の前に*を付けるだけで、要素が自動的に展開されて渡されます。
使用例
次のコードでは、2つの引数を受け取って掛け算をするmultiply関数に対し、タプルvaluesの要素を*演算子で展開して渡しています。
def multiply(a, b):
return a * b
values = (1, 2)
print(multiply(*values))*valuesと書くことで、タプルが展開され、実際には以下のコードが実行されたのと同じことになります。
print(multiply(1, 2))
出力結果
実行すると、次の出力が得られます。
2
補足:関数定義側での*の活用
*演算子は、呼び出し側だけでなく関数の定義側でも使えます。def func(*args)のように記述すると、可変個の位置引数をタプルとして受け取ることができます。また、辞書をキーワード引数として展開したい場合は、同様の役割を持つ**演算子を使用します。
このように*演算子を理解しておくと、タプルやリストの中身を柔軟に関数へ渡せるようになり、コードがより簡潔で読みやすくなります。
-
Pythonの正規表現における\B(非単語境界)の動作を解説
Pythonの正規表現における \B の意味とは?正規表現の \b は「単語境界」を表すメタ文字で、片側が単語構成文字(通常は英字・数字・アンダースコア)であるような位置にマッチします。一方、今回解説する \B はその逆で、「\b がマッチしないすべての位置」、つまり単語境界ではない位置にマッチします。\B の動作を確認するサンプルコード以下のコードは、re.findall() を使って正規表現 \Bcat がどのように動作するかを示したものです。import re result = re.findall(r\Bcat, certificate) result2 = re.findall(r
-
Pythonにおけるアンダースコア(_)の意味と使い方をわかりやすく解説
Pythonでは、アンダースコア(_)は特別な役割を持つ記号です。一見ただの文字に見えますが、実際にはインタープリタの動作や命名規則、数値リテラルの表記など、さまざまな場面で重要な働きをします。この記事では、Pythonでアンダースコアが使われる主な5つのケースを、コード例とともにわかりやすく解説します。1. インタープリタで直前の式の値を保持するPythonの対話モード(インタープリタ)では、直前に評価した式の結果が、特別な変数「_」に自動的に格納されます。計算結果をすぐに再利用したいときに非常に便利です。使用例>>> 12 + 10 22 >>> _ 2