Python では、 関数定義の引数記述に "*" や "**" を使用することで、キーワード引数や任意引数リストを簡単に使用することができます。例えば:
>>> def func(a, *list):
... print list
...
>>> func(1, 2, 3, 4)
(2, 3, 4)
文字集合変換のエントリを書いた際に、 社内から:
string.replace()を
使うよりも、
辞書(マップ)+ループの方が計算量が少ないのでは?という指摘を受けました。
なるほど、
変換候補一覧のサイズ N、
変換対象文字列長を M とした場合、
string.replace() 方式なら O(N x M) ですが、
辞書+ループなら理論上は O(M) で済む筈です。
弊社は受託開発を主業務としていますので、 顧客の要望次第では、 あまり一般的ではない環境での開発も行います。
例えば:
- OpenSolaris
- SunStudio 11(最新は 12) 付属のコンパイラ
- GCC は無し
といった環境での開発だったりします。
Python 自体に咬まれたわけではないですが、 Python での実装中の話なので Python bite の括りで書きます。
入出力の文字集合体系(所謂「文字コード」) が一致している場合は問題無いのですが、 これらが一致していない場合、 出力文字コードが対応していない文字が入力に含まれていると咬まれます。
以下の Python コードでは、
関数 multiply はグローバル変数
var を引数 x 倍したものを返します。
var = 10
def multiply(x):
return (var * x)
このコードをもって、 関数から大域変数に「アクセスできる」と思っていると咬まれます。
ASCADEでは以前から成果物の量を取得して査定のデータに使用したりしています。
基本的に全ての成果物はプロジェクトごとのリポジトリで管理されているので、データの収集もスクリプトを用いて収集します。誰がある期間内にどの程度の成果物を作成したかは基本的には自動でわかるわけです。
ただ、数値を取得すること自体は簡単なのですが、数値の羅列がたくさんあっても、「状況」はわかりにくくて、可視化したいと思いつつ放置していました。