Pythonチュートリアルまとめ

Pythonチュートリアル(Python2.x対応)で自分が知らなかったこと, なんとなくは知っていたけど使っていなかった知識で特に重要そうなものをメモしておく.

 

dir()関数

>>>import sys

>>>dir(sys)

sysモジュールがどのような名前を定義しているのかを確認できる

 

例外の処理

>>>while True:

          try:

             x = int(input())

             break

          except ValueError:

             print("数字を入力しろ")

入力として数字を入力すればbreakでwhile文が終わるが, 例えば文字列を入力するとint()へ変換できずValueErrorが生じるtry文はエラーが生じた地点でexcept文へ移動しexcept 文のオプションValueErrorと今回出たエラー(ValueError)と比較一致していたら,except文を実行する.

except(RuntimeError, TypeError, detail)のようにエラー処理を複数指定できる.

 

クリーンアップ

def divide(x,y):

  try:

    result = x/y

  except ZeroDevisionError:

    print("ゼロで割った")

  else:

    print(result)

  finally:

    print("finally")

 

>>>division(2,1)

2 ←エラー処理でない∧ZeroDivisionErrorでもない(当たり前)のでelse文が実行

finally ←finallyが実行

>>>division(2,0)

ゼロで割った  ←ZeroDivisionErrorが実行

finally  ←finallyが実行

>>>division("2","0")

finally ←"2"/"0"は出来ないのでエラーが出てtry文から抜けて例外処理へ, ZeroDivisionErrorでないelseは実行されないfinallyへ

エラーの文がつらつら

 

ジェネレータ

def reverse(string):

    for i in range(len(string)-1,-1,-1):

      yield string[i]

 

>>>for c in reverse('vocky')

          print(c,end="")

ykcov

これはreverse('vocky')で

'vocky'[4]

'vocky'[3]

'vocky'[2]

'vocky'[1]

'vocky'[0]

の順でcに入るということ