Pythonにおけるアンダースコア(_)の意味と使い方をわかりやすく解説
Pythonでは、アンダースコア(_)は特別な役割を持つ記号です。一見ただの文字に見えますが、実際にはインタープリタの動作や命名規則、数値リテラルの表記など、さまざまな場面で重要な働きをします。この記事では、Pythonでアンダースコアが使われる主な5つのケースを、コード例とともにわかりやすく解説します。
1. インタープリタで直前の式の値を保持する
Pythonの対話モード(インタープリタ)では、直前に評価した式の結果が、特別な変数「_」に自動的に格納されます。計算結果をすぐに再利用したいときに非常に便利です。
使用例
>>> 12 + 10 22 >>> _ 22
このように「_」を参照すると、直前の出力値「22」をそのまま取得できます。
2. 不要な値を無視するためのプレースホルダー
タプルのアンパックなどで特定の値を使用しない場合にも、アンダースコアが活躍します。ElixirやErlangなど、他の言語でも同様の慣習が見られます。不要な値に「_」を代入しておけば、「この値は意図的に使わない」ということがコード上で明確になります。
使用例
>>> _, _, a = (1, 2, 3) >>> a 3
この例では、1つ目と2つ目の要素を無視し、3つ目の値だけを変数aに取り出しています。
3. 変数名・関数名に特別な意味を持たせる
名前の先頭にアンダースコアを1つ付けた変数や関数(例:_var、_func)は、「モジュール内部向け(プライベート)」であることを示す慣習的な表現として使われます。
また、from module import * でインポートした場合、先頭にアンダースコアが付いた名前は読み込まれません。さらに、先頭と末尾にダブルアンダースコアを付けた名前(例:__method)は、クラス内で名前マングリング(名前の自動変換)の対象になるなど、より強い特殊な扱いを受けます。
4. 数値リテラルの桁区切りに使う
Python 3.6以降では、大きな数値を読みやすくするために、桁の間にアンダースコアを挿入できます。桁区切りのカンマのような感覚で使えるため、巨大な数値の可読性が大幅に向上します。
使用例
>>> a = 7_200_000_000 # 72億を見やすく表記 >>> a 7200000000
※この機能はPython 3.6で追加されたものです。
5. 国際化(i18n)の翻訳関数として使う
国際化(i18n)の分野でも、アンダースコアは慣習的な名前として広く使われています。gettextなどの翻訳ライブラリでは、翻訳対象の文字列を _("Hello") のように囲むのが一般的です。
使用例
import gettext
gettext.install("myapp")
print(_("Hello World")) # ロケールに応じた翻訳済み文字列を出力まとめ
アンダースコア(_)は、Pythonにおいて次のような多彩な役割を担っています。
- 対話モードで直前の式の結果を保持する
- 不要な値を明示的に無視する
- 変数・関数が内部向けであることを示す(慣習)
- 数値リテラルの桁区切りで可読性を高める(Python 3.6以降)
- 国際化ライブラリの翻訳関数名として使う
それぞれの使い方を理解しておくことで、Pythonコードの可読性と保守性を高め、意図が伝わりやすいプログラムを書けるようになります。
-
Pythonでmkdir -pと同じようにディレクトリを再帰的に作成する方法
mkdir -pとは?UnixやLinuxのコマンドであるmkdir -pは、親ディレクトリが存在しない場合でも、必要な階層のディレクトリをまとめて一括作成できる便利なオプションです。また、指定したディレクトリがすでに存在していてもエラーにならず、そのまま処理が続行されます。Pythonでmkdir -pと同等の処理を行うにはPythonで同じことを実現するには、標準ライブラリのosモジュールにあるos.makedirs()関数を使用します。この関数に作成したいパスを渡すことで、中間の親ディレクトリも含めて再帰的にディレクトリを作成できます。exists_ok=True を指定するデフォルトで
-
Pythonでテキストファイルを読み書きする方法【初心者向け解説】
テキストファイルとバイナリファイルの違いテキストファイルとは、人間が読める文字だけで構成されたファイルのことです。その対になる存在が「バイナリファイル」で、こちらは読み取り可能な文字列として構成されていないファイル全般を指します。JPEGやGIFなどの画像ファイル、MP3などの音声ファイル、WordやPDFのようなドキュメント形式などがその代表例です。両者の最大の違いは、バイナリファイルを正しく扱うには専用のプログラム(あるいはそのフォーマットに関する専門知識)が必要という点です。一方、テキストファイルはプレーンテキストを編集できるあらゆるソフトウェアで開けるうえ、Pythonのようなプログラ