目次
TodayPython チュートリアル コラムでは Python 3.9 を紹介します。 " >TodayPython チュートリアル コラムでは Python 3.9 を紹介します。
Python 3.9 では、
zoneinfo は python3.9 で新しく導入されたモジュールで、Internet Assigned Numbers Authority (IANA) タイム ゾーン データベースにアクセスできます。 IANA は年に数回データベースを更新しており、タイムゾーン情報の最も信頼できる情報源です。
型ヒントでは組み込みのコレクション型 (list や dict など) は、対応する大文字の型 (List や Dict など) を
Python 3.9 では、トポロジカル ソートを実行する機能を提供する
Python には、2 つの数値の最大公約数 (GCD) を計算する関数が昔からありました:
Python 3.9 の最も優れた機能の 1 つは、日常のプログラミングでは気づかない機能です。パーサーのアップデート。パーサーは、Python インタープリターの基本コンポーネントです。最新バージョンでは、パーサーが再構築されました。

ついにPython 3.9が登場

Nov 19, 2020 pm 05:21 PM

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 つの辞書を結合できますが、|= は辞書の更新に使用されます: <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>

d1|d2

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

|

を使用する利点の 1 つは、辞書のような型で動作し、マージ後に元の型が維持されることです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><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 &lt;lambda&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'}复制代码</pre><div class="contentsignin">ログイン後にコピー</div></div>

|=

関数は、.update と同様に辞書を更新することです: <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>

|=

更新には辞書のようなデータ構造を使用することもできます: <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>2. 文字列のプレフィックスとサフィックスを削除する

Python 3.9 では、

.removeprefix

.removesuffix を使用して文字列の先頭または末尾を削除できます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>

.strip

メソッドも可能だと言う人もいますが、このメソッドは誤って削除してしまいます: <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>ご覧のとおり、明らかに最後の単語 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

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

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

graphlib.TopologicalSorter

クラスを含む新しいモジュール chartlib が追加されています。 <div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">ログイン後にコピー</div></div>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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

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

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

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? 文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? Apr 01, 2025 pm 11:18 PM

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

人気のあるPythonライブラリとその用途は何ですか? 人気のあるPythonライブラリとその用途は何ですか? Mar 21, 2025 pm 06:46 PM

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

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

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

See all articles