Python 3.0のどの機能が日常のコーディングを変えますか? [閉まっている]
-
19-08-2019 - |
解決
私が非常に興味を持っていることがいくつかあります:
-
ユニコードと8ビット ではなく、
- テキストとデータ
- 拡張イテラブル開梱
- 関数の注釈
- バイナリリテラル
- 新しい例外キャッチ構文
- Python 2.6の多くの機能。例: with ステートメント
他のヒント
例外チェーンが普及することを願っています。以下に示すアンチパターンによる例外スタックトレースの喪失は、長い間私の悩みの種でした:
try:
doSomething( someObject)
except:
someCleanup()
# Thanks for passing the error-causing object,
# but the original stack trace is lost :-(
raise MyError("Bad, bad object!", someObject)
元の例外にコンテキスト情報を追加し、元のスタックトレースを保持することは 可能ですが、非常にいハックが必要でした。これで、次のことができます(そしてすべき!):
raise MyError("Bad, bad object!", someObject) from original_exception
上記の両方を簡単に取得します。ですから、失われたスタックトレースに対する私の聖なる使命の一部として:
次に、例外を再発行するときは、 from 句を忘れないでください!ありがとう。
率直に言って、どれもありません。おそらく新しい構文のいくつかを使用していることに気づくでしょうが、私は主にPythonを使用して、迅速で単純なスクリプトと正規表現を使用します。
この新しい機能により、多くの人にとっては小さなことがたくさん簡単になり、少数の人にとっては大きなことが少し簡単になると思います。しかし、多くの人が最終的に生産性の大幅な向上につながるという主張には懐疑的です。
要するに、これらの変更は全体的に少し良くなると思いますが、奇跡を期待しないでください。
それほど多くの機能はありませんが、ライブラリのクリーンアップは特に役立つと思います。新しいPythonプログラマーに。複数の機会に、私はPythonで何かをして、その機能を提供する2つの含まれているライブラリを見つけたいと思っていましたが、他のライブラリを選択する理由は明らかではありませんでした。
ここでは、Python 2.xとPython 3の新機能や相違点について説明する優れた記事があります。
http://www.b-list。 org / weblog / 2008 / dec / 05 / python-3000 /
インタープリター言語で可能な限り最小の移行コースを達成するために彼らがしたことにもかかわらず、私はpython3のリリース全体が移行の10年間の苦痛の道であると思います。そのため、特に魅力的ではありません。
彼らが行った改善はすべて良くて重要です。文字列の2つの異なるタイプはどこでも迷惑の本当の原因であるため、Unicodeオブジェクトから削除し、現在はUnicodeオブジェクトを除いてbytesオブジェクトを導入するのは良いことです。
bignum vs. num -changeは便宜上のものであり、これも良い選択だったと思います。全体として、彼らは過去10年間に蓄積した有害な要素から言語を取り除きました。
2番目に最悪だったのは、実装が10%遅いことでした。まるで速度がpythonの問題ではないかのようです。
python3のリリースはpythonの評判を改善するのではなく押し下げると信じています。今では、彼らは言語がライブラリサポートに帰着するとき、彼らの言語で最初に戻っています。
それほど多くのことをする必要はありません。
-
unicode()
またはu""
の使用について心配する必要はありません。 -
urllib
urllib2
およびhttplib
のドキュメントを検索してその機能の場所を見つける必要はありません。ファイルをエンコードし、POSTリクエストでアップロードする必要があります -
except TypeError, something:
がTypeError
とsomething
、または<=>を「何か」にキャッチするかどうかを心配する必要はありません。
そして逆に、ドキュメントをもう一度見る必要があります!私はpydocを参照せずにほとんどのことを行うことができるようになりましたが、Pythonを知っているたびに、他の有用なモジュールまたは関数を発見します。
printステートメント。 <sniff>
もう見逃し始めています。
実際、Python 2.6に移行する前に、print
を優先してlogging.debug
を削除しています。これは、デバッグ、サポート、開発のために<=>を何気なく使用する習慣から抜け出すためです。
残っているのは、実際にstdoutでデータを生成するプログラムです。それらのために、2.6 / 3.0互換の<!> quot; print <!> quot;を導入するかもしれません。ライブラリの1つで機能します。
辞書の理解力は必ずしも衝撃的ではありませんが、非常に優れています。
{k: v for k, v in list}
はdict(list)
よりも長いですが、より柔軟で自明です。
Python 3の最も過小評価されている機能の1つは、Abstract Base Classesの導入です。これは、Pythonプログラミングをすぐに変革するものではありませんが、アヒルのタイピングの緩やかなアプローチから、より適切に定義されたインターフェイスの方向への興味深いシフトを表しています。
詳細については、 PEP 3119 をご覧ください。
>Python 3のリリースを言語学習の動機として取っているので、それらすべてについてだけです。
Unicode(utf-8)は、非英語圏の国に住んでいる人々にとって本当に重要です。
私はいつも忘れてしまうので、ファイルの先頭でエンコーディングを指定したくありませんでした。 UTF-8を使用しているため、通常、テキストはASCIIと互換性があります。したがって、エンコード仕様がなくても機能します。しかし、名前を(アクセント付きで)または<!>#8364と書くと、記号、それは壊れています...私は\ uxxxx表現でユニコード文字を書くことになりましたが、それはちょっと不可解です!