検索

TodayPython チュートリアル コラムでは Python 3.9 を紹介します。

ついにPython 3.9が登場

#Python 3.9 が登場しました!

過去 1 年間、世界中の開発者が Python 3.8 の改良に取り組んできました。 Python 3.9 ベータ版はしばらく前から存在しており、最初の正式バージョンは 2020 年 10 月 5 日にリリースされました。

Python のすべてのバージョンには、新しく開発および改良された機能が含まれており、Python 3.9 も例外ではありません。

Python 3.9,来了

[Python 学習交流グループ]

以下では、Python 3.9 のいくつかの主要な新機能を紹介します。

1. Dictionary (Merge & Update) Operator

Dictionary は Python の最も基本的なデータ構造の 1 つであり、Python のバージョンを繰り返すことでパフォーマンスが継続的に最適化されます。

Python3.9 では、マージ (

|) および更新 (|=) 演算子が dict クラスに追加されました。これらの更新により、既存の dict.update メソッドと {**d1,**d2} メソッドが完了します。

辞書を結合する従来の方法:

>>> pycon = {2016: "Portland", 2018: "Cleveland"} # 字典1>>> europython = {2017: "Rimini", 2018: "Edinburgh", 2019: "Basel"} # 字典2# 方法一>>> {**pycon, **europython}{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}#方法二>>> merged = pycon.copy>>> for key, value in europython.items:... merged[key] = value...>>> merged{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}复制代码
どちらの方法でも、元のデータを変更せずに辞書を結合します。辞書 1 の「Cleveland」が、結合された辞書 2 の「Edinburgh」によって上書きされていることに注意してください。

辞書 1 を更新することもできます:

>>> pycon.update(europython)>>> pycon{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}复制代码
新しいバージョンの Python では、merge(

|) と update( |=#) という 2 つの新しい辞書演算子が導入されました。 ##)。 | を使用して 2 つの辞書を結合できますが、|= は辞書の更新に使用されます: <pre class="brush:php;toolbar:false">&gt;&gt;&gt; pycon = {2016: &quot;Portland&quot;, 2018: &quot;Cleveland&quot;}&gt;&gt;&gt; europython = {2017: &quot;Rimini&quot;, 2018: &quot;Edinburgh&quot;, 2019: &quot;Basel&quot;}&gt;&gt;&gt; pycon | europython # 合并{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}&gt;&gt;&gt; pycon |= europython # 更新&gt;&gt;&gt; pycon{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}复制代码</pre>

d1|d2

および { ** d1, ** d2} には同様の機能があります。どちらも辞書のマージと共用体の取得に使用されます。同じキーに遭遇すると、後者が前者を上書きします。

|

を使用する利点の 1 つは、辞書のような型で動作し、マージ後に元の型が維持されることです。 <pre class="brush:php;toolbar:false">&gt;&gt;&gt; from collections import defaultdict&gt;&gt;&gt; europe = defaultdict(lambda: &quot;&quot;, {&quot;Norway&quot;: &quot;Oslo&quot;, &quot;Spain&quot;: &quot;Madrid&quot;})&gt;&gt;&gt; africa = defaultdict(lambda: &quot;&quot;, {&quot;Egypt&quot;: &quot;Cairo&quot;, &quot;Zimbabwe&quot;: &quot;Harare&quot;})&gt;&gt;&gt; europe | africadefaultdict(&lt;function&gt; at 0x7f0cb42a6700&gt;,{'Norway': 'Oslo', 'Spain': 'Madrid', 'Egypt': 'Cairo', 'Zimbabwe': 'Harare'})&gt;&gt;&gt; {**europe, **africa}{'Norway': 'Oslo', 'Spain': 'Madrid', 'Egypt': 'Cairo', 'Zimbabwe': 'Harare'}复制代码&lt;/function&gt;</pre>

|=

関数は、.update と同様に辞書を更新することです: <pre class="brush:php;toolbar:false">&gt;&gt;&gt; libraries = {... &quot;collections&quot;: &quot;Container datatypes&quot;,... &quot;math&quot;: &quot;Mathematical functions&quot;,... }&gt;&gt;&gt; libraries |= {&quot;zoneinfo&quot;: &quot;IANA time zone support&quot;}&gt;&gt;&gt; libraries{'collections': 'Container datatypes', 'math': 'Mathematical functions','zoneinfo': 'IANA time zone support'}复制代码</pre>

|=

更新には辞書のようなデータ構造を使用することもできます: <pre class="brush:php;toolbar:false">&gt;&gt;&gt; libraries |= [(&quot;graphlib&quot;, &quot;Functionality for graph-like structures&quot;)]&gt;&gt;&gt; libraries{'collections': 'Container datatypes', 'math': 'Mathematical functions','zoneinfo': 'IANA time zone support','graphlib': 'Functionality for graph-like structures'}复制代码</pre>2. 文字列のプレフィックスとサフィックスを削除する

Python 3.9 では、

.removeprefix

.removesuffix を使用して文字列の先頭または末尾を削除できます。 <pre class="brush:php;toolbar:false">&gt;&gt;&gt; &quot;three cool features in Python&quot;.removesuffix(&quot; Python&quot;)'three cool features in'&gt;&gt;&gt; &quot;three cool features in Python&quot;.removeprefix(&quot;three &quot;)'cool features in Python'&gt;&gt;&gt; &quot;three cool features in Python&quot;.removeprefix(&quot;Something else&quot;)'three cool features in Python'复制代码</pre>

.strip

メソッドも可能だと言う人もいますが、このメソッドは誤って削除してしまいます: <pre class="brush:php;toolbar:false">&gt;&gt;&gt; &quot;three cool features in Python&quot;.strip(&quot; Python&quot;)'ree cool features i'复制代码</pre>ご覧のとおり、明らかに最後の単語 python を削除したいのですが、先頭の の一部も削除されています - Th.

したがって、

.removeprefix

.removesuffix の方が正確である可能性があります。 3.zoneinfo タイム ゾーン モジュール

zoneinfo は python3.9 で新しく導入されたモジュールで、Internet Assigned Numbers Authority (IANA) タイム ゾーン データベースにアクセスできます。 IANA は年に数回データベースを更新しており、タイムゾーン情報の最も信頼できる情報源です。

zoneinfo を使用すると、データベース内の任意のタイム ゾーンを記述するオブジェクトを取得できます:

>>> from zoneinfo import ZoneInfo>>> ZoneInfo("America/Vancouver")zoneinfo.ZoneInfo(key='America/Vancouver')

>>> from zoneinfo import ZoneInfo>>> from datetime import datetime, timedelta>>> # 夏令时>>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))>>> print(dt)2020-10-31 12:00:00-07:00>>> dt.tzname'PDT'>>> # 标准时间>>> dt += timedelta(days=7)>>> print(dt)2020-11-07 12:00:00-08:00>>> print(dt.tzname)PST复制代码

4. 組み込みのコレクション型は型ヒントで使用されます

型ヒントでは組み込みのコレクション型 (list や dict など) は、対応する大文字の型 (List や Dict など) を

typing

からインポートすることなく、ジェネリック型として使用できるようになりました。 <pre class="brush:php;toolbar:false">def greet_all(names: list[str]) -&gt; None:for name in names:print(&quot;Hello&quot;, name)复制代码</pre>5. トポロジカル ソート

Python 3.9 では、トポロジカル ソートを実行する機能を提供する

graphlib.TopologicalSorter

クラスを含む新しいモジュール chartlib が追加されています。 <pre class="brush:php;toolbar:false">&gt;&gt;&gt; dependencies = {... &quot;realpython-reader&quot;: {&quot;feedparser&quot;, &quot;html2text&quot;},... &quot;feedparser&quot;: {&quot;sgmllib3k&quot;},... }...&gt;&gt;&gt; from graphlib import TopologicalSorter&gt;&gt;&gt; ts = TopologicalSorter(dependencies)&gt;&gt;&gt; list(ts.static_order)['html2text', 'sgmllib3k', 'feedparser', 'realpython-reader']复制代码</pre>6. 最小公倍数 (LCM)

Python には、2 つの数値の最大公約数 (GCD) を計算する関数が昔からありました:

>>> import math>>> math.gcd(49, 14)7复制代码

最小公倍数(LCM) は最大公約数 (GCD) に関連しています。LCM は GCD に従って定義できます:

>>> def lcm(num1, num2):... if num1 == num2 == 0:... return 0... return num1 * num2 // math.gcd(num1, num2)...>>> lcm(49, 14)98复制代码

Python 3.9 では、独自の LCM 関数を定義する必要はなくなりました。計算する関数が追加されました。最小公倍数:

>>> import math>>> math.lcm(49, 14)98复制代码

7. より強力な Python パーサー

Python 3.9 の最も優れた機能の 1 つは、日常のプログラミングでは気づかない機能です。パーサーのアップデート。パーサーは、Python インタープリターの基本コンポーネントです。最新バージョンでは、パーサーが再構築されました。

Python は以前、LL(1) パーサーを使用してソース コードを解析ツリーに解析していました。 LL(1) パーサーは、一度に 1 文字を読み取り、バックトラックせずにソース コードを解釈するパーサーと考えることができます。

新しいインタープリタは、LL(1) ではなく、PEG (解析式文法) に基づいて実装されています。新しいパーサーのパフォーマンスは古いパーサーと同等であり、新しい言語機能を設計する場合、PEG は LL(1) よりも柔軟です。

標準ライブラリ全体の中で、PEG パーサーはわずかに高速ですが、より多くのメモリを使用します。実際、新しいパーサーを使用した場合のパフォーマンスがどの程度良いか悪いかを判断するのは困難です。

関連する無料学習の推奨事項:

Python チュートリアル(ビデオ)

以上がついにPython 3.9が登場の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はjuejinで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Apr 02, 2025 am 07:12 AM

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい