20.3. 文字列と式
文字列 #
文字列と、その連結という操作を導入します。
Pythonでは、文字を '
single quote (または "
double quote) で囲んだものを、文字または文字列として扱います。
文字列は、+
演算子で連結することができます。
('a' + 'b') + 'c'
'abc'
('Madam' + 'Im') + 'Adam'
MadamImAdam
式の定義を文字(列)を含むように拡張しました(1) 原始式 (atom) : - 数そのもの (e.g., `3`, `5`, `3.1415`) - 定数 (e.g., `math.pi`, `math.e`) - [New!] 文字列そのもの ('a', "a", 'hello', 'X', '99') (評価した値は自分自身)(2) 式と演算子の適切な組合せ : - 数の演算 e.g., `(3+5)`, `(1+(2+3))` - [New!] 文字列の演算 e.g., `('hello'+'world')` (3) 関数 : e.g., `math.floor(3.14)`, `add(1+2, 3)`
\(\text{`}\) backquote は、似て非なる文字なので、注意してください
文字列を返す (評価すると文字列になるような) 関数を作成することもできます。 関数の作成方法は、数の関数で紹介した基本パターンと同じです。
def greetings(name):
return 'Hello, ' + name + '-san!'
greetings('Komakkero')
'Hello, Komakkero-san!'
greetings('May')
'Hello, May-san!'
型 #
+
演算子の動作が数と文字で異なることから分かるように、Pythonでは数と文字を区別して扱っています。
この区別を 型 (type) と呼びます。
式は、型 (かた, type) を持ちます。
演算子の意味 (
\(\approx\)
動作) は型毎に定義されます。
詳細は割愛しますが type(式)
により、Python に型を尋ねることができます。
これまで紹介した式の型を確認してみましょう。`int` と `float` が数、`str` が文字列の意味です。
type(3)
int
| 入力 | 応答 |
|----------------|---------|
| `type(3)` | `int` |
| `type(3+5)` | `int` |
| `type(3.1415)` | `float` |
| `type('abc')` | `str` |
型と演算子が合わないと エラー `TypeError` になります。 例えば、加算は数と文字列両方に対して定義されていますが、減算は数のみです。5 - 3
2'5' - '3'
TypeError: unsupported operand type(s) for -: 'str' and 'str'

('hello!' * 3)
を Python はどう評価するでしょうか。まず結果を自分で予想し、次にColabで確認してみましょう。Pythonでは加算と整合するよう定義されています。他の多くの言語ではエラーになります。
型変換 #
int(文字列)
として、文字列が整数を表すときに、対応する数を得ることができます。
int('2')
2
int('5') - int('3')
2
int(文字列, N)
として N進数を10進数に変換する機能も便利です。
int('a', 16)
10
int('10', 16)
16
int('ff', 16)
255
int('111', 2)
7
数から文字列から作ることもできます。10進数表現の文字列を得るときは str
, 2, 8, 16進数表現の文字列を得るときはそれぞれ bin
, oct
, hex
を使います。
str(255)
255
bin(255)
0b11111111
hex(255)
0xff
0b
や 0x
は、2進数や16進数の目印です。
2, 8, 16進数と 10進数の対応については前の章の説明を参照してください。 12.3. bit列と2進数