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の和集合が求められる。差集合の場合は「-」、積集合の場合は「&」、排他的論理和の場合は「^」を使用
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:
        breakelse:
    式  #この式は、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()  #最後にはファイルを閉じる
モジュールをインポートする
#以下の式でモジュールを読み込む。以後、任意の名称.関数名()で関数を使用可能
#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, ...  ]):
    関数ブロック