2
2

More than 3 years have passed since last update.

Pythonチュートリアルまとめ

Last updated at Posted at 2020-11-24

print文

print文
%s # 文字列
%r・・・
%d # 整数
%f # 固定小数点表記
%1.5f # 固定小数点表記(,5のところは小数以下桁)
%e # 指数表記
print("数値1=%f, 数値2=%.3f" % (1/3, 1/3))
数値1=0.333333, 数値2=0.333

引数"end"に値を入れることで、末尾に何をつけるかを設定

print("a", end=",")
print("b", end=",")
print("c")

対話モード時に最後に表示した式を格納している変数

>>> tax = 12.5 / 100
>>> price= 100.5
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_,2)
113.06

モジュールの検索パス

1.ビルトインモジュールの中
2.sys.path変数で得られるディレクトリのリスト
3.入力スクリプトのあるディレクトリ
4.PYTHONPATH
5.インストールごとのデフォルト

コーディングスタイル

Pythonのコーディングスタイルを PEP8 という

コーディングスタイル
インデントはスペース4つ
タブ禁止
・4スペースは狭いインデントと広いインデントのちょうどよい妥協点
コメント行の独立
docstring
エンコーディングはUTF-8(default)ASCII
演算子の周囲やカンマの後ろにスペースを入れる
カッコのすぐ内側にはスペースを入れない

シーケンスオブジェクトの比較

・どちらかのシーケンスがなくなるまで比較
・同じ要素は比較しない
・違う要素の比較結果

クラス変数とインスタンス変数

・クラス変数とは・・・すべてのインスタンスが共有するメモリ
・インスタンス変数とは・・・インスタンスに固有のメモリ 

以下は間違いの例・・・クラス変数にmutable(変更可)を使ってはいけない

クラス変数とインスタンス変数
class Sample:
  c_list = []・・・クラス変数の使い方を間違えた例
  def add_c_list(self,data):
    self.c_list.append(data)

print("出力結果:", end=" ")
sample1 = Sample()
sample1.add_c_list("データ1")

sample2 = Sample()
sample2.add_c_list("データ2")

for item_data in sample1.c_list:
  print(item_data, end=" ")
=============================
出力結果: データ1 データ2

エスケープシーケンスの無効化

len関数

エスケープシーケンスは1文字でカウント
改行の\nは1文字としてカウント

range関数

range関数
>>>print(range(5))
range(0,5)

range関数は反復可能体イテラブル
range関数はオブジェクト

ビルトイン関数

ビルトイン関数
>>>dir(モジュール名) #dirがビルトイン関数。モジュールが定義している名前をすべて表示。

1章 食欲をそそってみようか

データ型の一般性が高く問題領域はAwkPerlより広く他言語と同等以上

2章 インタープリタの使い方

インタープリタの起動
>>> python -c コマンド
>>> python -m モジュール名
>>> 

3章 気楽な入門編

演算子
べき乗演算子は他の演算子より優先順位が高いため例外的に右から左へと評価される
演算対象の型が混同していた場合(int,float)整数は浮動小数点に変換される
文字列の特徴
>>> word[10000] # 大きすぎるインデックスを指定するとエラー
IndexError  Traceback (most recent call last)
<ipython-input-4-47f442646512> in <module>
----> 1 Zen[50]

IndexError: string index out of range

>>> word[10000:20000] # 範囲外のスライシングはうまく処理
''
複数行にまたがる改行文字を取り消す
print("""\
Usage:thingy[options]
    -h                Display this usage message
    -H hostname       Hostname to connect to
""")
対話モードの電卓。アンダースコア
最後に表示した式を変数_」(アンダースコアに代入してある
>>> tax = 12.5/100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_,2)
113.006
対話モード
列挙された文字リテラルは自動的に連結される

>>> 'Py' 'thon'
'Python'

4章 制御構造ツール

リストのアンパック
>>> list(range(3,6)) # 一般的な個別の引数を使ったコール
[3,4,5]

>>> args = [3,6] # ここからは特殊な方法
>>> list(range(*arg)) # *arg を使うとアンパックされる。ただの 3,6 になる。
[3,4,5] # range(3,6) と同じ

>>> 
ドキュメンテーション(docstring)
・1行目簡潔な要約大文字始まるピリオド終わり
・2行目空白
・3行目
関数アノテーション
def 関数名(arg1: 'arg1の説明', arg2: 'arg2の説明', , ,)->'戻り値の説明':
    処理
docstringと関数アノテーションの例
def my_func(n: 'この値から足し始める', m:'この値まで足す') -> 'nからmの合計値':
    """ nからmまでの合計を返す関数 """
    ret = 0
    for i in range(n, m+1):
        ret += i 
    return ret

5章 データ構造

リストをキューとして使う
>>> from collections import deque
>>> queue = deque(["A","B","C"]) # キューを作った
>>> queue.append("D") # Dを追加
>>> queue.popleft() # 最初を取出
>>> queue.pop() # 最後を取出
>>> queue.pop(idx) # idx番目を取出
ディクショナリ
キー変更不能型
変更可能型
キーkeyの存在を確認取得検索: in演算子
値valueの存在を確認取得検索: in演算子, values()
キーkeyと値valueの組み合わせの存在を確認: in演算子, items()
多次元リストのソート

