Pythonチュートリアル
2章 Pythonインタープリタの使い方
2.1インタープリタの起動
・インタープリタとは・・・Jupyer Notebookのコマンドラインのこと
・インタープリタの終了方法・・・[Ctrl]+[Z] もしくは quit()
「python -c コマンド」
「python -m モジュール名」
3章 気楽な入門編
3.1 Pythonを電卓として使う
3.1.1数値
17/3・・・除算(最後は四捨五入)
17//3・・・切下げ除算(整数除算)
17%3・・・除算の余り
・対話モードでは最後に表示した式を変数「_」に代入する
・複素数の接尾辞 「j」「J」
3.1.2文字列
word[-1]・・・「-1」は最後のキャラクタ
・-0は0と同じことなので、負のインデックスは-1から始まる。
・スライシング可
word[2:5]・・・位置2(2含む)から5(5含まず)まで
・始点は常に含まれ、終点は常に除外される。
・大きすぎるインデックスを指定するとエラー・・・word[1000]とか
・スライシングは大きいインデックスを指定してもエラー出ない・・・word[4:1000]とか
・文字列は変更不能体(immutable)
word[0]="J"とかで変更かけられない
・変更したい場合は、新しいメモリ(文字列)が必要
・置換・・・文字列.replace(置換元,置換先,置換回数)
・連結と繰り返し・・・+で連結、*で繰り返し
3.1.4リスト
・リストは異なる型を入れられるが、普通同じ型を入れる
・スライシング可
・リストは変更可能体(mutable)
・ビルトイン関数len()はリストに使える・・・len(['a','b','C']) は 3を返す
3.2プログラミング、はじめの一歩
・print関数 のキーワード引数[end=]・・・出力末尾の改行の抑制や、出力末尾の他の文字列に変更可能
・end='' がないと勝手に改行しおる!!
#改行なしで出力したい時に「end=''」を使います。 print(text_a, end='') print(text_b)
#複数の文字列の間に空白を開けたくない場合にも使えます。 print(text_c, end='') print(text_d, end='') print(text_e)
4章 制御構造ツール
4.2 for文
・反復には2種類ある。シーケンスに対して、シーケンス内順序で反復と
数字の連なりに対して反復。
・for文にもelseがある。最後に必ず通るもの。ただ、breakを通るとelse節は通らない
*注意:ループはelse節ある。(breakを通るとelse節は通らない。)
4.3 range()関数
range(start,end,skip)
4.7 関数(無名関数、ラムダ式)
・関数(無名関数)の定義
def 関数名(仮引数):
構文
lambda 仮引数:構文
・関数の種類は3つある。
-可変長引数・・・可変長とはタプル型渡し、辞書型渡しを含む関数
例1)タプル型渡し可変長引数
定義側 def spam(ham,egg,*arg):
コール側 spam(1,2,3,4,5)
つまり、ham=1,egg=2,arg=(3,4,5)で引き渡す
勝手にタプルの要素を判断してくれる。要素数も問われない。
例2)辞書型渡し可変長引数
定義側 def spam(ham,egg,**arg):
コール側 spam(1,2,shopkeeper=3,client=4,sketch=5)
・タプル型、辞書型チャンポンの場合は、タプルが前、辞書が後ろ
例3)タプル・辞書チャンポン型渡し可変長引数
定義型 def spam(ham,egg,*arg,**arg)・・・タプルが前、辞書が後ろ
-キーワード引数 <=> 位置引数
定義 def spam(ham,egg,*arg):
コール側
・関数コールする際は、必ず位置引数が先でキーワード引数を後にする
・キーワード引数の順序は問われない
・
-デフォルト引数・・・定義時にデフォルト値を引数に与える
使い方 デフォルトを用意しておいて、必要な時だけ変更する。
定義側 def spam(ham,egg=1,bacon=3):
コール側 spam(0)
つまり、ham = 0で残りの引数は設定不要。
4.7.4 リストのアンパック
・リスト名の前に*を付けるとアンパックできる
>>>args=[3,6]
>>>list(range(*args))
[3,4,5]
5章 データ構造
5.1 リストについての補足
・リスト中のxの個数
list.count(x)
・最初のアイテム削除
list.remove(x)
・全削除
list[:] =
del list
・indexで削除
list[2:5] =
del list[2:5]
・
5.1.3 リスト内包
squares =
for x in range(10):
squares.append(x**2)
squares = list(map(lambda x:x**2,range(10)))
squares = [x**2 for x in range(10) ]
リスト内包はにいくつでもfor文を入れられるが、3つ以上はダメ。
for文・if文が連続で入れ子で現れたものを1行にしたもの。
5.3 タプルとシーケンス
・タプルは変更不能体(immutable)
・タプルの初期化は()で行う。例)タプル =()
・タプルの初期化はカッコが要らない 例)タプル= 1,2,3
・タプルは、要素に「,」 例)タプル=1,<=ぶら下がったカンマ
・タプルパッキング・・・ タプル=1,2,3
・タプルアンパッキング・・・ 要素1,要素2,要素3=タプル
5.6 ループのテクニック
・辞書型ループ
for key,value in 辞書.items():
・シーケンスループ
for idx, v in enumerate(シーケンス):
・シーケンスループ逆順
for seq1,seq2 in reversed(シーケンス):
・2つのシーケンスループ
for seq1,seq2 in zip(シーケンス1,シーケンス2):
5.7 条件についての補足
・比較演算子: in 、 not in・・・シーケンスに値が存在
・
5.8 シーケンスの比較、その他の型の比較
・最初のアイテムを比較し、異なっていれば結論、同じならば次のアイテムへ進む
(1,2,3) < (1,2,4)
6章 モジュール
6.1 さらにモジュールについて
6.1.2 モジュールの検索パス・・・モジュールインポート時の挙動
①ビルトインモジュール内に モジュール名 を探す
②sys.path変数で得られるリスト内に モジュール.py を探す
(モジュール検索パスは標準ライブラリのsysモジュールのsys.pathに格納)
6.4 パッケージ
・パッケージをimport時に発生するエラーはImportError
・このエラーは、モジュールのディレクトリが変更した際に発生。例えば、バージョンアップとかである。
try:
from lesson_package import utils
except ImportError:
from lesson_package.tools import utils
こうしていれば旧バージョン、新バージョンどちらでもimportを対応できる。
ただし、ディレクトリに変更内容の詳細を知っている必要がある。
6.4.1
7章 入出力
7.1 手の込んだ出力フォーマット
・print関数とstr.formatメソッド
str.format()メソッドに渡されたオブジェクトが{}に置き換えられる。
print("{}and{}",.format("spam","eggs"))
7.2ファイルの読み書き
7.2.2 構造のあるデータをjsonで保存する
・pythonプログラム中のデータ(オブジェクト、文字列)をJSON形式に変換することを
シリアライズという
・逆変換をデシリアライズという
・ファイルからデシリアライズ(Python化):load()
・文字列からデシリアライズ(Python化):loads()
8章 エラーと例外
8.3 例外の処理
・pythonではすべてのexceptionをcatchして次の処理に進むのはあまり良くない
・できれば、exceptionを指定してcatchする方が良さそう
8.6 クリーンナップ動作の定義
・finally節は外部リソース(ファイルやネットワークのコネクションなど)をその利用
の成否にかかわらず解放するのに便利。
・finally節は後続の処理に影響がある変数値の設定するのに便利。
・finally節は処理が完了したことを示すログの表示するのに便利。
8.6.1 オブジェクトに定義してあるクリーンナップ動作
with open("myfile.txt") as f:
for line in f:
print(line,end="")
このwithにはtry~catchが含まれている。
◎ビルトイン関数
・range()
・len()
◎シーケンスとは
・配列と呼ばれる順序付きのコレクション:シーケンス
・リスト型、タプル型、文字列型、バイト型
◎反復子(イテレータ)と反復可能体(イテラブル)
・反復可能体(イテラブル):range()関数、リスト、タプル
・反復可能体を利用する関数や構造は反復子と呼ぶ
・反復可能体=イテラブル=イテラブルオブジェクト・・・まあ元データですなぁ
-繰り返し可能なオブジェクト
-反復を掛けることで望みのシーケンスのアイテムを連続的に返すオブジェクト
-空になるまで連続的にアイテムを供給する元データ・・・このイメージ
-
-実際にはリストを作らない
・反復子=イテレータ・・・イテラブルのコピー。要素を取り出すと減っていく。