2011-01-01から1年間の記事一覧

エキスパートPythonプログラミング

気付けば今年も後ひと月ちょっと、ここのところ会社滞在時間が延びてるなぁ。。。 Anacondaとかvirt-installとかPythonのコードを眺める機会も増えてきた。 まだまだ訳分からないけど、ちょっとずつでも読み進められるようになろう。 シーケンスの要素とイン…

Pythonクックブック(4章)

条件に応じて関数呼び出し Pythonでは、swith~caseは使えないのでif~elif~elseで条件分岐を作って、関数呼び出しが自分で考えつく方法ディクショナリとget()を使うと、条件分岐を作らなくても実現可能。とっても見やすい。 if~elif~ 相当をやっているのが、g…

Pythonクックブック(4章)

ディクショナリの部分集合作成 前回dict()とzip()を使って、ディクショナリを作ったが、ちゃんと理解出来てなかったので復習。 これがよくわかってなかったので今日やった部分集合作成がチンプンカンプンだった。まず、マップ型のヘルプを見ると、以下のよう…

Pythonクックブック(4章)

ディクショナリの操作(作成、検索、追加) ディクショナリの作成は、dict()を使うことで、keyとvalueのシーケンスから行える。 おかげで、{'key':'value'}の構文を使用しなくても済む。また、存在しないキーに対する検索でもKeyError例外を出さないようにする…

Pythonクックブック(4章)

リストで行列を表現 リストの要素を行列の列に見立てると以下のように足す、引く、掛けるの演算が出来る。 割るは、逆行列のかけ算と定義すれば良いが、逆行列の算出方法自体を忘れてしまったので今回はパス。 [kobakoba0723@fedora13-intel64 ~]$ cat calc_…

Pythonクックブック(4章)

リストのリスト リストのかけ算をする時には気をつけなければいけない。 リストのかけ算は、リストの要素を乗数分新しく作るのではなく、同じ要素に対する参照を乗数分作るだけ。 # ベタにリストのリストを作る >>> multi1 = [[0, 0, 0], [0, 0, 0], [0, 0, …

Pythonクックブック(4章)

オブジェクトのコピー Pythonでは明示的にしないと、オブジェクトのコピーはされない。 immutableオブジェクトの場合は気にしなくても良いけど、mutableオブジェクトの場合は気にしないといけない。 代入文は参照先の共有ってことに注意。ビルドインクラスの…

Pythonクックブック(3章)

