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の真偽値は True
と False
というリテラルで表す(先頭大文字)。
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.
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. まとめ
- 整数リテラル: 10進数のほか、
0b
(2進),0o
(8進),0x
(16進) で表現 - 浮動小数点リテラル:
3.14
や1e-3
の指数表記 - 文字列リテラル:
'...'
/"..."
/'''...'''
/r"..."
など多彩 - ブールリテラル:
True
/False
None
: 値が存在しないことを示すリテラル- 複素数:
1+2j
のように書ける - f-string: 文字列リテラル内に変数や式を埋め込める強力な機能
リテラルは毎日使う要素ですが、細かい表記(バイナリや複数行文字列、raw文字列など)を知っておくと、コーディング時の柔軟性が高まりそうですね。
これを機に、普段あまり意識していなかったリテラルの書き方を再確認してゆきます。数字書くとき、_
は便利。