2016-06-24 12 views
6

タイプヒントをPython 3.5バージョンで利用できるようになりました。仕様(PEP 484)で目標(と非目標は)明確にさらされている:タイプヒントを使用してPythonをCythonに変換する

理論的根拠と目標

このPEPは、型注釈のための標準的な構文を提供することを目的と

、開放Pythonコードより簡単な静的解析とリファクタリング、潜在的な実行時の型チェック、型情報を利用した(おそらく、状況によっては)コード生成が含まれます。 [...]

これらの目標のうち、静的分析が最も重要です。 パフォーマンス最適化のための型ヒントを使用して

非目標

は読者の課題として残されています。

一方、Cythonはパフォーマンスを向上させるために長い時間静的構文を使用しています。通常、人々は自分のコードの一部をCython構文で書き換え、コンパイルしてから、独立したモジュールとしてインポートします。それは、大規模なコードベースでは苦労しています。しかし、最悪の部分は、上記の手順をすべて正しく実行しても、モジュールを使用している場合に発生する可能性のある互換性の問題があるため、実際の改善が保証されていないということです。

困難なタスクはは、この新しいタイプは自動的にジョブの残りを行い、おそらくCython構文にそれらを翻訳してにコードに散在物事をヒント使用するツールを書くのだろう(モジュールにコンパイルし、すべてのインポートそれらを戻す)?したがって、すべてのコードベースで同じ言語構文を共有することは可能です。

理論的には、そのようなツールを書くことは可能ですが、価値があるかどうかはわかりません(それを書くには複雑さと歩留まりが向上する)。

ありがとうございました。

+0

'cython'を使用していた場合、どのくらいのPythonコードを変換しましたか?理想は、スピードアップが重要な部分集合に焦点を当て、残りはPythonで残しておくことだと思いました。あるいは既存のC++/Fortranコードへのブリッジとして 'cython'を使用してください。 – hpaulj

+0

私はあなたに部分的に同意します。しかし、統一された構文を持つ方がずっと良いと思います。しかし、@ hpauljが言ったように、私の話題はStackoverflowのためではありません。ごめんなさい。 – GustavoIP

答えて

3

他の人が484とCythonについて尋ねたところ、PEP-484 Type Annotations with own types、そして私は約484とnumpyの数か月後のスレッドで応答しました。

私はこのトピックのStackoverflowに対する適合性について疑問を抱いています。これは研究トピックであり、「このコーディングの問題を解決するにはどうすればよいか」という質問ではありません。

限定された読取りに基づいて、484のタイプヒントは予備的であり、使用は484人の著者によって開発されたコードチェッカーに限定されています。 Py3は長い間アノテーションを持っていましたが、それらを含むコードの例はほとんど見ていません。確かに私がここに焦点を当てたコードnumpyにはありません。

もう1つのポイントは、Py3と同じくらい多くてもPy3と同じように、cythonnumpy(およびnumba)が使用されています。したがって、Py 3.5の最新のbells-n-whistlesは、一般的にこれらのユーザによって無視されます。 @演算子は、numpyユーザーの価値が最近追加された唯一の演算子です。

あなたは歓迎ですが、私はそれが重複しているか話題に基づいて閉鎖のためにこの質問を推薦するかもしれません。

typingモジュールはhttps://github.com/python/typing

mypyで開発されているが、切断だ484に基づいて、型チェッカー、https://github.com/python/mypy(面白い、~/mypyは、私はすべての私のSOのテストスクリプトを置くディレクトリです。)

です最先端のPython型チェック作業が行われています。

+0

申し訳ありませんが、私はここでStackoverflowとGoogleで検索したときに何も見つかりませんでした。御時間ありがとうございます! – GustavoIP

関連する問題