Python3

初心者がPython3の勉強。

はじめに

ちまちまと更新していきます。
私がPythonを個人的に勉強して、理解したつもりになっている記事です。
なので、間違っている部分が多分に含まれていると思います。そのような場合は、優しく教えていただけると幸いです。

なぜ、Pythonなのか

私の場合は友人におすすめされたのがきっかけです。
色々調べて後からわかったことが、Pythonは少ないコード量で簡単にコーディングできる。また、読みやすさを重視した設計になっているらしいです。(比較的、PGの癖が出にくい構造なのかな?!)

オブジェクト

オブジェクトがすべてなのだ。(プール値・整数・浮動小数点数・文字列・関数・プログラムなどを指す)
※オブジェクトとは、データを格納する箱のようなもの。

データ型

オブジェクトに格納するデータには様々な種類がある。

型名
クラス名
ミュータブル か
イミュータブル か
補足
None NoneType イミュータブル 無、オブジェクトなし
ブール(真偽) bool イミュータブル True か False
整数 int イミュータブル 例:123
小数 float イミュータブル 例:1.23
虚数 complex イミュータブル 例:12+3j
文字列 str イミュータブル 例: 'abc' "123"
リスト list ミュータブル 例: [1, 'a']
タプル tuple イミュータブル 例: (1, 'a', [2, 'b'])
変更不能なリスト
値はミュータブルでもよい
辞書 dict ミュータブル 例: {'a': 123, 'b': 456}
キーと値の組み合わせ、キーは重複しない
セット set ミュータブル 例: {'a', 1}
値は重複しない、集合演算できる

ミュータブルは、オブジェクト内のデータの値を変更できるもの。
イミュータブルは、オブジェクト内のデータの値を変更できないもの。

変数

変数とは、コンピュータのメモリのなかにある値を指す名前のこと。
つまり、

python_console
>>> a = 7
>>> print(a)
7

この場合だと、データをいれるオブジェクト(メモリの確保領域?!)にaという名前をつけて、データに参照するときにa(オブジェクト名)を使う。

変数名の命名規則

使える文字
- 小文字の英字(aからzまで)
- 大文字の英字(AからZまで)
- 数字(0から9まで)
- アンダースコア(_)
※数字は変数名の先頭として使えない。
Pythonでは名前の先頭がアンダースコアになっている名前を特別扱いする。(後ほど説明)
Pythonでの予約語(変数名では使えない)

False class finally is return
None continue for lambda try
True def from nonlocal while
and del global not with
as elif if or yield
assert else import pass break
except in raise

数値

Pythonには、整数と浮動小数点数(小数)がある。

演算子 意味 結果
+ 加算 5 + 8 13
- 減算 90 - 10 80
* 乗算 4 * 7 28
/ 浮動小数点の除算 7 / 2 3.5
// 切り捨て除算 7 // 2
7.0 // 2
3
3.0
% 剰余 7 % 3 1
** 冪乗 3 ** 4 81

基数

特に基数の指定をしない限りは10進(基数10)とみなされる。
Pythonでは次の基数が利用可能だ。

基数 書き方 10進数
10進 10 10 10
2進 0bまたは0B 0b10 2
8進 0oまたは0O 0o10 8
16進 0xまたは0X 0x10 16

文字列

他の言語と異なり、Pythonの文字列はイミュータブルである。つまり、文字列はその場で書き換える事ができない。

Python文字列は、次に示すように、シングルクォートかダブルクォートで文字を囲んで作る

python_console
>>> 'Hoge'
'Hoge'
>>> "Huga"
'Huga'

3個のシングルクォート(```)や3個のダブルクォート(""")を使うこともできる。

python_console
>>> '''Hoge,'''
'Hoge'
>>> """Huga"""
'Huga'

トリプルクォートは複数行文字列を作成する際に使われる。

python_console
>>> 'hoge
  File "<stdin>", line 1
    'hoge
        ^
SyntaxError: EOL while scanning string literal
>>> '''hoge,
... hoge
... hoge
... hoge
... hoge'''
'hoge,\nhoge\nhoge\nhoge\nhoge'

\によるエスケープ

Pythonは、文字列に含まれる一部の文字の意味をエスケープして、他の方法では表現しにくい効果を実現する。
その代表的な例が\n(改行)だ。

python_console
>>> hoge = 'a hoge,\n a huga,\n a hoge'
>>> print (hoge)
a hoge,
 a huga,
 a hoge
>>> hoge
'a hoge,\n a huga,\n a hoge'

+による連結

次のように+演算子を使えば、リテラル文字列、文字列変数を連結することができる。

python_console
>>> 'hogehoge' + 'hugahuga'
'hogehogehugahuga'
>>> a = 'hoge'
>>> b = 'huga'
>>> a + b
'hogehuga'

*による繰り返し

*演算子を使うと、文字列を繰り返すことができる。

python_console
>>> start = 'hoge ' * 4
>>> start
'hoge hoge hoge hoge '

[]による文字の抽出

文字列の中のひとつの文字を取り出したい時には、[](角カッコ)でオフセット(添え字、インデックス)を指定する。

python_console
>>> strings = 'abcdefghrjklmnopqrstuvwxyz'
>>> strings[0]
'a'
>>> strings[-1]
'z'
>>> strings[25]
'z'

[ start:end:step ]によるスライス

スライスというものを使えば、文字列から部分文字列を取り出すことができる。

書き方 意味
[ : ] 先頭から末尾までの文字列全体を抽出する。
[ start: ] startオフセットから末尾までの文字列を抽出する。
[ :end] 先頭からend-1オフセットまでの文字列を取得する。
[ start:end ] startオフセットからend-1オフセットまでの文字列を抽出する。
[ start:end:step ] step文字ごとにstartオフセットからend-1オフセットまでの文字列を抽出する。
python_console
>>> strings = 'abcdefghrjklmnopqrstuvwxyz'
>>> strings[:] #全文字列を抽出
'abcdefghrjklmnopqrstuvwxyz'
>>> strings[20:] #先頭オフセット20から末尾までの文字列を抽出
'uvwxyz'
>>> strings[:10] #先頭オフセット0からオフセット9(10-1)までの文字列を抽出。
'abcdefghrj'
>>> strings[12:15] #先頭オフセット12からオフセット14(15-1)までの文字列を抽出。
'mno'
>>> strings[-3:] #先頭オフセット-3から末尾までの文字列を抽出。
'xyz'
>>> strings[-6:-3] #先頭オフセット-6からオフセット-3までの文字列を抽出。
'uvw'
>>> strings[::2] #全文字列から2ステップでの文字列を抽出。
'acegrkmoqsuwy'
>>> strings[::1] #全文字列から1ステップでの文字列を抽出。
'abcdefghrjklmnopqrstuvwxyz'
>>> strings[::3] #全文字列から3ステップでの文字列を抽出。
'adgjmpsvy'