ついにPython 3.9が登場
TodayPython チュートリアル コラムでは Python 3.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'}复制代码
>>> pycon.update(europython)>>> pycon{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}复制代码
|) と update(
|=#) という 2 つの新しい辞書演算子が導入されました。 ##)。 |
を使用して 2 つの辞書を結合できますが、|=
は辞書の更新に使用されます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">>>> pycon = {2016: "Portland", 2018: "Cleveland"}>>> europython = {2017: "Rimini", 2018: "Edinburgh", 2019: "Basel"}>>> pycon | europython # 合并{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}>>> pycon |= europython # 更新>>> pycon{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}复制代码</pre><div class="contentsignin">ログイン後にコピー</div></div>
および { ** d1, ** d2}
には同様の機能があります。どちらも辞書のマージと共用体の取得に使用されます。同じキーに遭遇すると、後者が前者を上書きします。
を使用する利点の 1 つは、辞書のような型で動作し、マージ後に元の型が維持されることです。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">>>> from collections import defaultdict>>> europe = defaultdict(lambda: "", {"Norway": "Oslo", "Spain": "Madrid"})>>> africa = defaultdict(lambda: "", {"Egypt": "Cairo", "Zimbabwe": "Harare"})>>> europe | africadefaultdict(<function <lambda> at 0x7f0cb42a6700>,{'Norway': 'Oslo', 'Spain': 'Madrid', 'Egypt': 'Cairo', 'Zimbabwe': 'Harare'})>>> {**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">>>> libraries = {... "collections": "Container datatypes",... "math": "Mathematical functions",... }>>> libraries |= {"zoneinfo": "IANA time zone support"}>>> 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">>>> libraries |= [("graphlib", "Functionality for graph-like structures")]>>> 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">>>> "three cool features in Python".removesuffix(" Python")'three cool features in'>>> "three cool features in Python".removeprefix("three ")'cool features in Python'>>> "three cool features in Python".removeprefix("Something else")'three cool features in Python'复制代码</pre><div class="contentsignin">ログイン後にコピー</div></div>
メソッドも可能だと言う人もいますが、このメソッドは誤って削除してしまいます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">>>> "three cool features in Python".strip(" Python")'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]) -> None:for name in names:print("Hello", 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">>>> dependencies = {... "realpython-reader": {"feedparser", "html2text"},... "feedparser": {"sgmllib3k"},... }...>>> from graphlib import TopologicalSorter>>> ts = TopologicalSorter(dependencies)>>> 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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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