1.概要
・Pythonはコンパイルを必要としない、インタプリタ言語でスクリプト文を直接実行する。
・文法の特徴はCやjavaような、ブロック構造に 「{ 」(中カッコ)を用いない、インデントでのブロック構造となっているため、誰が書いても似たようなソースとなり、可読性に優れている。
・インタラクティブモード(コマンドラインからpython3と打ち込んで、>>> のプロンプトで 1 行ごとに実行)と、スクリプトファイル(拡張子は.py)をコマンドライン(python3 test.py)又はシェルから実行する方法の2通りがある。
・Pythonには現在2.xと3.xのバージョンがあり、Python 2.xと3.xのプログラムには一部互換性がない。
2.開発環境の例
(1)pythonの統合開発環境
・PyCharm
ジェットブレインズによって開発され、Pythonに特化した非常に強力な開発環境。
PyCharm のインストール
https://pleiades.io/help/pycharm/installation-guide.html
・PythonIDLE
Pythonに標準で用意されている開発環境アプリケーション。付属していないときはインストールする。IDLEは「tkinter」というライブラリを使い、Pythonで実装されたプログラム。
・Eclipse
Pleiades All in One ダウンロード
https://mergedoc.osdn.jp/
・ATOM
https://atom.io/
などがある
3.本稿の開発環境
(1)ホストOS
Windows 10 Pro
(2)仮想環境(VirtualBox)
ゲストOS:CentOs7(Red Hat 64-bit)
(3)pythonバージョン
python3のインストール
# yum install python3
[root@localhost ~]# python3 –version
Python 3.6.8
起動
# python3
終了
>>> quit()
・sys.versionの情報
Python インタプリタのバージョン番号の他、ビルド番号や使用コンパイラなどの情報を示す文字列
# python3
>>> import sys
>>> print(sys.version)
(4)PythonIDLE
Python3 IDEのインストール
# yum install python3-tools
CentOsのディスクトップで端末を起動
# idle3
(5)Pythonのパッケージ管理pip
# pip3 list –format=columns
(6)Pythonコマンドライン
・pythonスクリプト言語の実行
> python sample.py
・-c コマンド オプションを利用して起動
コマンド として渡された Python の文を実行
・-m <module-name>
sys.path から指定されたモジュール名のモジュールを探し、その内容を__main__ モジュールとして実行する。
コマンドラインと環境https://docs.python.org/ja/3/using/cmdline.html
4.基本文法
4.1 算術演算子
+, -, *, /, //(整数除算), %(余り), **(べき乗算)
4.2 変数
1文字目に数字は使えない
4.3 比較演算子
演算子 条件
a < b a は b より小さい
a <= b a は b と等しいか小さい
a > b a は b より大きい
a >= b a は b と等しいか大きい
a == b a と b は等しい
a != b a と b は等しくない
4.4 データ型
数値型(整数、浮動小数点数、複素数)、文字列型、論理型、リスト型、辞書型、タブル型、集合型がある。
(1)数値型
整数:1、浮動小数点数:1.5、複素数:1+8j
(2)文字列型
シングルクオーテーション、又はダブルクォーテーションで囲む
”Hello”、’Hello’
算術演算子(+)を使って文字列の連結ができる。
算術演算子(*)を使って数字の回数分繰り返す。
(3)論理型
True(真)、False(偽)の2種類
(4)リスト型
まとめたいデータをカンマで区切り、[](大カッコ)でくくる。
Test=[80,’算数’]
リスト型のメソッドが使え、データの追加、削除ができる。Test.append(‘合格’)とすると、Testは[80,’算数’,’合格’]となる。他にremove(削除)、sort(並び替え)のメソッドがある。
(5)辞書型
見出し(キー)と対応するデータ(数値、文字列など)をペアでもつ。
キーと対応するデータを:(コロン)でつなぎ、それぞれのペアを,(カンマ)で区切ったものを{}(中カッコ)でくくる。
{見出し1:データ1,見出し2:データ2,・・・}
辞書型のメソッドが使え、全てのキーを表示(keys())、全てのデータを表示(values())がある。
(6)タブル型
複数の要素から成るー組を表すときに使い、複数の要素を,(カンマ)で区切って()でくくったもの。
(要素a,要素b,要素c,・・・)
リスト型との違いは、タブル型は定義したあと変更できないこと。
辞書型のキーとして複数の要素でキーを作るときは、タブル型でしか辞書型のキーとして使えないようになっている(リスト型ではキーは作れない)。
(7)集合型
複数のデータを1つにまとめることができるデータ型。
集合型では同じデータを持たないため、データの重複を削除したり、記号(A<=B,A>=B,A|B,A&B,A-B,A^B)を使ってデータを調べることができる。
4.5 条件分岐
if (条件判定式):
(字下げ)(処理内容)
elif(条件判定式):
(字下げ)(処理内容)
else:
(字下げ)(処理内容)
ex1.py
# i:int=int(input('i=?'))
i=int(input('i=?'))
if i > 0:
print('正数')
elif i < 0:
print('負数')
else:
print('0')
print('end')
・コメントは先頭に#をつけるとその行の#以降がコメントとなる。
・pythonでは型宣言は不要。
型宣言するときは、
i:int=int(input(‘i=?’))
のように行える。
・pythonでは,コードブロックを字下げで表すので、判定の:の後、字下げしないと”IndentationError: expected an indented block”のエラーとなる。
4.6 繰り返し
(1)while文
while (条件式):
(字下げ)(処理内容)
:
ex2.py
i=0
while i<=10:
print(i)
i+=1
(2)for文
for 変数 in オブジェクト:
(字下げ)(実行する処理)
ex3.py
for i in range(5):
print(i)
数値の連番の反復には,rangeを使用。range(n) で,0,1,2, … , n-1 までの値。
rangeは,(初期値, 終了値, 増加させる値)と書くことができる。
for i in range(1,10,2):
print(i)
4.7 関数
def func(引数, 引数):
(処理内容)
def func(a, b):
print('a=', a, 'b=', b,'a*b=',a*b)
func(1, 2)
func(1.5, 2)
4.8 例外処理
try:
// 処理
except [例外]:
// 例外発生時の処理
else:
// 例外が発生しなかった場合の処理
finally:
// 必ず実行される処理
def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
print("ゼロ除算エラー")
else:
print("x/y=", result)
finally:
print("end")
divide(10,2)
divide(0,2)
divide(10,0)
4.9 クラス
(1)クラスの定義
class クラス名():
(字下げ)def__init__(self,引数,・・・):
(字下げ)self.属性名=引数
class MyClass():
def __init__(self, a, b):
self.val1 = a
self.val2 = b
mmyclass= MyClass("Hello!","world")
print(mmyclass.val1+" "+mmyclass.val2)
・selfはインスタンス自身を指し、基本的にはこの引数は必須
・コンストラクタの定義
def __init__(self, a, b):
・インスタンスの生成
インスタンス名=クラス名(引数,・・・)
(2)メソッドの定義
def メソッド名(self):
(字下げ)処理内容
ex7.py
class MyClass():
def __init__(self, a, b):
self.val1 = a
self.val2 = b
def out(self):
print(self.val1+" "+self.val2)
mmyclass= MyClass("Hello!","world")
mmyclass.out()
・メソッドの実行
インスタンス生成し、インスタンス名.メソッド名()で実行する
4.10 継承
クラスの継承は、既存の他のクラスからメソッドや変数を受け継いで新しいクラスを作成できる。前者を「親クラス」、後者を「子クラス」という。
class 新規クラス名(継承したいクラス名):
(1)子クラスでメソッドを追加
class MyClass():
def __init__(self, a, b):
self.val1 = a
self.val2 = b
def out(self):
print(self.val1+" "+self.val2)
class AdClass(MyClass):
def out2(self):
print(self.val1)
mmyclass= AdClass("Hello!","world")
mmyclass.out()
mmyclass.out2()
(2)親クラスのメソッドのオーバーライド
インスタンスメソッドのオーバーライド
ex9.py
class MyClass():
def __init__(self, a, b):
self.val1 = a
self.val2 = b
def out(self):
print(self.val1+" "+self.val2)
class AdClass(MyClass):
def out(self):
print("子クラス:"+self.val1+" "+self.val2)
mmyclass= AdClass("Hello!","world")
mmyclass.out()
コンストラクタのオーバーライド
ex10.py
class MyClass():
def __init__(self, a, b):
self.val1 = a
self.val2 = b
def out(self):
print(self.val1+" "+self.val2)
class AdClass(MyClass):
def __init__(self, x):
self.valx = x
def out(self):
print("子クラス:"+self.valx)
mmyclass= AdClass("good")
mmyclass.out()
5.ライブラリ
import ライブラリ名(又はモジュール名)
自作ライブラリ
func_sum.py
def sum(x,y):
z = x + y
return z
ex11.py
import func_sum
if __name__ == '__main__':
a = func_sum.sum(2,1)
print(a)
6.ファイル読み書き
(1)ファイル出力
ex12.py
f=open('sample.txt', 'w')
f.write('Hello World!\nGood Bye!')
f.close()
# python3 ex12.pyで実行したあと、sample.txtを開く
(2)ファイル入力
ex13.py
f=open('sample.txt', 'r')
for line in f:
print(line)
f.close()
7.外部ライブラリ
(1)ライブラリとは
モジュール(.pyファイル)の集まりをパッケージといい、パッケージをまとめたものをライブラリという。
ライブラリには、Python環境をインストールした際に合わせてインストールされる標準ライブラリと、外部から読み込んで使える外部ライブラリがある。
(2)外部ライブラリの使い方
pip(Pythonで書かれたパッケージソフトウェアをインストール・管理するためのパッケージ管理システム)を使い、ライブラリをインストールする。
・ライブラリのインストール
$ pip install ライブラリ名
・モジュールでライブラリの使用
import ライブラリ名
ライブラリ名.関数名()
ライブラリに別名を付けて使うとき、
import ライブラリ名 as 別名
別名.関数名()
・ライブラリから特定の関数をインポート
from ライブラリ名 import 関数名
関数名()
※特定の関数だけをインポートした場合には関数を使う時、先頭のライブラリ名を省略することができる。
(3)ライブラリの種類
・標準ライブラリ
https://docs.python.org/ja/3/library/index.html
・外部ライブラリ
外部ライブラリの一覧は、PYPI(Python Package Index)のサイトで確認することができる。
https://pypi.org/
(4)外部ライブラリのインストール
・インストール
# pip3 install ライブラリ名
・外部ライブラリ一覧の表示
# pip3 freeze
・外部ライブラリのアンインストール
# pip3 uninstall ライブラリ名
・外部ライブラリの更新
# pip3 install –upgrade ライブラリ名
・外部ライブラリに含まれる関数一覧
#pip3 install Numpy
#python3
>>> import numpy
>>> dir(numpy)
(5)外部ライブラリの例
・Numpy
配列、行列など科学技術計算
・matplotlib
データをグラフ化
・pandas
データの統計量の表示やそのグラフ化
・sklearn
比較的簡単な機械学習アルゴリズム
・OpenCV
画像、データを処理するのに便利な様々な機能を備えたライブラリ
(参考文献)
・Python公式サイト
https://www.python.org/
・Python.jp プログラミング言語 Python情報サイト
https://www.python.jp/
end