SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Pythonの新機能を知ろう!

Python 3.13の新機能、対話型インタプリタの機能強化や高速化などを解説

Pythonの新機能を知ろう! 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

モバイルプラットフォームのサポート[3.13]

 Python 3.13では、iOSとAndroid OSという二大モバイルプラットフォームがサポートの対象となりました。

 iOSでは、arm64-apple-ios、arm64-apple-ios-simulatorという2つのターゲットがティア3でサポートされます。これは、2013年以降のiPhone/iPadといったネイティブ実行環境と、そのエミュレータ(Appleシリコン搭載ハードウェア)が相当します。古い、x86_64-apple-ios-simulator(Intelチップ搭載ハードウェア)はティア3におけるサポートではなく、Best Effort(最大限の努力)になるとされています。

 なお、ティアとはPEP11で規定されるプラットフォームのサポート階層です。ティア1~ティア3があり、最も基本となるのがティア1です。macOS、Windows、Linuxといったベーシックなプラットフォームが含まれます。ティアごとに求められるサポート要件が異なっており、それを満たさないプラットフォームは上位のティアに昇格できません。

 Android OSでは、aarch64-linux-android、x86_64-linux-androidという2つのターゲットがティア3でサポートされます。これは、AppleシリコンとIntelチップの64ビット環境が相当します。32ビット環境であるarm-linux-androideabi、i686-linux-androidはティア3におけるサポートではなく、Best Effort(最大限の努力)になるとされています。

 この他、モバイルプラットフォームではありませんが、WebAssemblyの動作基盤の規格であるWASI(WebAssembly System Interface)もティア2でサポートされます。

ティアのサポート要件

 ティアごとのサポート要件は、以下のようになっています。

 ティア1は、コア開発者の全員がリリースを持つ最も優先度が高いプラットフォームです。macOS(x86_64、aarch64)、Windows(x86_64)、Linux(x86_64)がここに設定されています。ティア2は、コア開発者の2名以上がサポートするプラットフォーム、ティア3は、コア開発者の1名以上がサポートするプラットフォームです。

 ティア1とティア2では、ビルドが失敗した場合にはリリースそのものが中止されます。ティア3ではビルドが失敗してもリリースは中止されません。

その他の変更[3.13]

 最後に、その他の変更としていくつかの改良点を紹介します。

ドキュメント文字列のインデント除去

 Pythonにおける文字列の表現方法として、シングルクォート(')、ダブルクォート(")が一般的に使われますが、トリプルクォート("""、''')は改行などを含む文字列を表現したいときに使われます。このトリプルクォート文字列の性質を生かして、Pythonではドキュメント文字列(docstring)という、ソースコードに簡易的なドキュメントを埋め込む機能を利用できます。

 ドキュメント文字列は、改行や空白文字をそのまま保持するので、関数やメソッドの内部に記述してもインデントが不要です。しかしながら、見た目の観点からは適切なインデントが望ましいのですが、インデントするとそれがそのまま見えてしまうという問題がありました。そこで、Python 3.13ではコンパイル時にドキュメント文字列からインデントレベルの共通部分を削除し、余計な空白が出力されないようになりました。

 以下のリストのコードは、Python 3.12では行頭に空白を伴いますが、Python 3.13では空白が除去されてすっきり出力されます。

リスト docstring.py
def func():
    """
        これは、先頭に空白を含んだdocstringです。

        複数の段落に渡ってもOKです。
    """

print(func.__doc__)
ドキュメント文字列のインデント除去
ドキュメント文字列のインデント除去

locals関数の挙動の統一

 実装ごとに異なっていたlocals関数の挙動が、Python 3.13で標準化されました。locals関数は、呼び出されたスコープにおけるローカル変数、ローカルオブジェクトを辞書形式で取得します。現在のスコープで有効な変数を取得できるので、デバッグなどの開発者用途で有用な関数です。辞書形式なので、名前で値を参照できます。

>>> def func():
...     a = 1
...     b = 2
...     c = 3
...     local = locals()
...     print(local)
...     print(local['c'])
...     
>>> func()
{'a': 1, 'b': 2, 'c': 3}
3

 locals関数の挙動の差異は、主に辞書の書き換えがおおもとのローカル変数に反映されるかという点に表れます。初期のlocals関数の戻り値は、それを書き換えることで変更を変数に反映できましたが、その後にさまざまなスコープが登場するにつれ、スコープごとの挙動に一貫性がない状況になりました。

 Python 3.13では、最適化されたスコープ(関数、ジェネレータ、コルーチン、内包表記およびジェネレータ式)においてはlocals関数は変数のスナップショットを返すものとして、スナップショットの変更がおおもとの変数に影響しないというように取り決められました。

 なお、最適化されたスコープとは、コンパイル時にコンパイラがターゲットのローカル変数名を確実に認識できて、これらへの読み取りおよび書き込みを最適化できるスコープのことを言います。

まとめ

 今回は、対話型インタプリタの機能強化や高速化といった実行環境の改良、エラーメッセージの改良や新しい型関連機能、そしてモバイルプラットフォームのサポートを中心に紹介しました。Pythonでは、こういった魅力的な機能強化や改良が各バージョンで施されています。より高速で使い勝手のよい言語として成長し続けるPythonを、今後も追っていきたいものです。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Pythonの新機能を知ろう!連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 山内 直(WINGSプロジェクト ヤマウチ ナオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。出版社を経てフリーランスとして独立。ライター、エディター、デベロッパー、講師業に従事。屋号は「たまデジ。」。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20443 2024/11/15 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング