【Pythonの基本】アスタリスク(*)の機能まとめ|*argsと**kwargsから辞書・リスト操作までのカバー画像

【Pythonの基本】アスタリスク(*)の機能まとめ|*argsと**kwargsから辞書・リスト操作まで

公開日:2025/03/08最終更新日:2025/03/10

Pythonの処理において「アスタリスク(*)」は変数を扱うにあたって、重要な機能の1つです。

リストやタプルなどの変数での応用、関数やメソッドの引数における使い方など、さまざまな場面で活用することができます。


本記事ではそんな「アスタリスク(*)」のさまざまな使い方についてを知っていきましょう。

1.Pythonでのアスタリスク(*)の役割

Pythonに限らず、プログラミングにおけるアスタリスク(*)の使用方法で真っ先に思い浮かぶのは以下のような数値の計算です。


例)

6*4 #6×4

2**5  # 2の5乗


実行結果:

24

32

Pythonにおいては数値計算以外にも以下のような使用方法があります。

  • 可変長引数の定義

  • 変数定義の拡張

  • リストやタプル、文字列などの拡張

  • リストやタプルのunpacking(アンパッキング)

上記の詳しい内容は次章以降でコード例も交えて見ていきましょう。

可変長引数とは

可変長引数とは、「関数やメソッドにおいて渡す引数の数を決めずに定義する際に使用する方法」です。Pythonで引数の前に「*」「**」がついているものが可変長引数として定義されます。


引数の中に「*」「**」をつけていい引数は1つずつです。それぞれ、「*」がついた引数を「可変長位置引数」または「*args」、「**」がついた引数を「可変長キーワード引数」または「**kwargs」と呼び、役割も変わってきます。詳しくは後述の例などを含めて、確認してみてください。

可変長位置引数と可変長キーワード引数

まず初めに、引数には可変長位置引数と可変長キーワード引数があります。具体的には以下の通りです。


例)


def func(a, b, c):

print(a)

print(b)

print(c)


# 位置引数

func(1, 2, 3)


# キーワード引数

func(a=1, c=3, b=2)


実行結果:

# 位置引数

1

2

3


# キーワード引数

1

2

3

上記からもわかるように関数を実行する際、変数名を指定せずに書いてある順番に代入するのが「位置引数」、キーワードを指定して代入するのが「キーワード引数」になります。

「*args」は余分な位置引数をタプルとして受け取り、「**kwargs」は余分なキーワード引数を辞書として受け取ります。


次章からはアスタリスクの個数ごとの使用方法を説明していきます。

2.Python変数とアスタリスク(*)1個

ここから説明するのはアスタリスクが1個の場合についてになります。

変数定義の拡張

アスタリスクを使用することで変数定義の拡張をすることが可能です。

Pythonでは複数の変数を以下のように同時に定義できます。


a1,a2,a3=1,2,3

print(a1)

print(a2)

print(a3)


実行結果:

1

2

3

この時、左辺にカンマ区切りで定義した変数名と右辺にカンマ区切りで定義した値の数を同じにすることが必要です。同じでないと以下のようにエラーが発生します。


a1,a2=1,2,3

print(a1)

print(a2)


実行結果:

too many values to unpack (expected 2)

ここでアスタリスクの出番です。アスタリスクを使用することで右辺の値の数が多い分には対応できるようになります。

具体的には以下の通りです。


【1つ目の変数についている場合】


*a1,a2,a3,a4 = 1,2,3,4,5,6,7,8,9

print(a1)

print(a2)

print(a3)

print(a4)


実行結果:

[1, 2, 3, 4, 5, 6]

7

8

9

【2つ目以降の変数についている場合】


a1,*a2,a3,a4 = 1,2,3,4,5,6,7,8,9

print(a1)

print(a2)

print(a3)

print(a4)


実行結果:

1

[2, 3, 4, 5, 6, 7]

8

9


【リストやタプルに対して使用する場合】

list = [1, 2, 3, 4, 5]

tuple = (1, 2, 3, 4, 5)


*a1,a2 = list

a3,*a4 = tuple


print(a1)

print(a2)

print(a3)

print(a4)


実行結果:

[1, 2, 3, 4]

5

1

[2, 3, 4, 5]

