Pythonのリテラルを覚えようかな。~数値・文字列・特殊表記~

ad = "広告"
print( f```この記事は{ad}を含みます。```)
# この記事は広告を含みます。

Pythonを使ううえで、リテラルという言葉をよくみかけるので、、調べてみました。リテラルとは、プログラミング言語上で「それ自体が定数値」を示す書き方を指します。

たとえば、42 と書けば数値リテラル"Hello" と書けば文字列リテラル。値を直接プログラムに埋め込むときの表現です。今回はPythonで使われる代表的なリテラルを一通り見ていきます!

1. 数値リテラル

1.1 整数リテラル

Pythonでは、42 のように10進数の整数をリテラルとして書くだけで、そのままint型として扱われる。

x = 42
print(x, type(x))  # 42 <class 'int'>
バイナリ・オクタル・16進数
  • バイナリ(2進数): 0bまたは0Bプレフィックスを使う
  • 例: 0b1010 (10進で10)
  • オクタル(8進数): 0oまたは0O
  • 例: 0o12 (10進で10)
  • 16進数: 0xまたは0X
  • 例: 0x1A (10進で26)
print(0b1010)  # 10
print(0o12)    # 10
print(0x1A)    # 26

1.2 浮動小数リテラル

小数点を含めるか、指数表記を使うと、float型のリテラルになる。

pi = 3.14159
exp = 1.2e3  # 1.2 × 10^3 = 1200.0

print(pi, type(pi))   # 3.14159 <class 'float'>
print(exp, type(exp)) # 1200.0 <class 'float'>

1.2e3 は 1.2 × 103 を意味する指数表記です。

他にも 1e-2 (0.01) のように負の指数を使うこともできます。

2. 文字列リテラル

2.1 シングルクォートとダブルクォート

Pythonでは、シングルクォート(' ')かダブルクォート(" ")、いずれを使っても文字列リテラルを表せる。

s1 = 'Hello'
s2 = "World"
print(s1, s2)  # Hello World

両者に大きな違いはありませんが、文字列内にクォートを含めたい場合にどちらを使うか選択。

2.2 三重クォート(複数行文字列)

""" ... """''' ... ''' で囲むと、複数行にわたる文字列を定義できます。

multiline = """This is a
multiple-line
string literal."""
print(multiline)

AWSのDynamoDBのUpdateによく使いそうだなぁ。。。

2.3 エスケープシーケンス

\n(改行)や \t(タブ)、\"(ダブルクォート) などをバックスラッシュでエスケープして書く。

ログとかでJSONを見やすい形で出したいときとか使えそう。

text = "He said \"Hello\".\nNew line here."
print(text)

#>>> print(text)
#He said "Hello".
#New line here.

2.4 Raw文字列(r"")

エスケープシーケンスを無効化したい場合、文字列リテラルの先頭に r を付けると、\nなどがそのままの文字として扱われる。

raw_text = r"C:\User\Documents\newfolder"
print(raw_text)  # C:\User\Documents\newfolder

3. ブールリテラルと None

3.1 ブールリテラル

Pythonの真偽値は TrueFalse というリテラルで表す(先頭大文字)。

flag = True
if not flag:
    print("This won't print if flag is True")

3.2 None

「値が存在しない」ことを示すリテラルとして None があり、他言語のnullに相当する存在ですね。

x = None
if x is None:
    print("x is None")

ここ、混乱しそう。フロントはC#とかで書いてると、、、

4. 文字列フォーマット(f-stringなど)

リテラルというより**“フォーマット文字列”ですが、Python 3.6以降では先頭にfを付けてf"...{変数}..."**が使える。

これも、もう、色んな言語で似たことができるので、混乱しないように!

name = "Kunio"
age = 4
info = f"My name is {name} and I am {age} years old."
print(info)
# My name is Kunio and I am 4 years old.
  • fの後ろに三重クォートを使えば複数行のフォーマット文字列も可能。
  • 実際の文字列リテラルに埋め込む形なので「f-stringリテラル」と呼ばれることもあります。

5. 特殊な数値リテラル

5.1 アンダースコアで桁区切り

Python 3.6以降、数値の桁区切りとしてアンダースコア _ を使えます。可読性向上に便利そうです!

million = 1_000_000
print(million)  # 1000000

よみやすい。

5.2 複素数リテラル

Python複素数をサポートしており、1+2j などと書けます。 j虚数単位。

z = 1+2j
print(z, type(z))  # (1+2j) <class 'complex'>

6. まとめ

リテラルは毎日使う要素ですが、細かい表記(バイナリや複数行文字列、raw文字列など)を知っておくと、コーディング時の柔軟性が高まりそうですね。 これを機に、普段あまり意識していなかったリテラルの書き方を再確認してゆきます。数字書くとき、_は便利。