演算子
比較演算子 < <= == != is  is not  in  not in
条件についての補足
比較演算子 in および not in ・・・シーケンスの値の有無
演算子 is および is not ・・・オブジェクトの比較
ブール演算子 and および or・・・短絡演算子
比較の組み合わせ複数条件 if x<y and x>z
演算子の優先順位
数値演算子 > 比較演算子
シーケンスの比較、その他の型の比較
2つが基本的に同じシーケンスで片方の長さが短い時はこの短い方が小となる
文字列の辞書的順序には個々の文字のUnicodeコードポイント番号で比較

6章 モジュールとパッケージ

dir関数
>>> import sys,fibo
>>> dir(fibo)

モジュールが定義している名前を確認するのに使う

モジュールの検索は、○○モジュールの場合、○○.pyを以下の順番で検索する

モジュールの検索パス
1.ビルトインモジュール内で探す
2.sys.path変数で得られるディレクトリのリストを使ってspam.pyを検索
  2-1.入力スクリプトのあるディレクトリ
  2-2.PYTHONPATH
  2-3.インストールごとのデフォルト
module
モジュールはファイルである
モジュールのファイルは、「.py
package
パッケージはフォルダーである

>>> from パッケージ名 import モジュール名 #これを使うとモジュールを参照する際に短くてフルネームにする必要がない
>>> import パッケージ名.モジュール名 #これを使うとモジュールを参照する際に長くてフルネームにする必要がある。[ドット区切りモジュール名]と呼ぶ。
package実装例

>>> import sound.effects.echo
>>> sound.effects.echo.echofilter()#サブモジュールのロード。参照はフルネーム。長くてダメ!!

>>> from sound.effects import echo
>>> echo.echofilter()#参照が短くて良い!!
コンパイル済みPythonファイル
Pythonは .py 以外にPythonコードをコンパイルした .pyc というファイルも実行できる
インタプリタなので1行ごとにバイナリファイルに変換
コンパイラはまとめてバイナリファイルに変換

image.png

8章 エラーと例外

概要
・”エラー、「構文エラー例外に大別される
"構文エラー"パース上のエラー」「構文解釈エラーと呼ばれる
・”例外文や式が正しくても実行すると起こるエラーである
例外
ZeroDivisionError
NameError
TypeError
KeyboardInterrupt # キーボード割込例外 [Ctrl]+[c]

9章 クラス

10章 標準ライブラリめぐり(モジュール)

モジュール名を参照短縮
>>> from パッケージ名.サブモジュール名 import モジュール名 # これを使うとモジュールを参照する際に短くてフルネームにする必要がない
>>> from パッケージ名.モジュール名 import クラス名     # これを使うとモジュールを参照する際に短くてフルネームにする必要がない
>>> from sklearn.preprocessing import StandardScaler
>>> import パッケージ名.モジュール名 #これを使うとモジュールを参照する際に長くてフルネームにする必要がある。[ドット区切りモジュール名]と呼ぶ。
module
import os # オペレーティングシステムとやり取りする関数
import glob # ファイルをワイルドカード検索
import sys # コマンドライン引数を処理する
import re # 正規表現
import math # 浮動小数点数学
from struct import * # バイナリー
import random # ランダム
import collections # リスト
import logging # ログ取り
コマンドライン引数
>>> import sys
>>> print(sys.argv)
randomモジュール・・・無作為抽出のツール
>>> import random
>>> random.choice(['apple','banana','lemon']) # choice はリスト内から選択
'apple'
>>> random.sample(range(100),10) # sample は、第1引数から第2引数個を重複なく抽出
>>> random.random() # ランダムな浮動小数点

>>> radom.randrange(6) # range(6)からランダムに選んだ整数

11章 標準ライブラリめぐり

ログ取り
ログ出力なのかユーザ(プログラム実行者)に伝えたい情報としての出力なのかを切り分けられる
ログの種類をErrorやDebugのようにレベル分けが可能
フォーマットを指定すれば簡単に統一化された出力が可能
ログの優先順位(左から優先順位が低い)
低い<-            ->高い
DEBUGINFOWARNINGERRORCRITICAL

12章 仮想環境とパッケージ

pipによるパッケージ管理
>>> pip install パッケージ名 # 最新バージョンのパッケージをインストール 
>>> pip install パッケージ名 ==2.6.0 # 特定バージョンのパッケージをインストール
>>> pip install --upgrade パッケージ名 # 最新バージョンにアップグレード
>>> pip uninstall パッケージ名 # パッケージをアンインストール
>>> pip list # インストール済み確認
>>> pip freeze # インストール済み確認(出力形式がpip install)
>>> pip show パッケージ名 # パッケージの詳細表示 version,author,summar,説明hp
仮想環境
>>> deactivate # 仮想環境終了

14章 対話環境での入力行編集とヒストリ置換

ソースコード・エンコーディング
PythonソースコードのエンコーディングUTF-8
敢えてエンコードを変える時は以下になる
#-*- coding:エンコーディング名 -*-
インタープリタの終了
ctrl+d
>>>exit()
>>>quit()
タブ補完とヒストリ編集
対話型インタープリタ
bpython
IPython
アクティベート状態から抜ける

対話モードのプライマリプロンプト/セカンダリプロンプト
>>> 
...
2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2