上記の通り、左辺の変数名の数に対して、多い分の右辺の値をアスタリスクを付けた変数にリストとして格納します。


複数の変数を一度に定義する場合だけでなく、エラー発生時の確認にも使用できるので活用してみると良いでしょう。

タプルやリスト、文字列などの拡張

アスタリスクはかけ算と同じような方法で他のデータ型の拡張(繰り返し)をすることが可能です。

具体的には以下のようになります。


例)


# 文字列

str = “Python *”

print(str * 3)


# タプル

tuple = (2,)

print(tuple * 4)


# リスト

list1 = [1, 2, 3]

list2 = [[1, 2, 3]]

print(list1 * 3)

print(list2 * 2)


実装結果:

# 文字列

Python Python Python *


# タプル

(2, 2, 2, 2)


# リスト

[1, 2, 3, 1, 2, 3,1, 2, 3]

[[1, 2, 3], [1, 2, 3]]

こちらのようにアスタリスクを使うことで同じ値を複数に拡張することが可能です。値を複数表示したい場合や同じ値で増やしたい場合などに活用すると良いでしょう。

リストやタプルなどのunpacking(アンパッキング)

リストやタプル、辞書などの複数の値を含んでいるデータ型アンパッキング(展開または分解)する際にもアスタリスクは活用されます。

それぞれ見ていきましょう。


例)


# タプル

tuple = (1, 2, 3)

print(*tuple)


# リスト

list = [1, 2, 3, 4]

print(*list)


# 辞書

dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

print(*dict)

print(*dict.values())


実行結果:

# タプル

1 2 3


# リスト

1 2 3 4


# 辞書

key1 key2 key3

value1 value2 value3

上記のようにリストやタプル、辞書を展開することが可能です。この機能はデバッグやエラーなどのログ表示で活用できるでしょう。

可変長引数の位置引数定義(*args)

可変長の位置引数の基本

関数の引数定義において、アスタリスクが1個で定義可能なのが「可変長の位置引数」です。具体的に見ていきましょう。


例)


def func(*args):

print(args)


func(1)

func(1, 2, 3)

func(1, 2, 3, “aaa”)


実行結果:

(1,)

(1, 2, 3)

(1, 2, 3, “aaa”)

このように可変長の位置引数は関数内でタプル型で格納されます。引数に指定するデータ型は統一しなくとも実行が可能です。

可変長の位置引数の注意点

可変長の位置引数を関数に使用する場合には他の引数を定義することも可能ではあります。しかし、その場合は可変長の位置引数の前に定義するか、後に定義するかで注意が必要です。


def func(before, *args, after):

print(before)

print(args)

print(after)

# OK

func(1, 2, 3, after=“aaa”)


#NG

func(1, 2, 3, “aaa”)


実行結果:

# OK

1

(2, 3)

aaa


# NG

TypeError: func() missing 1 required keyword-only argument: 'after'

上記からわかるように可変長の位置引数の前にある引数(例のbefore)は通常の位置引数と同じように使用することが可能になります。しかし、可変長の位置引数の後にある引数(例のafter)はキーワード引数として代入しないとエラーとなり実行が不可能です。


これはキーワード引数以外が可変長の位置引数の一部と認識され、最後の変数が未代入扱いにされてしまうという処理が発生しています。


こちらを防ぎたい場合の対処法の1つが以下のように後の引数にデフォルト値を設定する方法です。


例)


def func(before, *args, after=”default”):

print(before)

print(args)

print(after)


func(1, 2, 3, “aaa”)


実行結果:


1

(2, 3, 'aaa')

default

値をリストや辞書型に変換する際などに重宝する処理なので、しっかりと使用方法を覚えておきましょう。


関連記事

Python配列完全ガイド|初期化・追加・操作・要素数・二次元化から配列操作・連想配列まで徹底解説

3.Python変数とアスタリスク(**)2個

可変長引数のキーワード引数定義(kwargs)

可変長のキーワード引数の基本

関数定義でアスタリスクが2個で定義可能なのが「可変長のキーワード引数」です。


例)


def func1(before, **kwargs):

print(before)

print(kwargs)


def func2(*args, **kwargs):

print(args)

print(kwargs)


