Python 3の新機能が解決する問題は何ですか?[閉まっている]


18

Python 3の新機能は次のとおりです。

私たちは、よく知られている迷惑やいぼを修正し、多くの古い残骸を取り除きます

何が違うのか(修正)は言及されているが、なぜ(問題)は言及されていない。私は問題が何であるかを見つけていません。修正により解決される問題は何ですか?


1
ただし、削除されなかったのは、クラスメソッドに「自己」を渡す必要がある理由です。失敗した列車。
リグ

回答:


11

すぐに思い浮かぶものに名前を付けます。

  • キーワードのみの引数:PEPの原理で説明されています。
  • nonlocal:これがないと、クロージャは閉じられた変数を上書きできません。この必要性は、デコレータやその他の高次関数で時々発生します。必要な変更可能な状態を変更可能なオブジェクトに保存する唯一の妥当な回避策(外部APIを切り替えない)は、過度にいです。
  • 辞書とセットの内包表記:リスト内包表記と同様の方法で辞書とセットを作成することは、ジェネレータ内包表記を介して行われる場合、見栄えが悪く、少し遅くなります。これにより、追加の費用をかけることなく、適切な場所でこれらのタイプを使用できます。特にinテスト用のセットリテラルについても同じです(Python 3.2以降、これらはピープホールオプティマイザーによって最適化されます)。
  • 8進リテラルはPython 2に存在していましたが、0777表記法は慣れていない人にとって落とし穴です(他のコンテキストでは、先頭にゼロを追加しても値も基数も変わりません)。
  • バイナリリテラルは、16進リテラルよりもさらにビットをいじるのに役立ちます。
  • バイトリテラルは、Unicode文字列とバイト文字列の間の強制された区別の症状であり、文字列リテラルはUnicodeです。これらの変更により、テキストと未解釈のバイナリデータの違いとエンコードについて考えるようになります。そうでなければ、エンコーディング関連のエラーを見つけるために広範なテスト(英語を話すヨーロッパ/アメリカ中心の愚か者はめったに考えない)が必要になるためです。
  • except ex, var-> except ex as var一般的なエラーを修正しますexcept ValueError, IndexError(両方をキャッチする必要がありますが、最初のキャッチのみを行い、キャッチしたIndexError例外で名前を上書きします)。
  • リスト内包スコーピング:名前空間の汚染を避け、ジェネレーター式の観点からそれらを考えることができます。
  • 構文とモジュールの削除:「1つあるべきです-できれば1つだけであることが望ましい-それを行うための明白な方法」に近づけてください。貧弱なチュートリアルを持っている人が物事を修正するための古くて壊れた方法に固執するのを避けます
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.