整数(int)は下記の様に記述します。
num = 1234 # 正の整数 (10進数)
0o(0O), 0x(0X), 0b(0B) はそれぞれ、8進数、16進数、2進数を意味します。
num = 0b11000100 # 2進数 (0b/0Bで始まる数値は 2進数とみなされる) num = 0o777 # 8進数 (0o/0Oで始まる数値は 8進数とみなされる) num = 0xffff # 16進数 (0x/0Xで始まる数値は16進数とみなされる)
長整数(long)は、整数(int)を超える桁数の整数を扱います。Python 2 では末尾に l か L をつけますが、l は 1 と間違えやすいので L を使うのがよいでしょう。整数(int)の最大値(sys.maxint)はシステムにより異なり、231-1 だったり 263-1 だったりします。
num = 9223372036854775808L
長整数は、メモリが許す限り桁数に制限はなく、長整数同士の演算では計算誤差も生じません。
num = 1234567890123456789012345678901234567890123456789012345678901234567890L
Python 3 では、整数(int) と長整数(long)は統合され、すべて整数(int)として扱われるようになり、L や l も廃止されました。
num = 123L # Python 3 ではエラー(SyntaxError例外)
Python 3.6 以降では桁区切りの代わりにアンダーバー(_)を利用可能となりました。
num = 1_234_567_890 # 1234567890 と同義
浮動少数点数(float)は下記の様に記述します。e2 は 10の2乗を意味します。Python ではデフォルトで倍精度(53bits)の演算を行います。
num = 1.234 # 浮動小数点数 num = 1.2e3 # 浮動小数点数(指数表記) 1.2 × 103 num = 1.2E-3 # 浮動小数点数(指数表記) 1.2 × 10-3
虚数(complex)には j または J をつけます。
num = 3.14j
論理値(bool)は、True または False で表します。最初の1文字は大文字で記述します。
bool = True bool = False
Python では、False、数値の 0 や 0.0、空文字("")、空リスト([])、空タプル(())、空辞書({})などを偽とみなし、それ以外を真とみなします。
None は値が存在しないことを示す特別な値です。JavaScript の null に相当します。
x = None
文字列(str)は、ダブルクォート(")、またはシングルクォート(')で囲みます。
str = "Hello world" str = 'Hello world'
"..." の中では ' を、'...' の中では " を使うことができます。
str = "We can use ' in the double quotation string." str = 'We can use " in the single quotation string.'
"..." の中で " を、'...' の中で ' を使用するには、バックスラッシュ(\)を用いて引用符をエスケープ(無効化)します。
str = "We can use \" in the string." str = 'We can use \' in the string.'
r または R を "..." や '...' の前につけると、後述する エスケープシーケンス が無視されます。
str = 'aaa\nbbb' # \n は改行とみなされる str = r'aaa\nbbb' # \n はバックスラッシュ文字(\)と小文字nとみなされる
f または F を "..." や '...' の前につけると、文字列中の {...} の中で Python式を参照することができます。Python 3.6 以降で使用できます。
name = "Yamada" age = 26 print(f"My name is {name}. I'm {age} years old.")
下記のように演算や関数呼び出しを行うことができます。
import math a = 5 b = 3 print(f"{a + b}") #=> 8 print(f"{math.pow(a, b)}") #=> 25.0
フォーマット文字列の中で { や } を表示したい場合は {{ と }} を用います。
print(f"{{n}}") # {n}
変数名の後のコロン(:)に続けて様々な書式を設定することができます。< ^ > は左寄せ、中央寄せ、右寄せを指定します。
s = "ABC" print(f"|{s}|") # |ABC| print(f"|{s:<9}|") # |ABC | ... 左寄せ print(f"|{s:^9}|") # | ABC | ... 中央寄せ print(f"|{s:>9}|") # | ABC| ... 右寄せ
カンマ(,)は数値を桁区切りします。
n = 12345 print(f"{n:,}") # 12,345
b, o, x, X はそれぞれ2進数、8進数、16進数(小文字)、16進数(大文字)を示します。
n = 123 print(f"{n}") # 123 ... 10進数 print(f"{n:b}") # 1111011 ... 2進数 print(f"{n:o}") # 173 ... 8進数 print(f"{n:x}") # 7b ... 16進数(小文字) print(f"{n:X}") # 7B ... 16進数(大文字)
+ は正数の場合に + を、負数の場合に - をつけます。- は負数の場合のみに - をつけます。
a = 123 b = -123 print(f"{a:+} {b:+}") # +123 -123 print(f"{a:-} {b:-}") # 123 -123
# をつけると 2進数の場合に 0b、8進数の場合に 0o、16進数の場合に 0x や 0X をつけます。
print(f"{n:#}") # 123 print(f"{n:#b}") # 0b1111011 print(f"{n:#o}") # 0o173 print(f"{n:#x}") # 0x7b print(f"{n:#X}") # 0X7B
数字をつけると表示桁数を示します。数字の先頭に 0 をつけると 0 埋めします。
print(f"{n:08}") # 00000123 print(f"{n:08b}") # 01111011 print(f"{n:08o}") # 00000173 print(f"{n:08x}") # 0000007b print(f"{n:08X}") # 0000007B
.2 は小数点以下2桁で表示することを意味します。8 は全体を最小8桁の幅で表示することを意味します。f は浮動小数点表記、e は指数表記、g は桁数に応じて f と e を自動選択しますが、.2 の解釈が f や e と異なるようです。% はパーセント表記で表示します。
n = 12.3456 print(f"{n:.2f}") # 12.35 print(f"{n:8.2f}") # 12.35 print(f"{n:.2e}") # 1.23e+01 print(f"{n:.2E}") # 1.23E+01 print(f"{n:.2g}") # 1.23 print(f"{n:.2%}") # 1234.56%
%Y や %m などは時刻フォーマットを示します。フォーマット文字列の詳細は Python の datetime マニュアルを参照してください。
import datetime d = datetime.datetime(2024, 1, 31, 23, 59, 59) print(f"{d}") # 2024-01-31 23:59:59 print(f"{d:%Y/%m/%d %H:%M:%S}") # 2024/01/31 23:59:59 #
!s は str()、!r は repr()、!a は ascii() と同じ働きをします。Python 3.8 以降で使用できます。
print(f"{value!s}") # {str(value)} と同じ print(f"{value!r}") # {repr(value)} と同じ print(f"{value!a}") # {ascii(value)} と同じ
Python 3.8 ではまた、変数名の後に = をつけると変数名も表示されるようになりました。
name = "Yamada"
age = 36
print(f"{name=}, {age=}") #=> name='Yamada', age=36
b または B を "..." や '...' の前につけると、バイト列を表します。画像データなどのバイナリデータや、UTF-8 以外の文字コードの文字列を扱います。バイト列と通常の文字列の変換は下記の様に行います。
byte_string = b"\xe3\x81\x82" utf8_string = byte_string.decode() # バイト列から文字列に変換 print(utf8_string) utf8_string = "あ" byte_string = utf8_string.encode() # 文字列からバイト列に変換 print(byte_string)
シフトJIS(Shift_JIS)、Windows版シフトJIS(CP932)、EUC(EUC-JP)、ISO-2022-JP(俗にいうJISコード) などの文字列(バイト列)との変換は下記の様に行います。
# Unicode文字列からUTF8/SJIS/CP932/EUC/JISバイト列への変換 utf8_str = "あ" utf8_bytes = utf8_str.encode('utf-8') # UTF-8バイト列: b'\xe3\x81\x82' sjis_bytes = utf8_str.encode('sjis') # Shift_JISバイト列: b'\x82\xa0' cp932_bytes = utf8_str.encode('cp932') # CP932バイト列: b'\x82\xa0' eucjp_bytes = utf8_str.encode('euc_jp') # EUC-JPバイト列: b'\xa4\xa2' jis_bytes = utf8_str.encode('iso2022_jp') # ISO-2022-JPバイト列: b'\x1b$B$"\x1b(B' # UTF8/SJIS/CP932/EUC/JISバイト列からUnicode文字列への変換 utf8_str = utf8_bytes.decode('utf-8') # あ utf8_str = sjis_bytes.decode('sjis') # あ utf8_str = cp932_bytes.decode('cp932') # あ utf8_str = eucjp_bytes.decode('euc_jp') # あ utf8_str = jis_bytes.decode('iso2022_jp') # あ
u または U を "..." や '...' の前につけると、Unicode文字列を表します。Python 2 で Unicode を扱う際は必須でした。Python 3 では通常文字列が Unicode文字列とみなされるようになったため Python 3.0 で一度廃止されましたが、互換性考慮のため Python 3.3 で復活しました。今では u"..." は "..." と同義です。
# coding: utf-8 print(len("あいうえお")) # Python 2だと15、Python 3だと5 print(len(u"あいうえお")) # 5
三重クォート """...""" や '''...''' で複数行にまたがった文字列を記述することができます。三重クォートはしばしば、複数行コメントとして利用されることがあります。
str = """A simple example module This module is ... """
バックスラッシュ(\)を用いて複数行に分けることもできます。
str = "Hello \ world!"
複数の文字列をスペースや改行で区切ることで、連結することができます。
print("Hello " "world!")
文字列の中では、下記のエスケープシーケンスを使用できます。
\改行 : バックスラッシュと改行が無視される \\ : バックスラッシュ(\) \' : シングルクォート(') \" : ダブルクォート(") \a : ベル(BEL) \b : バックスペース(BS) \f : フォームフィード(FF) \n : 改行(LF) \r : 復帰(CR) \t : タブ(TAB) \v : 垂直タブ(VT) \nnn : 8進表記文字(nは0~7) \xnn : 16進表記文字(nは0~f) \uxxxx : ユニコード文字xxxx (例: u"\u3042") \Uxxxxxxxx : ユニコード文字xxxxxxxx (例: U"\U00003042") \N{name} : Unicodeデータベース文字 (例: u"\N{HIRAGANA LETTER A}")
% 演算子を用いて、C言語の printf()文に似た記法で、下記の様に文字列を フォーマット することができます。ひとつ目の変数 errmsg の値が %s の箇所に、ふたつ目の変数 errcode の値が %d の箇所に挿入されます。
errmsg = "Can't open file" errcode = 19042 msg = "ERROR: %s (%d)" % (errmsg, errcode) print(msg) #=> ERROR: Can't open file (19042)
%s は文字列、%d は整数、%f は浮動小数点数、%x は16進数、%o は8進数、%% は %自身を示します。
print("%s" % "ABC") #=> ABC print("%d" % 123) #=> 123 print("%f" % 1.23) #=> 1.230000 print("%x" % 255) #=> ff print("%o" % 255) #=> 377 print("%%%d" % 80) #=> %80
% に続く数値で文字幅や桁数を指定することができます。
print("|%5s|" % 'ABC') #=> | ABC| : 右寄せ5文字分 print("|%-5s|" % 'ABC') #=> |ABC | : 左寄せ5文字分 print("|%5d|" % 123) #=> | 123| : 右寄せ5桁 print("|%-5d|" % 123) #=> |123 | : 左寄せ5桁 print("|%+5d|" % 123) #=> | +123| : ±符号付き print("|%5.2f|" % 1.23) #=> | 1.23| : 全体桁数.少数点以下の桁数 print("|%05d|" % 123) #=> |00123| : 0埋め