Pythonの歴史と背景
Pythonはグイド・ヴァンロッサム氏によって開発されたプログラミング言語です。1989年のクリスマス休暇中に、アムステルダムで時間を過ごすために新しいスクリプト言語を構築する決意をしました。これはABC言語の後継として設計されました。
この言語は多様な分野に応用可能です。データ解析、システム統合、ネットワークサービス、画像処理、数値計算、科学技術計算など多くの用途があります。現在、YouTube、Dropbox、Quora、Douban、Google、Facebook、NASA、Baidu、Tencentなどの大手インターネット企業がPythonを使用しています。これらの企業では、主に自動運用管理、自動テスト、ビッグデータ解析、クローラー、Webアプリケーションなどに利用されています。
なぜPythonを選択するのか?
C言語との比較:
- C言語:コードは機械語にコンパイルされ、プロセッサ上で直接実行されます
- 他の言語:コードはバイトコードに変換され、仮想マシンが実行します
PythonとCの関係:
- PythonはC言語で実装されています
- 機能実現において、Pythonは10行で済むところをCでは100行以上必要になることがあります
- 実行速度ではCの方がPythonより高速です
PythonとJava、C#などの比較:
- Linux環境では標準でPythonが搭載されています
- ライブラリの豊富さは各言語共通です
- 速度面ではPythonがやや劣る可能性があります
したがって、Pythonは他の言語と本質的な違いはありませんが、特定分野での優位性、人材の豊富さ、市場投入のタイミングなどの違いがあります。
Pythonの実装種類
- CPython:公式版でC言語実装、最も広く使われています。ソースファイルをバイトコードに変換して仮想マシンで実行します
- Jython:Java実装で、PythonコードをJavaバイトコードにコンパイルしてJVM上で実行します
- IronPython:C#実装で、PythonコードをC#バイトコードに変換してCLR上で実行します
- PyPy:Pythonで実装されたPythonで、バイトコードをさらに機械語にコンパイルして高速化します
- その他の実装:RubyPython、Brythonなど
開発環境の構築
Windows環境:
1. インストールパッケージのダウンロード
https://www.python.org/downloads/
2. デフォルトインストールパス:C:\python3x
3. 環境変数の設定
[コンピュータを右クリック] → [プロパティ] → [詳細システム設定] → [詳細] → [環境変数] → [Path変数にPythonインストールディレクトリをセミコロンで区切って追加]
Python 3.xシリーズの使用を推奨します
Linux環境:
標準でPython環境が搭載されています
注意:Python 2.6が付属している場合は2.7に更新してください
Pythonのアップデート方法
Windows:
アンインストールして再インストールします
Linux:
yumがPythonに依存しているため、更新ではなく別途Pythonをインストールします
デフォルトバージョン確認:
python -V
1. コンパイル用gccのインストール
yum install gcc
2. ソースコードパッケージのダウンロード
3. 展開してソースディレクトリに入る
4. コンパイルとインストール
./configure
make all
make install
5. バージョン確認
/usr/local/bin/python3.x -V
6. デフォルトバージョンの変更
mv /usr/bin/python /usr/bin/python_old
ln -s /usr/local/bin/python3.x /usr/bin/python
7. yumの異常動作を防ぐため、使用するPythonバージョンを修正
vi /usr/bin/yum
先頭の#!/usr/bin/pythonを#!/usr/bin/python_oldに変更
Python入門実践
すべてのコード例はPyCharmで実演します
最初のPythonコード出力
# print出力の3つの形式
print('hello world') # シングルクォート
print("hello world") # ダブルクォート
print("""hello world""") # トリプルクォート
実行結果:
C:\Python\python.exe C:/Python/project/hello.py
hello world
hello world
hello world
シングルクォートとダブルクォートは機能的に同じですが、トリプルクォートは複数行出力に使用します。
print("""
hello world
1234567890
qwertyuiop
asdfghjkl
""")
インタープリタの設定
PyCharmでインタープリタを設定するには、File → Settings → Project → Project Interpreterからpython.exeのパスを指定します。
文字エンコーディング
Pythonインタープリタは.pyファイルを読み込む際に内容をエンコードします(デフォルトはASCII)。
ASCIIコード:256個の記号を表現できる8ビット(1バイト)のエンコーディングシステム
Unicode:すべての文字と記号を表現できる統一コードシステム。最小2バイト(16ビット)で表現
UTF-8:Unicodeの圧縮・最適化バージョン。ASCIIは1バイト、ヨーロッパ言語は2バイト、アジア言語は3バイトで保存
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print("こんにちは世界")
Python 3.xではデフォルトでUTF-8が使用されるため、この問題は発生しません。
コメント記法
- 単一行コメント:# コメント内容
- 複数行コメント:""" コメント内容 """
スクリプトへの引数渡し
sysモジュールのsys.argvを使用して、Pythonスクリプト実行時の引数を取得できます。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
print(sys.argv)
pycファイルについて
Pythonコード実行時に他の.pyファイルをインポートすると、同名の.pycファイルが自動生成されます。これはインタープリタがコンパイルしたバイトコードです。
インタープリタ言語とコンパイラ言語
- コンパイラ言語:実行前にコンパイルプロセスがあり、C言語などが該当
- インタープリタ言語:実行時に逐次解釈される、Rubyなどが該当
Pythonは仮想マシンベースの言語で、Javaと同様に「コンパイル→解釈」のプロセスを経ます。
変数の定義
#!/usr/bin/env python
# -*- coding: utf-8 -*-
username = "sample_user"
変数名の命名規則:
- 英数字とアンダースコアのみ使用可能
- 数字で始まらないこと
- 予約語は変数名に使用不可('and', 'class', 'def', 'if', 'import'など)
ユーザー入力
#!/usr/bin/env python
# -*- coding: utf-8 -*-
user_input = input("ユーザーネームを入力してください:")
print(user_input)
パスワード入力時はgetpassモジュールを使用して非表示にできます。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
password = getpass.getpass("パスワードを入力してください:")
print(password)
条件分岐 if ... else
ログイン認証の例:
import getpass
username = input('ユーザーネームを入力してください:')
password = getpass.getpass('パスワードを入力してください:')
if username == "admin" and password == "password":
print("ようこそ、adminさん!")
else:
print("ユーザーネームまたはパスワードが間違っています")
権限レベルの判定:
role_name = input('ユーザーネームを入力してください:')
if role_name == "super_admin":
print("スーパー管理者")
elif role_name == "normal_admin":
print("通常管理者")
elif role_name == "business_manager":
print("業務責任者")
else:
print("一般ユーザー")
forループ
10回ループの基本形:
for counter in range(10):
print("ループ:", counter)
5未満をスキップする場合:
for counter in range(10):
if counter < 5:
continue # 次のループへ進む
print("ループ:", counter)
5を超えると終了する場合:
for counter in range(10):
if counter > 5:
break # ループ全体を終了
print("ループ:", counter)
whileループ
100回実行後に終了:
iteration_count = 0
while True:
print("無限ループ中...", iteration_count)
iteration_count += 1
if iteration_count == 100:
print("ループ終了")
break
年齢当てゲーム(最大3回の挑戦):
target_age = 30
attempt_counter = 0
while attempt_counter < 3:
user_guess = int(input("年齢を推測してください:"))
if user_guess == target_age:
print("正解です!")
break
elif user_guess < target_age:
print("もっと大きいです!")
else:
print("もっと小さいです!")
attempt_counter += 1
else:
print("3回失敗しました。")
基本データ型の紹介
数値型
- int(整数型):32ビットマシンでは-2³¹〜2³¹-1の範囲
- long(長整数型):Python 2.2以降は自動変換される
- float(浮動小数点型):64ビットで実数を処理
- complex(複素数型):x+yjの形式で実部と虚部を持つ
ブール型
TrueまたはFalseの2値のみを持つ型
文字列型
"Hello World"
文字列フォーマット:
name = "taro"
print("私は%sです" % name)
文字列操作の基本機能:空白削除、分割、長さ取得、インデックスアクセス、スライス処理
リスト型
user_list = ['tanaka', 'suzuki', 'yamada']
# または
user_list = list(['watanabe', 'ito', 'kimura'])
タプル型
age_data = (20, 30, 40, 50)
# または
age_data = tuple((20, 30, 40, 50))
辞書型
person_info = {"name": "tanaka", "age": 25}
# または
person_info = dict({"name": "tanaka", "age": 25})
演算子
算術演算子
a=10、b=20の場合:
- 加算(+)、減算(-)、乗算(*)、除算(/)
- 剰余(%)、べき乗(**)、整数除算(//)
比較演算子
等価(==)、不等価(!=)、大小比較(<、>、<=、>=)
論理演算子
and、or、not
メンバーシップ演算子
in、not in(文字列、リスト、タプル内の要素検索)