Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでのアスタリスク(*と**)の使い方を徹底解説

Pythonでは、アスタリスク「*」とダブルアスタリスク「**」がさまざまな場面で登場します。一見同じ記号に見えますが、使われる文脈によって意味が大きく異なります。本記事では、それぞれの具体的な使い方と活用シーンを実行例とともに分かりやすく解説します。

中置演算子としての「*」

「*」を中置演算子として使うと、数値の積(掛け算)を求めることができます。整数・浮動小数点数・複素数など、数値型であれば同様に乗算が可能です。

例:数値の乗算

# 整数
x = 20
y = 10
z = x * y
print(z)

# 浮動小数点数
x1 = 2.5
y1 = 5.1
z1 = x1 * y1
print(z1)

# 複素数
x2 = 4 + 5j
y2 = 5 + 4j
z2 = x2 * y2
print(z2)

出力結果

200
12.75
41j

また、「*」は文字列やリスト、タプルを繰り返して拡張する用途にも使えます。

例:文字列・リスト・タプルの繰り返し

str = "Point-"
print(str * 4)

List = [4, 5, 6]
print(List * 3)

Tuple = (9, 8, 7)
print(Tuple * 2)

出力結果

Point-Point-Point-Point-
[4, 5, 6, 4, 5, 6, 4, 5, 6]
(9, 8, 7, 9, 8, 7)

接頭辞(プレフィックス)としての「*」

単一のアスタリスクは、変数や引数の前に付ける「接頭辞」としても利用できます。以下に代表的な使い方を紹介します。

イテラブルの展開

リストやタプルなどのイテラブルは、名前の前にアスタリスクを付けるだけで要素を展開できます。

week_days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
print(*week_days)

出力結果

Mon Tue Wed Thu Fri

可変長引数(*args)の受け取り

関数定義時に引数へ「*」を付けると、任意の個数の位置引数を受け取れるようになります。渡された引数はタプルとして関数内で扱われます。

def many_sums(*args):
    res = 0
    # argsタプルを反復処理して合計を計算
    for x in args:
        res = res + x
    return res

print(many_sums(1, 2))
print(many_sums(11, 21, 30))
print(many_sums(5.5, 0))

出力結果

3
62
5.5

「**」の使い方

ダブルアスタリスクは、キーワード引数を扱う際に使用します。「**kwargs」のように記述すると、個別の値としてではなく辞書(dict)形式で引数を受け取ることができます。

def join_keys(**kwargs):
    result = ""
    # kwargs辞書のキーを反復処理
    for arg in kwargs.keys():
        result += arg
    return result

def join_values(**kwargs):
    result = ""
    # kwargs辞書の値を反復処理
    for arg in kwargs.values():
        result += arg
    return result

print(join_keys(day1="Mon-", day2="Tue-", day3="Wed-", day4="Thu-"))
print(join_values(day1="Mon-", day2="Tue-", day3="Wed-", day4="Thu-"))

出力結果

day1day2day3day4
Mon-Tue-Wed-Thu-

まとめ

「*」は乗算や文字列・リストの繰り返し、イテラブルの展開、可変長引数(*args)に使われ、「**」はキーワード引数(**kwargs)の受け渡しに使われます。なお、「**」は数値間で使うとべき乗演算子として機能する点も覚えておくと便利です。これらの記号を適切に使い分けることで、柔軟で読みやすいPythonコードを書くことができます。

  1. Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例

    Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実

  2. Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで

    Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5