func1('位置変数', a='aaa', b='bbb', c='ccc')

func2('位置変数', 'キーワード引数',  a='aaa', b='bbb', c='ccc')


実行結果:

位置変数

{‘a’: ‘aaa’, ‘b’: ‘bbb’, ‘c’: ‘ccc’}


('位置変数', 'キーワード引数')

{‘a’: ‘aaa’, ‘b’: ‘bbb’, ‘c’: ‘ccc’}

func1のように通常の引数と可変長のキーワード引数を組み合わせることも可能ですが、基本的にはfunc2のように可変長の位置引数と可変長のキーワード引数はセットで使用されます。

可変長のキーワード引数の注意点

キーワード引数と位置引数は順番が大切です。位置引数とキーワード引数の順番をバラバラに代入した場合はエラーとなってしまうため注意しましょう。


例)


def func(*args, **kwargs):

print(args)

print(kwargs)


func2(a='aaa', '位置変数', 'キーワード引数',  b='bbb', c='ccc')


実行結果:

SyntaxError: positional argument follows keyword argument

上記のような代入を行った場合にはエラーが発生してしまいます。関数の実行を行う際には位置引数とキーワード引数のまとまりにして代入するようにしましょう。


関連記事

Pythonとは?コードの具体例など人気プログラミング言語を初心者にわかりやすく解説

4.まとめ

ここまでPythonでのアスタリスク「*」の使用方法について紹介してきました。


本業でPythonの開発チームに加わった時やフリーランスで業務を受けた時にお客様のルールにもよりますが、本記事で紹介した機能を活用することでエラーを減らし、業務の効率化も期待できるでしょう。


本記事が皆様にとって少しでもお役に立てますと幸いです。


フリーランスボード」は、数多くのフリーランスエージェントが掲載するITフリーランスエンジニア・ITフリーランス向けの案件・求人を一括検索できるサイトです。


開発環境、職種、単価、稼働形態、稼働日数など様々な条件から、あなたに最適なフリーランス案件・求人を簡単に見つけることができます。

単価アップを目指す方や、自分の得意なスキルを活かせる案件に参画したい方は、ぜひ「フリーランスボード」をご利用ください。

無料で登録したらスカウトを待つだけ フリーランスの新しい仕事探しを始めよう

この記事の監修者

笠間 慎

大学卒業後、人材紹介会社にコンサルタントとして従事。フリーランスとして独立。その後、フリーランス案件サイト「フリーランススタート」の立ち上げに編集長兼ライターとして参画し、月間30万人が利用する人気メディアへと成長させる。 2024年より、フリーランスボード編集長に就任。自身の経験を元に、フリーランスの活躍を支援する情報を発信している。

運営者情報

「フリーランスボード」はINSTANTROOM株式会社によって運営されています。編集は同社のフリーランスボードコンテンツ制作チームが担当しています。

会社名

INSTANTROOM株式会社

設立年月日

2021年3月31日

事業内容

フリーランスボード

ギョーテン

EngineerDASH

FreelanceBase

コンテンツ制作

運営ポリシー

フリーランスボードは、すべてのフリーランスが安心して活躍できる社会を目指し、公平かつ信頼できる情報を分かりやすく提供することに努めます。 私たちは、一次情報に基づいた正確なコンテンツや求人案件情報を通じ、 フリーランスの皆さまが最適な案件選びやキャリア形成を行えるようサポートします。

フリーランスボードの調査リリース

ITフリーランス及びフリーランスエージェント市場白書 2025フリーランスエージェント及びITフリーランス人材の市場調査【2024年版】

フルリモート案件を 無料登録した方限定で配信中

目次

1.Pythonでのアスタリスク(*)の役割

可変長引数とは

可変長位置引数と可変長キーワード引数

2.Python変数とアスタリスク(*)1個

変数定義の拡張

タプルやリスト、文字列などの拡張

リストやタプルなどのunpacking(アンパッキング)

可変長引数の位置引数定義(*args)

可変長の位置引数の基本

可変長の位置引数の注意点

3.Python変数とアスタリスク(**)2個

可変長引数のキーワード引数定義(kwargs)

可変長のキーワード引数の基本

可変長のキーワード引数の注意点

4.まとめ