旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

最近のPython: Episode-2

2008年10月16日

段々、慣れてきたので書き方に欲が出てきました。
以下、お勉強になったこと。

1. Noneを””として出力したい
Noneをそのままstr型として評価すると”None”になってしまう。
「えー、普通None(nullとかnilとか)は空文字じゃーん」と思うのは人情なので
それを手軽に書く書き方↓

hoge = None
str(hoge or "")

Falseとか0も空文字列になっちゃいますけどね。

2. dict型を展開されるように引数へ渡す
引数に**をつけて関数へ渡せば展開されます。
機能名としては、ネームインジェクションというらしいです。
以下、サンプルコード↓

def foo(one, **kwargs):
print one, kwargs
foo(**{"one": 1, "two": 2})            # -> 1 {'two': 2}
foo(11, **{"two": 22})                 # -> 11 {'two': 22}
foo(111, **{"one": 1111, "two": 2222}) # -> TypeError

3. float型を文字列表示する際に小数点以下の桁数を制御したい
例えば、str(3. / 9) とやると、’0.333333333333′ と長くなってしまいます。
これを表示するときに、桁数を制御したいなということです。

最初、round関数で丸めればいいのかなぁと考えましたが
丸めたところで桁数は変わらないということを知り、
結局はdecimalモジュールを使って解決したのですが、
decimalモジュールが少しばかりダサかったる過ぎたので、
他に方法ないのかなと思いました。

文字列フォーマット操作で解決できるようです↓

print '%.2f' % (3. / 9) # -> '0.33'

・・・信じられないだろ?
ひとつも自分で解決できなかったんだぜ、それら・・・。

Thank you for your kindness and hige.