====== Pythonマニュアル ======
== 記法 ==
ファイルの冒頭には以下のおまじないを記載して拡張子「.py」で保存(utf-8の場合)。なお「#」は、行末までのコメントアウトを意味する。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
実行は例えばコマンドプロンプトで以下の通り。
> python ファイル名.py
== Hello, World ! ==
print('Hello, World !')
== 文字列 ==
text_a = "テキストA"
text_b = text_a + "とテキストB"
text_b #'テキストAとテキストB'
text_b += "とテキストC" #複合演算子が使用可能
text_b #'テキストAとテキストBとテキストC'
text_c = """このように
クオーテーションを3つ重ねれば
改行コードを含む文字列が定義可能"""
#raw文字列。自動的にエスケープが適用される。引用符の前に「r」を記載して使用。
text=r"C:¥a¥b¥c" #'C:¥¥a¥¥b¥¥c'
== 算術 ==
3**2 #9 累乗
== アンパック代入 ==
var1=10
var2=20
var2,var1=var1,var2
print(var1,var2) #20,10
== リスト ==
list_a = [1, 2, 3, 4, 5]
list_a[0] #1
list_b = [6, 7, 8]
list_a + list_b #[1, 2, 3, 4, 5, 6, 7, 8] #連結
list_b[2] = 9
list_b #[6, 7, 9] #置き換え
del list[0]
list_b #[7, 9] #del でリストの要素を削除
list_a[1:3] #[2, 3] #スライス
# リスト名[最初の要素のインデックス:最後の要素のインデックス+1] でリストの一部を抽出できる。
list_a[1:] #[2, 3, 4, 5] #コロンの後ろがなければ最後まで
list_a[:4] #[1, 2, 3, 4] #コロンの前がなければ最初から
sum(list_a) #15 #合計数
max(list_a) #5 #最大数
min(list_a) #1 #最小数
len(list_a) #5 #要素数
== ディクショナリ ==
#ディクショナリの定義
ディクショナリ名={キー1:値1,キー2:値2...}
#要素の取り出し
ディクショナリ名[要素のキー]
#要素の変更。新しい要素のキーに以下の式を適用すると要素の追加となる。
ディクショナリ名[要素のキー]=変更後の値
#要素の削除
del ディクショナリ名[要素のキー]
#for文にディクショナリを適用するとキーに対するループとなる
for 変数 in ディクショナリ:
print(変数, ディクショナリ[変数]) #キーと値が出力される
== set(集合) ==
*setの要素にはリストを登録できないがタプルを登録できる。
#setの定義。同一の要素を記載しても単数で管理される。
set名={要素,要素...}
#「|」を使えばsetの和集合が求められる。差集合の場合は「-」、積集合の場合は「&」、排他的論理和の場合は「^」を使用
set1={a,a,c,e}
set2={b,d,f}
set3=set1|set2 #{a,b,c,d,e,f}
== タプル ==
*タプルは要素の変更ができない。
#タプルの定義。なお、()は無くともよい。
タプル名=(要素,要素...)
#タプルから要素を取り出す
タプル名[インデックス]
#タプルの連結
タプル3=タプル1+タプル2
== for文 ==
#シーケンス型には、リスト型、タプル型、レンジ型が含まれる。
#この例のように、インデントの前には「:」の入力が必要。
for 変数 in シーケンス:
ループ内実行文
for hoge in range(5):
print(hoge) #0~4が出力される
#なお、range関数が返す値は以下の通り
range(5) #[0,1,2,3,4]
== if文 ==
#pythonにはswitch文は無い
if 条件式1:
条件式1が成り立つときに実行されるブロック
elif 条件式2:
条件式1が成り立たず、条件式2が成り立つときに実行されるブロック
else:
どちらの条件式も成り立たなかったときに実行されるブロック
#文字列に文字列が含まれるかを判定
if "bcd" in "abcde": #true
print("abcdeにはbcdという文字が含まれています")
#リストに要素が含まれるかを判定
if a in [a,b,c,d,d]: #true
print("このリストにはaという要素が含まれています")
#複数の条件をまとめる場合、「and」や「or」を使う。
if 条件式1 and 条件式2:
print("この文は条件式1,2の両方が真の場合に出力されます。")
== while文 ==
#while文の文法。条件式が真である限り、ループ内の文が繰り返される。
while 条件式:
ループ内で実行されるブロック
#pythonの場合、「else」は、while文、for文と組み合わせることができる。
while 条件式1:
if 条件式2:
break
…
else:
式 #この式は、breakによらずwhile文を抜けた場合にのみ実行される。
== 関数 ==
#以下の式で関数を呼び出す
関数名(引数1,引数2...)
#以下の式で関数を定義。引数は0個でも可
#戻り値はreturnで定義
def 関数名(引数1,引数2...):
関数ブロック
#引数にはデフォルト値を設定することができる。
#デフォルト引数は、引数郡の後ろ側にまとめる。
def 関数名(引数1=デフォルト値,引数2=デフォルト値...):
関数ブロック
#関数を呼び出す場合、引数のキーワード指定を行えば引数の順番を入れ替えられる。
int(base=値,x=値)
#シーケンスを戻り値とすることもできる。
return [var0,var1]
#上記のような戻り値を返す関数func1を使うと、list[0]のようにインデックスで値にアクセスできる。
list=func1()
list[0] #var0
#このように戻り値を受け取ることもできる。
hoge0,hoge0=func1 #hoge0:var0, hoge1:var1
#関数を定義するときにアスタリスク*を付けると引数の数が可変になる。
def bar(a,b,c,*d)
return(a,b,c,d)
#この関数を呼び出すと
hoge=bar(1,2,3,4,5,6) #hoge:1,2,3,(4,5,6)
となる。
#関数を定義するときにアスタリスク*を2つ付けると未定義の引数がディクショナリになる。
def foo(a,b,c,**d)
return(a,b,c,d)
#この関数を呼び出すと
hoge=foo(1,2,3,var0=4,var1=5) #hoge:1,2,3,{'var0':4,'var1',5}
== ファイルを扱う ==
#open関数を使う。モードは、r:読み込み, w:書き出し, a:追記 等
open(ファイル名[,モード[,エンコード[,エラー処理]]])
#例
file=open("bar.txt","r",encoding="utf-8")
text=file.read() #ファイルの内容を文字列型にする。
file.close() #最後にはファイルを閉じる
== モジュールをインポートする ==
*pythonのモジュールは、https://docs.python.org/ja/3/ から検索可能
#以下の式でモジュールを読み込む。以後、任意の名称.関数名()で関数を使用可能
#as以下は省略可能。
import モジュール名 as 任意の名称
#以下の式で関数を読み込む。from文を使った場合は、以後モジュール名を記載する必要が無い
from モジュール名 import 関数名など
== メソッド ==
#メソッド呼び出し。ここでいう「データ」とは例えばリスト。
データ.メソッド名(引数1,引数2...)
#リストに含まれる要素の数
リスト名.count()
#文字列の変換
str1="あいうえお"
str1.replace("あ","か") #かいうえお
== リスト内包表記 ==
#シーケンスの各要素が繰り返し変数として式が評価され、その評価値を各要素とするリストが返される。
[式 for 繰り返し変数 in シーケンス]
#例
[tem+1 for tem in [1,2,3]] #[2,3,4]
#最後にif文を入れると、(通常、繰り返し変数を含む)条件式が真の場合にのみ、式の評価値が要素となる。
[式 for 繰り返し変数 in シーケンス if 条件式]
== ディクショナリ内包表記 ==
{キー:値 for 繰り返し変数 in シーケンス[ if 条件式]}
== セット内包表記 ==
{式 for 繰り返し変数 in シーケンス[ if 条件式]}
== クラス ==
#selfとは生成されるインスタンス自体を指す。
#初期化メソッドのメソッド名は、「__init__()」という名前である必要がある。
class クラス名:
def メソッド名(self[,引数]):
関数ブロック
#インスタンスの作成
クラス名()
#例1
class Hoge:
def __init__(self,a,b):
self.a=a
self.b=b
#例1の場合、以下のようにインスタンスを作成
foo=Hoge(1,2)
#インスタンスには独自の変数を追加できる。この機能をアトリビュート代入という。
foo.var=10
#クラスの継承
class クラス名(スーパークラス名1[, スーパークラス名2, ... ]):
関数ブロック