みんなの Python 1-8 スクリプトファイル 1-9 効率的なプログラミング

みんなのPython

みんなのPython

今日は 1-8 「スクリプトファイル」と 1-9 「効率的なプログラミング」のところを読みました。

  • 空行がブロックの終端として扱われるのは pythonインタラクティブに起動した時だけの挙動らしい
  • Ruby でいうところの $0 == __FILE__ は __name__ == '__main__'
  • 引数は import sys して sys.argv でアクセス
  • Ruby でいうところの nil は None
  • Python では文(Statement)は式(Expression)ではない。まあ普通はそうかも
  • copy モジュールの copy() 関数で shallow copy できる。 import copy; copy.copy(obj);
  • copy.deepcopy() で deep copy できる
  • デフォルト値つきの引数へのデフォルト値の代入は一度しか実行されないのでリストや辞書をデフォルト値にしている時は注意が必要

最後のデフォルト値つき引数の問題ははまりそうです。

def func(a=[]):
  a.append(0)
  return a

この関数 func は引数を省略して呼ぶたびにサイズが大きくなったリストを返します。