整数として提供されるjob
byjobNumber
のフェッチをサポートする小さな Python 2.x API を作成しようとしています
。jobNumber
時々、ユーザーはjobNumber
0 で始まる整数リテラルとしてa を提供します037537
。(これは、R を適切に考慮する言語である R によって甘やかされてきたため037537==37537
です。) ただし、Python は、「0」で始まる整数リテラルを 8 進数と見なし、したがって037537!=37537
、代わりに037537==16223
. これは、最小の驚きの原則に対する露骨な侮辱であると私は思います。ありがたいことに、これは Python 3 で修正されたようです--- PEP 3127を参照してください。
しかし、現時点では Python 2.7 に固執しています。だから私のユーザーはこれを行います:
>>> fetchJob(037537)
黙って間違ったジョブ (16223) を取得するか、次のようにします。
>>> fetchJob(038537)
File "<stdin>", line 1
fetchJob(038537)
^
SyntaxError: invalid token
ここで、Python は 8 進数と互換性のない数字を拒否しています。
Py3K の動作を取得できるようにするために提供されたものは何もないようです__future__
---少なくともレクサーの変更が必要になるため、何らかの方法で Python に組み込む必要があります。
このような場合に、ユーザーが間違った仕事に就くのを防ぐ方法を知っている人はいますか? 現時点で考えられる最善の方法は、その API を変更して、int ではなく文字列を取ることです。