環境システム株式会社公式HP

〒660-0083 兵庫県尼崎市道意町7-1-3
尼崎リサーチ・インキュベーションセンター512

アイコン06-6657-5130

アイコンsales@hydrolab.co.jp

お問い合わせ

アイコン06-6657-5130

アイコンsales@hydrolab.co.jp

お問い合わせ

蛇使いな彼女BLOG

【第100回】クラスオブジェクトの条件分岐とmatch caseに関して②

2024.03.01

前回の続きです。

が!VisualStudioのサポート不具合でせっかく①で作成したpy310の環境でmatchが使えない事が発覚しました💔

後に詳しく説明しますが、Jupyterで代用できたので、まずはあらかじめつくっておいたカーネル(仮想環境)に切り替えてmatchを使ってみます。

以下はJupyterNotebookで実行したスクリプトと結果をhtmlで出力したものです。

JupyterはVSと違いWEB上で動くシステムなので、何もしていない状態だとsavefigなどローカル環境への自動保存ができません。参照と共有は出来ますが単発じゃないと面倒(笑)なので、若干コードを作り替えています。

Untitled

変数itemの列数によって処理を変えていますが、ちゃんと結果に反映されていますよね!

構文としてはScalaやC言語に採用されているパターンマッチのようですが、if文と何が違うかというと「match 対象:」と最初に明示しないといけない為コード行3桁以上の大きなプロジェクトでは後から管理しやすいです。

ただ、ifと違って演算は出来ない点に注意です。

さて、無事検証できたところでVisualStudioの不具合について説明しておきます。

前回の①で作った仮想環境py310(Python3.10)ですが、いつものようにVisualStudio2019から仮想環境へ切り替えてmatchを実行した場合、SyntaxErrorとなりました。そのあとPython3.11に変えて同じように試しましたが上手くいかず。メニュー下には警告が出ていました。

初めは構文ミスかバージョンミスかと思って何度かトライしていたんですが、どうやらVisualStudioはPython3.8からサポートしていないのが原因のようです!
後からインストールしたVisualStudio2022で試してもダメで、Jupyterに変えたら普通に動きました😵
これかなりの死活問題ですよね・・・。VS使いやすくて気に入っていたのですが、新しく出た構文とかパッケージに対応してない物があるのかあ~。

マイクロソフトさんがんばって!!

pagetop