Python を学ぶ理由は、ブラウザで自分が欲しいテキストや画像などの資料を取得するためのスクリプトのようなプログラムを書きたいからです。これらのプログラムは実際に GitHub にたくさんありますが、残念ながら私はバックエンドの言語について全く知識がなく、直接持ってきても使うことができません。
そこで、まず Python の基礎知識を学ぶことを考えました。廖雪峰の Python チュートリアルが良いと聞いていたので、この機会にしっかりと勉強したいと思います。あまり高い技術を求めているわけではなく、少なくとも自分の浅い技術スタックに少しでも光を加えられればと思っています。結局、私は全スタック開発者になりたいと夢見ていたこともありますから。
Python 環境をインストールしたら、さっそく学び始めましょう!
私の最初の Python プログラムを実行する#
print('hello,world')
データ型#
Python では、直接扱えるデータ型はいくつかあります。整数、浮動小数点数、文字列、ブール値、空値、変数です。
これは他の言語とあまり違いはなく、データ型は基本的に似ています。おそらく変数だけが独自の特性を持っているので、特別に記録しておきます。
変数#
Python は動的言語であり、代入時に値を変更することができます。例えば:
a = 123
print(a) # ターミナルに出力される値 123
a = 'abc'
print(a) # ターミナルに出力される文字列 abc
これは許可されていますが、Java ではできません。Java は静的言語であり、複数回の代入を行うとエラーが発生します。相対的に、動的言語はより柔軟ですが、それぞれに利点と欠点があります。
また、代入には論理的な順序があります。例えば、a = 'a'
という変数を定義する場合、Python では実際に 2 つのステップを踏んでいます。まず文字列a
を作成し、その後この文字列を変数 a に代入します。
これは数学的には少し逆論理的です。x = x + 2
という計算は数学的には成り立ちませんが、コンピュータではまずx + 2
を計算し、その後左側のx
に代入します。これがコンピュータの論理です。
x = 1
x = x + 2
print(x) # 3
多くのプログラミング言語はこのように動作します。例えば、私たちがよく知っている JavaScript などもそうです。
もし複数の変数が相互に代入される場合、各行が順番に実行されます。
a = 1
b = a
a = 2
print(a)
print(b)
最終的に出力される結果はそれぞれ2
, 1
です。
Python は多様なデータ型をサポートしており、コンピュータ内部ではすべてのデータを「オブジェクト」として扱うことができます。変数はプログラム内でこれらのデータオブジェクトを指し示すために使用され、変数に値を代入することはデータと変数を関連付けることを意味します。変数 x に y を代入することは、変数 x が実際のオブジェクトを指し示すことを意味し、そのオブジェクトは変数 y が指し示すものです。その後、変数 y に新たに値を代入しても、変数 x の指し示す先には影響しません。注意:Python の整数にはサイズ制限がなく、特定の言語では整数のサイズがストレージの長さに依存する場合があります。例えば、Java では 32 ビット整数の範囲が - 2147483648 から 2147483647 に制限されています。Python の浮動小数点数にもサイズ制限はありませんが、一定の範囲を超えると直接 inf(無限大)として表示されます。---《廖雪峰の公式ウェブサイト》
文字列とエンコーディング#
Python はエンコーディングを処理するための 2 つの属性、ord
とchr
を提供しています。
ord('舒')
# 33298
# 文字列を整数表現に変換
chr(33298)
# '舒'
# 整数表現の内容を文字列に変換
リスト#
list
は JavaScript のArray
に似ており、複数のデータのリストです。書き方は以下の通りです。
>>> classmates = ['a', 'b', 'c']
>>> classmates
['a', 'b', 'c']
この時、変数classmates
はリストであると言えます。
len()
を使うとリストの要素数を出力できます。
>>> len(classmates)
>>> 3
同時にリストにはインデックスがあり、0 から始まり、最後のインデックスはlen(classmates)-1
です。また、最後の要素を直接出力したい場合は、classmates[-1]
を使用できます。
>>> classmates[-1]
>>> 'c'
すでに-1
で最後の要素を表現できるので、-2
で倒数第二の要素を表現できるかというと、答えはできます。
>>> classmates[-2]
>>> 'b'
なお、インデックスを使用する際は範囲を超えないように注意してください。そうしないと、以下のエラーが発生します。
>>> classmates[4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
リストは可変の順序付きリストであり、要素を追加したり削除したりすることができます。
- append で末尾に要素を追加
>>> classmates.append('d')
>>> classmates
['a', 'b', 'c', 'd']
- insert で指定した位置に要素を追加
ここで1
はインデックスを示し、インデックス 1 の位置に要素を挿入し、後ろの要素は自然に後ろにずれます。
>>> classmates.insert(1, 'd')
>>> classmates
['a', 'd', 'b', 'c']
- pop で末尾の要素を削除
>>> classmates.pop()
'c' # 出力時に削除された要素
>>> classmates
['a', 'b']
- pop (i) で指定した位置の要素を削除
>>> classmates.pop(1)
'b' # 出力された削除された要素
>>> classmates
['a', 'c']
>>>