dateutilモジュールの続き rrule 繰り返し処理を簡単に出来る。 >>> from dateutil.rrule import * >>> from datetime import * >>> import calendar >>> today=datetime.today() >>> firstday=today.replace(day=1) >>> lastday = today.replace(day=calend…

Pythonクックブック(3章)

dateutilモジュール。 インストール サードパーティのモジュールなのでまずはインストールから。 サイトからtarballを持ってくるやり方もあるみたいだけど、easy_installでインストール可能なので、 [kobakoba0723@fedora13-intel64 ~]$ easy_install python…

Pythonクックブック(3章)

日付の続き、今日はdatetimeモジュール*1。明日はdateutilモジュールを使ってみる。 datetimeモジュール 基本的な日付型および時間型を扱うためのモジュール。次の5つのクラスが属している datetime |- class timedelta : time/date/datetimeクラスの2つの…

Pythonクックブック(3章)

昨日のめざせ会社の星を観てたら、「25分作業して5分休憩する」ってことをやってる人が出てた。 調べてみると、この方法「ポモドーロ・テクニック」って呼ばれてる時間管理術。 「○ポモドーロ」って見かけたり、翻訳本「アジャイルな時間管理術 ポモドーロテ…

Pythonクックブック(2章)

ファイル操作の続き 特定ディレクトリの探索(glob) globモジュールは、Unix 形式のパス名のパターン展開をしてくれるので、 下位ディレクトリを調べる必要がないような探索にはos.walk/fnmatchを使わなくてもよい。 globモジュール自体が、os.listdir()/fnma…

Pythonクックブック(2章)

ファイル操作の続き ディレクトリの探索(os.walk, fnmatch) os.walk(top)を実行すると、(dirpath, subdirnames, filenames) を返す。 [kobakoba0723@fedora13-intel64 ~]$ ls -R top/ top/: eggs.txt spam.txt sub top/sub: hoge.data piyo.data >>> import …

Pythonクックブック(2章)

ファイル操作の続き zipファイルを扱う(zipfile, tempfile) zipfileモジュールを使うとzipファイルの内容物を表示したり、展開したりできる。ZipFile.namelist()を使うと内容物の名前を取得できるけど、 ZipFile.infolist()を使うと内容物に関する名前とかサ…

Pythonクックブック(2章)

2章はファイル操作について 特定の行を読む(linecacheモジュール) linecacheモジュールを使うと、テキストファイルの各行にランダムにアクセスできる。 linecache.getline(filename, line_number)はline_number行目のデータを返す。 もし、line_number行目が…

入門GNU Emacs(11章)

Emacs Lisp 雑感 閉じ括弧の位置がどうにも慣れない。改行して対応する開き括弧の位置と合わせたくなる。M-x lisp-interaction-mode が便利。いつでもLisp対話モードに移ってC-jで評価が出来る。 基本 Lispの基本要素は関数/変数/アトム 要素 内容 関数 基本…

Pythonクックブック(1章)

初めてのPythonを一通り読み終えたので、今度は実践的なコードを読んで勉強してみる。今の自分に理解できる部分がどれぐらいあるかな。 オブジェクトの型判定 あるオブジェクトがどのクラスのインスタンスかを判定するにはisinstance()を使う。 type()の復帰…

入門GNU Emacs(10章)

emacsのカスタマイズ方法は3つあるが、どの方法でも.emacsが編集される Customを使う Optionを使う(裏ではCustomeが実行される) .emacsを編集する Customを使う M-x customize Enter を実行し、Customを起動する ハイパーリンク(?)を辿って、設定したい項目…

入門GNU Emacs(9章)

CEDET Collection of Emacs Development Environment Tools の略で、プログラミング支援ツール。 Emacs23.2では標準で搭載されている。CEDETには以下のようなツールが含まれている ツール 機能 Projects プロジェクト(EclipseやVCとかのプロジェクトと同じ)…

入門GNU Emacs(9章)

compileとgrep キーバインド 意味 M-x compile コンパイルを実行する M-x grep ソースをgrepする M-x grep-find 起点のディレクトリ以下のソースをgrepする C-x ` 次のエラー or 検索結果に移動し、対応するソースを開き、該当行へ移動 M-n 次のエラー or 検…

入門GNU Emacs(5章)

シェルモードとDiredモード シェルモードでのキーバインド キーバインド 意味 C-c シェルのキーバインド シェルのキーバインド実行 M-p 直前のシェルコマンドの表示 C-c C-o シェルバッファの表示のクリア C-c C-r 直前のコマンドの最初の行をバッファの1行…

入門GNU Emacs(4章)

バッファ、ウィンドウとブックマーク バッファ関連キーバインド キーバインド 意味 C-x C-f ファイルの内容をバッファに展開 C-x b バッファに移動 C-x -> 開いているバッファに順に移動 C-x k バッファの削除 C-x C-q バッファの書込み属性の変更 C-x C-f …

easy_install と PEP8

良いコードを書く技術っていう本を読んでます。 各言語のコーディング標準には目を通しておくとよいということで、 PEP8を読んでみたら、まぁ色々と標準スタイルから外れてることをしてる。。。毎回毎回コードを書く時にPEP8を見ていると覚えるんだろうけど…

入門GNU Emacs(3章)

検索と置換 検索系キーバインド Emacsには複数の検索モードがあって、今まで自分が使っていたのはインクリメンタル検索。 正規表現を使った検索も当然のように可能。 単純検索(検索開始と指示すると検索が開始される) インクリメンタル検索(検索ワードの入力…

入門GNU Emacs(2章)

今までは Ctrl のキーバインドしか知らなかったけど、Metaを使ったキーバインドもいっぱいある。 Ctrl よりも、Meta を使ったキーバインドの方が対象とする領域が大きい。 カーソル移動系キーバインド 段落以下の単位での移動(文字や文よりも少し大きな単位…

入門GNU Emacs(1章)

やることは何でもいいから、まずは手を動かすようにしたい。 自分はもう全然新卒じゃないけど*1、新卒準備カレンダーを見てたら、 「何をすればいいんだろうか」とか「何をやろうかなぁ」なんて自分はうだうだやってる場合じゃないなと思った。 何も知らない…

初めてのPython(29章)

勉強を始めて8ヶ月、やっと最後まで来た。 次は何をしようかな。 とりあえずの候補は Python クックブック 基礎から学ぶソフトウェアテスト 入門 GNU Emacs sys.exc_info 直近で発生した例外についての情報を取得するための関数 復帰値は(type, value, trac…

初めてのPython(28章)

前の章に引き続き例外について 例外の種類 大きく分けて2種類 ビルドイン例外 ユーザ定義例外 ビルドイン例外 あらかじめ定義されている例外(クラス)で階層構造になっている。 BaseException Exception StandardError ArithmeticError FloatingPointError .…

初めてのPython(27章)

例外に関連するステートメントは4つ try/except/else/finally raise assert with/as try/except/else/finally 発生した例外を検知/処理するためのステートメント 構文とそれぞれのブロックの意味 try: # 例外が発生する可能性のあるステートメント <statement> except </statement>…

decorator

ここでは、関数を文字列に置き換えるデコレータをやった。 デコレータがどう処理されるかがわかったので、今度は関数の機能を拡張(?)するデコレータをやってみる。 クロージャを使ったデコレータ(引数なし) まずは、関数を使ったデコレータから。クロージャ…