Python 3.10.2
2021年12月6日3.10の最初のメンテナンスリリースが公開されました。そのわずか1か月後の2022年1月14日、3.10.2が2回目のメンテナンスリリースとして登場です。Pythonは1〜2カ月に1度のペースでバージョンアップがされています。ここでは、3.10からのリリースについて順に説明していきます。 【参考】:Python 3.10.2
そもそもPythonとは?
Pythonとは、インタープリタ型のオブジェクト指向プログラミング言語です。言語仕様がシンプルであるため、メンテナンス性に優れています。汎用用途の他、それぞれの専門分野にライブラリーが公開されているため、多様なアプリケーション開発で利用されています。 【参考】python
Pythonを利用するには編集用テキストエディタとPCがあればすぐ始められ、Windows・Linux・MacOS等のOSで対応しています。ターゲットとなる多様なシステムにPythonのインストールモジュールをダウンロードし、インストールが可能です。 【参考】python download
Pythonの特徴
Pythonの特徴は、プログラム記述がシンプルなことが挙げられます。記述しやすく、かつ判読しやすいのでメンテナンス性に優れています。さらに、オブジェクト指向プログラミングであるため、高機能なプログラムが簡単に記述できるメリットがあります。
Pythonはインタプリタのためデバッグが簡単であり、コード開発とライブラリー共有が順次行われています。分析アルゴリズムが共通化しやすい人工知能(AI)では、利便性向上のために機械学習やディープラーニング(深層学習)のライブラリーが数多く提供されており、AI分野ではPythonが標準的に用いられています。
バージョンアップで追加されたPythonの機能
Pythonはセキュリティ対策やバグ修正を含めて、1~2カ月に1度のペースでバージョンアップ版が公開されています。3.10.0の公開日を順に整理します。
・Python 3.10.0 2021年10月4日公開 ・Python 3.10.1 2021年12月6日公開 ・Python 3.10.2 2022年1月14日公開
この期間は3.9のリリースも3.9.8・3.9.9・3.9.10とバージョンアップを重ね公開されているため、精力的にバージョンアップがされていることがわかります。
Python 3.10の新機能
Python 3.10の新機能は「What’s New In Python 3.10」にまとめられています。 【参考】:What’s New In Python 3.10
以下が主な機能追加です。
・context managersの丸カッコ対応
context managersでネスト解釈が改良され、複数行にまたがる継続行で丸カッコの解釈が可能となります。従来のimportステートメントと同様の方法で書式が解釈されます。具体例ですが、with構文では行末にバッククォート(”\”)をつけずにカンマで終わる記述が可能です。
with (
Function1() as example1,
Function2() as example2,
Function3() as example3
):
・エラーメッセージの改良:SyntaxError SyntaxErrorとして表示される、文法エラーに関するメッセージの改良がされました。
丸カッコや角カッコが正しくセットで記載されていない場合、該当するカッコを表示するよう改良されました。文字列のリテラルが正しく括られていない場合も、その該当範囲を表示するように変更されています。
同様に「”:”(コロン)の不足や丸カッコがタプルに未記載の場合」、「”,”(カンマ)の誤り、複数のException型に丸カッコがない場合」、「辞書型リテラルに”:”(コロン)がない場合」、「tryブロックでexceptまたはfinallyブロックの記述がない場合」、「”=”と”==”を間違えた場合」、「f-stringで”*”を使った場合」にエラーメッセージが表示されます。
・エラーメッセージの改良:IndentationError インデントエラー(IndentationError)が記述コンテントに応じてステートメントを含めた表示がされます。
・エラーメッセージの改良:AttributeError 例外処理(exception)が発生した場合、PyErr_Display()が類似の属性名の誤りの可能性について、AttributeError行に提示してくれます。
・エラーメッセージの改良:NameError 例外処理(exception)が発生した場合、PyErr_Display()が類似の変数名の誤りの可能性について、NameError行に提示してくれます。
・構造型パターンマッチングの追加
matchステートメントと、caseステートメント形式のパターンマッチングが可能です。直接リテラルとのマッチングを図るほか、複数のリテラルをまとめて記述したり、必要に応じてワイルドキャラクター(”_”)を指定したりします。caseステートメントでは変数のバインドも可能で、クラス呼び出しも可能です。具体的には以下のような基本構文となります。
match 表現や式:
case <パターン1>:
<実行コード1>
case <パターン2>:
<実行コード2>
case <パターン3>:
<実行コード3>
case _:
<ワイルドキャラクターの実行コード>
基本構文の<パターン>では、リスト・タプル・辞書等を用いることもできます。
・Unionオペレータの追加 “X | Y”で表されるUnionオペレータが追加されました。Typescriptと同様の記述が可能となり、従来の”Union[X, Y]”よりも記述がシンプルでわかりやすくなります。isinstance()やissubclass()でも、Unionオペレータが利用できます。
・パラメータ仕様変数(ParamSpec)の追加 typingモジュールにParamSpecが追加され、パラメータ型を転送することができます。またConcatenateでさらに引数を連結し、追加・削除が可能です。
・TypeAliasの追加 type alias(型エイリアス)の区別がつきやすいように、TypeAliasとして別名を明示できます。
・ユーザー定義のType Guard typingにTypeGuardが追加され、型の絞り込みが正確に行えるようにします。
・改良されたモジュール Optimizationとしてモジュールやインタープリタ等に高速化の改良がされています。この他、多くのモジュールが修正・改良されています。詳細は以下のリンクをご確認ください。 【参考】:What’s New In Python 3.10 Improved Modules
Python 3.10.1のバージョンアップ内容
Python 3.10.1のバージョンアップ内容ですが、Core and Builtins・Library・Documentation・Tests・Build・Windows・macOS・IDLE・C APIの各項目において、不具合のFixと関連モジュールのバージョン対応やオプション変更等の調整がされています。本質的な機能は3.10.0と同等と判断できます。 【参考】:What’s New In Python 3.10 Python 3.10.1 final
Python 3.10.2のバージョンアップ内容
Python 3.10.2のバージョンアップ内容ですが、トップページにCython使用時にメモリーリークが発生したため前倒しでバグフィックス版をリリースしたと記載されています。長期使用時に問題発生がするため、重要と位置付けられるバージョンアップです。
Core and Builtins・Library・Documentation・Tests・Build・macOS・C APIにおいて、不具合のFixと関連モジュールのバージョン対応やオプション変更等の調整がされていますが、急きょ前倒ししたため変更点は少なめです。今後はリリースを重ねて徐々に安定していくでしょう。 【参考】:What’s New In Python 3.10 Python 3.10.2 final
Pythonのバージョンアップは適宜行いましょう
Pythonはバージョンアップが1〜2カ月に1度のペースで進められており、非常に短サイクルです。不具合の修正も早いですが、利用環境の保全が必要となります。3.7以降は定期的にセキュリティ更新がされており、バグフィックスは3.9以降が対象です。
そのため利用環境に応じて、ライブラリとの整合性を保ちながら適宜バージョンアップを行うことをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから