LoginSignup
6
10

More than 5 years have passed since last update.

Pythonの基本構文メモ

Last updated at Posted at 2018-06-03

特徴

  • 動的型付言語: 変数を定義するときに、データ型をあらかじめ宣言する必要なし
  • 関数を「値」として扱える: 関数を変数に代入したり、関数を他の関数の引数に渡すことができる(第一級関数(ファーストクラスオブジェクト))
  • 自動的に型変換が行われない
  • コメントは、#を使う
  • インデントはスペース4つが推奨

変数と定数

  • 関数の外で作った変数 => グローバル変数
  • 関数の中で作った変数 => ローカル変数
  • 変数だけの宣言はできない
color # エラー
color = 'red' # OK
  • pythonに「定数」はない: 値を変更しないように気をつけて、定数として使うしかない。大文字にするなどルールを作るとよい

制御文

  • switch文がない
  • if文、elif文、else文を使う
if color == 'red':
    print('赤')
elif color == 'blue':
    print('青')
else:
    print('黄')
  • for文
lists = ['赤', '青', '黄']
for list in lists:
    print(list)

関数

  • defを使う
  • 関数にreturnがない場合は、Noneを返す
  • インデントが解除されたところで、定義が終了
def en2ja(color):
    if color == 'red':
        return '赤'
    elif color == 'blue':
        return '青'
    else:
        return '存在しません'

print(en2ja('red')) # '赤'

データの集合体

  • pythonでは配列を「リスト」と呼ぶ
lists = ['赤', '青', '黄']
  • keyでデータを管理する集合体は「辞書」と呼ぶ
colors = { red: '赤', bule: '青', yellow: '黄' }
  • 「タプル」という集合体がある。タプルは中身を変更できないリストのようなもの。()をつけなくてもOKだが、明示的にタプルを示すために()をつける
colors = ('赤', '青', '黄')
  • タプルは、たとえば関数から複数の値を返す時などに使われる
def getColors():
    return ('赤', '青', '黄')

('red', 'blue', 'yellow') = getColors()
  • タプルを使うとこういうこともできる
a = '赤'
b = '青'

(a, b) = (b, a) # aは'青'、bは'赤'
  • 「集合」という集合体がある。集合は、重複を認めないデータの順不同な集合体のこと
colors = {'赤', '青', '青'}
print(colors) # {'赤', '青'}
  • リストにおけるデータの追加はappendメソッド、削除はdelメソッド、またはpopメソッドを使う
# 追加
colors.append('緑') # 末尾に'緑'が追加される

# 削除
del colors[0] # 0番目のデータが削除される
colors.pop() # 末尾のデータが削除される
  • 辞書におけるデータの追加は直接keyとvalueを指定し、削除はdel文、またはpop`メソッドを使う
# 追加
colors['green'] = '緑' # keyが'green'、valueが'緑'のデータが追加される

# 削除
del colors['green'] # keyが'green'のデータが削除される
colors.pop('green') # keyが'green'のデータが削除される
  • 辞書を一括処理したい場合はfor文を使う
for k, v in colors.items():
    print(k, v)

クラス

  • pythonでは、クラス自体もオブジェクト
  • インスタンスメソッドの第一引数にはインスタンス自身を表すselfを必ず指定。ここはthisでも何でも良いがselfにするのが慣例
  • いわゆるコンストラクタは、初期化メソッド__init__を使う
class Color:
    def __init__(self, color):
        self.color = color
    def showColor(self):
        return self.color

red = Color('red')
print(red.showColor()) # => 'red'
  • 継承も可能
class Parent:
    def __init__(self, color):
        self.color = color
class Child(Parent):
    def __init__(self, color):
        super().__init__(color)
    def showColor(self):
        return self.color

正規表現

  • 正規表現を扱うモジュールreが用意されている
  • matchメソッド: 適合した場合は、Matchオブジェクトを返す。適合しなかった場合は、空を返す
import re
m = re.match('py(thon)?3', 'python3')
  • searchメソッド: 文字列内に適合部分があるか探して判定する
import re
m = re.search('py(thon)?3', 'python3')
  • finditerメソッド: 文章中にある適合する文字列をすべて列挙する
import re
rob = re.compile('py(thon)3')
originalString = 'python3をpy3と表記しました'
for m in rob.finditer(originalString):
    print(m.group)
  • subメソッド: 文章中にある適合する文字列を任意の文字列に置き換える
import re
rob = re.compile('py(thon)3')
originalString = 'python3をpy3と表記しました'
print(rob.sub('パイソン', originalString)) # パイソンをパイソンと表記しました

ファイルの入出力

  • open関数を使ってファイルの新規作成、読み書きを行う
  • 引数でファイル名や「読むのか、書くのか」指定
  • 第二引数にwを指定すると、書き込みが行える
file = open('samplefile.txt', 'w')
file.write('Hello¥nWorld') # 改行は¥n
file.close() # ファイルを閉じる
  • 第二引数にrを指定すると、読み込みが行える
  • 第二引数は省略可能で、省略するとrを指定したことになる
file = open('samplefile.txt', 'r')
readString = file.read()
print(readString)
file.close() # ファイルを閉じる
  • 第二引数にaを指定すると、追記が行える
file = open('samplefile.txt', 'a')
file.write('Hello¥nPython') # 改行は¥n
file.close() # ファイルを閉じる
  • 日本語を扱う場合は、引数に文字コードを指定すると確実
file = open('samplefile.txt', 'a', encoding='utf-8', errors='ignore')
file.write('ハロー¥nパイソン') # 改行は¥n
file.close() # ファイルを閉じる
  • csvファイルを扱う場合は、csvモジュールを使う
with open('sample.csv', encoding='utf-8') as csvfile:
    csvreader = csv.reader(csvfile)
    next(csvreader)

    for members in csvreader:
        # 処理書く
  • withは処理が完了したときに自動的にファイルを閉じる

コピー

  • 参照コピー: 代入する
obj1 = ['red', ['blue', 'yellow']]
obj2 = obj1
  • 浅いコピー(Shallow Copy): copyモジュールのcopyメソッドを使う
import copy
obj1 = ['red', ['blue', 'yellow']]
obj2 = copy.copy(obj1)
obj2[1].append('green')
print(obj1) # ['red', ['blue', 'yellow', 'green']]
  • 深いコピー(Deep Copy): copyモジュールのdeepcopyメソッドを使う
import copy
obj1 = ['red', ['blue', 'yellow']]
obj2 = copy.deepcopy(obj1)
obj2[1].append('green')
print(obj1) # ['red', ['blue', 'yellow']]
6
10
3

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
6
10