最近のPython: Episode-2
2008年10月16日
段々、慣れてきたので書き方に欲が出てきました。
以下、お勉強になったこと。
以下、お勉強になったこと。
1. Noneを””として出力したい
Noneをそのままstr型として評価すると”None”になってしまう。
「えー、普通None(nullとかnilとか)は空文字じゃーん」と思うのは人情なので
それを手軽に書く書き方↓
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′ と長くなってしまいます。
これを表示するときに、桁数を制御したいなということです。
例えば、str(3. / 9) とやると、’0.333333333333′ と長くなってしまいます。
これを表示するときに、桁数を制御したいなということです。
最初、round関数で丸めればいいのかなぁと考えましたが
丸めたところで桁数は変わらないということを知り、
結局はdecimalモジュールを使って解決したのですが、
decimalモジュールが少しばかりダサかったる過ぎたので、
他に方法ないのかなと思いました。
文字列フォーマット操作で解決できるようです↓
print '%.2f' % (3. / 9) # -> '0.33'
・・・信じられないだろ?
ひとつも自分で解決できなかったんだぜ、それら・・・。
ひとつも自分で解決できなかったんだぜ、それら・・・。
Thank you for your kindness and hige.