アジョブジ星通信

進捗が出た頃に更新されるブログ。

IntelliSense に仕事してもらう Python の書き方

f:id:azyobuzin:20131231150914p:plain

まだ明けません、おめでとうございます。やっぱり最強の Python エディタは Visual Studio だと思います。というわけで、今回は Python Tools for Visual Studio(PTVS) で型を明示して IntelliSense に働いてもらおうというお話です。

PTVS といえば

対話コンソール、強力なデバッグ機能、そして IntelliSense です。適用に変数をつくれば
f:id:azyobuzin:20131231151415p:plain
のように勝手に型を認識して、 . と入力すればさっとメンバーを表示してくれます。

でも関数の引数の型はわからない

f:id:azyobuzin:20131231150908p:plain
このように引数は見事に <unknown type> になってしまいます。関数を使っていくうちに学習していってくれるみたいですが、使い方によっては大量の謎候補が生まれて馬鹿になっていきます。そこで、型を自分で指定してあげれば解決なわけですが、そのやり方を紹介します。

1. assert を使う

assert isinstance(hoge, HogeType)

のように書くと hoge は HogeType と確定するので、こんな感じに IntelliSense を利用することが出来ます。
f:id:azyobuzin:20131231150909p:plain
f:id:azyobuzin:20131231150910p:plain

2. if を使う

assert と同じ要領で

if isinstance(hoge, HogeType):

とすると、ブロック内で IntelliSense が利くようになります。
f:id:azyobuzin:20131231150912p:plain

またこのように関数を使うときは分岐すべてが候補として出てきます。
f:id:azyobuzin:20131231150911p:plain

うまくいかない例

assert の後や if のブロック内でしか型が確定していないので、
f:id:azyobuzin:20131231150913p:plain
のように if not isinstance で弾くということはできないみたいです。