Python 3.10、スイッチの構文を理解していますか?

Pythonは、データサイエンスや人工知能で働く人々に最適なプログラミング言語です。最近の調査によると、プログラマー開発の仕事の27%は、Python言語の知識を必要とし、今年の初めの18.5%から増加しています。

Pythonを人気のあるものにしているのは、非常に直感的である能力です。この言語には多数のライブラリがあり、十分に生産的で、比較的簡単に習得できます。2020年10月、Pythonのバージョン3.9が正式にリリースされ、辞書の更新/マージから新しい文字列メソッドの追加、zoneinfoライブラリの導入まで、Python3.9は多くの新機能を追加しました。

Python 3.10の2番目のアルファバージョンも2020年11月初旬にリリースされました。少し前にリリースされた3.9バージョンと比較して、新しいバージョンでは、タイプアノテーション拡張機能、zip、ビットカウント、および辞書マッピングが新たに改善されています。Python 3.10ベータ版がリリースされました。新しいベータ版の最大のハイライトは、switch-caseステートメントの導入かもしれません。

Python3.10ベータ版の新しい改善

Switchステートメントは多くのプログラミング言語に存在しますが、Pythonプログラミング言語はSwitchステートメントをサポートしていません。2016年に、PEP 3103が提案され、Pythonがswitch-caseステートメントをサポートすることが提案されました。ただし、調査によると、この機能のサポートはほとんどなく、Python開発者はそれを放棄しました。

Pythonの創設者であるGuidovanRossumは、StructuralPatternMatchingという名前のswitchステートメントを示す最初のドキュメントを提出しました。PEP634を参照してください。

現在、Python 3.10ベータのリリースに伴い、switch-caseステートメントがついに含まれています。

括弧で囲まれたコンテキスト・マネージャー:括弧は、コンテキスト・マネージャーの複数行にわたる継続でサポートされるようになりました。含まれるグループの最後にコンマを使用することもできます。

with (
CtxManager1 as example1,
CtxManager2 as example2,
CtxManager3 as example3,
):...

エラーメッセージ-NameErrors:インタープリターによって発生したNameErrorを出力すると、PyErr_Displayは、例外を発生させた関数で同様の変数名を提案します。

PEP 634構造パターンマッチング:パターンマッチングにより、ユーザーはいくつかのcaseステートメントで一致を追跡できます。プログラムでmatch-caseが実行されるときに、matchingステートメントがある場合、プログラムは対応するcaseステートメントを入力して操作を実行します。

マッチケースの構文と操作:パターンマッチングの一般的な構文は次のとおりです。

match subject:
case <pattern_1>:
<action_1>
case <pattern_2>:
<action_2>
case <pattern_3>:
<action_3>
case _:
<action_wildcard>

matchステートメントは式を受け取り、その値を1つ以上のcaseブロックとして指定された連続パターンと比較します。マッチケースの例は次のとおりです。

http_code = "418"
match http_code:case "200":
print("OK")
do_something_goodcase "404":
print("Not Found")
do_something_badcase "418":
print("I'm a teapot")
make_coffeecase _:print("Code not found")

次の図は、match-caseステートメントの実行の概略図です。プログラムは複数のケース条件をチェックし、変数http_codeで見つかった値に応じてさまざまなアクションを実行します。

同様に、一連のif-elif-elseステートメントを使用して同じロジックを構築できます。

http_code = "418"
if http_code == "418":
print("OK")
do_something_goodelif http_code == "404":
print("Not Found")
do_something_badelif http_code == "418"
print("I'm a teapot")
make_coffeeelse:print("Code not found")

ただし、match-caseステートメントを使用すると、http_code ==の繰り返し実行が削除され、さまざまな条件をテストするときにmatch-caseを使用すると、http_code==がはるかにクリーンに見えます。

簡単な例でパターンマッチングを理解できます。C、Java、またはJavaScript(および他の多くの言語)のswitchステートメントを使用して、オブジェクト(データオブジェクト)をテキスト(パターン)と照合します。switchステートメントは、オブジェクト/式をリテラルを含むcaseステートメントと比較するためによく使用されます。

ネストされたifステートメントを使用した一連の命令は、構造パターンマッチングと同様のタスクを実行するために使用できますが、宣言型アプローチほど明確ではありません。対照的に、宣言型アプローチは、一致するために満たす必要のある条件を宣言し、その明示的なパターンを通じてより読みやすくなります。構造パターンマッチングは最も単純な形式で使用でき、変数をcaseステートメントのテキストと比較しますが、Pythonにとっての真の価値は、オブジェクトのタイプとサイズの処理にあります。

マッチケースは、このPython3.10ベータバージョンの最大のハイライトであると言えます。この表現が好きな人もいれば嫌いな人もいます。Pythonがswitch-caseをサポートしない前は、誰もが関連する操作に辞書を使用できました。switchには読みやすい以外の利点はないと言う人もいます。Pythonのクロージャメカニズムであるdictの値は、クロージャを備えた関数である可能性があり、switch-caseよりも表現力が高くなると言う人もいます。結局のところ、Python 3.10ベータ版にはswitch-caseが組み込まれており、開発者に別のオプションを提供します。

ここでは、私が自分で作成したPython学習Qグループ1020465983をお勧めします。すべてのグループがPythonを学習しています。Pythonを学習したい、または学習している場合は、ぜひ参加してください。誰もがソフトウェア開発パーティーであり、ドライを共有しています。最新のPythonの高度な資料のコピーや、私が自分で編集した2021年のゼロベースの教育など、随時(Pythonソフトウェア開発にのみ関連する)商品
。Pythonに関心のある高度な中小規模のパートナーへようこそ。 !!

おすすめ

転載: blog.csdn.net/weixin_56659172/article/details/124165838