1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python3のメモ

Posted at

Pythonチュートリアル(第3版)を斜め読みした際のメモ.
チートシート的に使いたい. 追記するかも.

構文

f = lambda x:  x*x
f(10) #=> 100

def pow(x):
    return x * x

h = pow
h(100) #=> 10000
m = { "key": "value" }
for k,v in m.items():
  ...
while True:
    try:
        # 何らかのValueError
        raise ValueError("えらー")
    except OSError as err:
        # エラーハンドル
    except ValueError: as err:
        # エラーハンドル
    except:
        # その他のエラーハンドル
        raise # 例外の再送出をしてもよい
    else:
        # try内で例外がスローされなかったら実行される
    finally:
        # 必ず実行される

モジュール

ディレクトリに __init__.pyがあるとパッケージとして扱われる.
例えば sound/effects/echo.py があったとき, echo.py 内の echofilter 関数を使うには,

from sound.effects.echo import echofilter

と書く.

出力

あらゆるPythonオブジェクトがrepr()の引数になれる.

# {formatの引数のインデックス : フォーマット}

import math
for x in range(1,11):
    print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))

print( 'Pi: {}'.format(math.pi) )
print( 'Pi: {!r}'.format(math.pi)) # !r は repr()を適用
print( 'Pi: {!s}'.format(math.pi)) # !s は str()を適用

m = { 'key1': 42, 'key2': 84 }
print( 'K1: {0[key1]:d}, K2: {0[key2]:d}'.format(m))
# K1: 42, K2: 84

# こっちの書き方もできるけど,古いらしい
print( 'Pi: %5.3f' % math.pi )
# Pi: 3.142

vars() はローカル変数をすべて含んだディクショナリを返す関数.

ファイル操作

f = open('filepath', 'r+') # r/w/a/r+

f.read(サイズ) # サイズ省略するとすべて読む
f.readline() # 1行読む
for line in f:
    print(line)

f.write('This is a test\n')

f.close()

オブジェクトによっては,不要時のクリーンアップ動作が定義されている.
with文を使うと使用後すぐに適切な方法でクリーンアップされる保証の下で利用できる.

with open("filepath") as f:
    for line in f:
        print(line)

json

j = json.dumps( obj )
obj = json.load(j)

クラス

class Complex:
    clazz_var = 'value' # クラス変数
    def __init__(self, r, i):
        self.r, self.i = r, i # インスタンス変数
    def to_s(self):
        return "{0:.3f} + {1:.3f}i".format(self.r, self.i)

c = Complex(3.0, -4.5)
print(c.r, c.i) # 3.0 -4.5
print(c.to_s()) # 3.000 + -4.500i
print(Complex.to_s(c)) # 3.000 + -4.500i

ジェネレータ

def reverse(data):
  for i in range(len(data)-1, -1, -1):
      yield data[i]

",".join(list(reverse('golf')))
#=> "f,l,o,g"

標準ライブラリ

import os
os.getcwd()  # カレントディレクトリ
os.chdir("path/to/dir") # cd コマンド相当
os.system("mkdir today") # シェルコマンド実行
help(os) # でモジュールのヘルプを確認できる

import shutil # ディレクトリ操作
shutil.copyfile('src.txt', 'dst.txt')
shutil.movefile('src.txt', 'dst.txt')

import glob # ディレクトリ走査
glob.glob('*.py')

import sys
print(sys.argv) # コマンドライン引数
# getopt モジュールやargparseモジュールで sys.argv をうまく処理できる

import re # 正規表現
re.findall( r'[a-z]+', 'hoge hoge string')
#=> ['hoge', 'hoge', 'string']

import math # 数学関連
math.cos(math.pi /4) #=> 0.707
math.log(1024, 2) #=> 10.0

import random # 乱数
random.choice(['a', 'b', 'c']) #=> a,b,cから無作為抽出する
random.sample(range(100), 10) # 0から99の値から重複なしで10個抽出
random.random() # 0から1の間の乱数(実数)
random.randrange(6) # range(6)からランダムに選んだ整数

import statistics # 統計量
statistics.mean([1,2,3]) # 平均値
statistics.median([1,2,3]) # 中央値
statistics.variance([1,2,3]) # 分散
# SciPyにはもっとたくさんあるよ

from urllib.request import urlopen # webページ取得
with urlopen('http://.....') as res:
    for l in res:
        print( l.deecode('utf-8') )
    
import smtplib # メール送信

from datetime import  date # 日付と時間
now = date.today()
now.strftime("%m-%d-%y %d %b %Y")

import zlib # zip圧縮
src = b'hogehoge fugafuga'
c = zlib.compress(src)
s = zlib.decompress(c)
print(s) # hogehoge fugafuga

from timeit import Timer # 計測
Timer('evalされる文字列', 'evalされる文字列').timeit() # それぞれの式の評価時間の差

import logging # ログ
logging.debug('でばっぐ') # 他には info,warning, error, critical 

import weakref # 弱参照, WeakReference

1
2
1

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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?