Python3.9の注目すべき更新ポイント

Pythonは更新を続けています。

2020 2009年8月19日、Pythonはbate 3.9.0rc1の最新バージョンをリリースしました。これは、リリースの準備ができている新しいバージョンです。事前に見てみましょう〜

新機能

辞書のマージ方法を追加

再びエレガント。バージョン3.8より前は、辞書のマージには zip()または他のメソッドを使用する必要がありましたが、今では |を使用するだけで、期待をすばやく完了できます。2つの辞書が同じキーを持っている場合、対応するの値は最後の割り当てです。

>>> d ={'spam':1,'eggs':2,'cheese':3}>>> e ={'cheese':'cheddar','aardvark':'Ethel'}>>> d | e
{' spam':1,'eggs':2,'cheese':'cheddar','aardvark':'Ethel'}>>> e | d
{' aardvark':'Ethel','spam':1,'eggs':2,'cheese':3}

辞書を直接更新するには、 | =を使用します

>>> d |= e
>>> d
{' spam':1,'eggs':2,'cheese':'cheddar','aardvark':'Ethel'}

ロジックには[ポイントは前号と同様](https://mp.weixin.qq.com/s?__biz=MzUzMTEwODk0Ng==&mid=2247492090&idx=1&sn=939f298867f0843f5fb12891aaeda1c2&chksm=fa4524c7cd32add1ec53409f6f94e47dcf95a8b7dd694ac915137d25e0e60291550020ba52ca&token=1997452966&lang=zh_CN&scene=21#wechat_redirect)マジックメソッド + =で言ったこと、つまり a + = b a = a + bと同等です。

文字列操作用の新しい組み込み関数

removeprefix()およびremovesuffix():更新は大規模ですが、これの利点は次のとおりです。

いくつかの事例を引用するには:

# Current
if funcname.startswith("context."):
 self.funcname = funcname.replace("context.","")
 self.contextfunc = True
else:
 self.funcname = funcname
 self.contextfunc = False

# Improved
if funcname.startswith("context."):
 self.funcname = funcname.removeprefix("context.")
 self.contextfunc = True
else:
 self.funcname = funcname
 self.contextfunc = False

もう一つの例:

# Current
if name.endswith(('Mixin','Tests')):return name[:-5]
elif name.endswith('Test'):return name[:-4]else:return name

# Improved
return(name.removesuffix('Mixin').removesuffix('Tests').removesuffix('Test'))

上記は、正と逆の文字列配置では、文字列スライスを使用せずに既知の文字列コンテンツの一部が削除されるため、直接理解できます。

ヒントを入力

現在、3.5に基づいて、pythonエディターは指定にすばやく応答し、私たちの意図を理解することができます。

上の図では、 sum_dict関数のパラメーターを辞書タイプとして定義し、戻り値を intタイプとして定義しています。タイプは、テストの定義でも指定されます。

タイムゾーンオブジェクト

zoneinfoモジュールは、タイムゾーンオブジェクトの入力を最適化するために使用される IANAタイムゾーンデータベースから対応する情報を取得するのに役立ちます。これは単に次のように使用されます。

>>> print(datetime(2020,2,22,12,0).astimezone())2020-02-2212:00:00-05:00>>>print(datetime(2020,2,22,12,0).astimezone()....strftime("%Y-%m-%d %H:%M:%S %Z"))2020-02-2212:00:00 EST
>>> print(datetime(2020,2,22,12,0).astimezone(timezone.utc))2020-02-2217:00:00+00:00

新しいパーサー

Pythonは現在、主にLL(1)に基づく文法を使用しており、この文法はLL(1)パーサーで解析できます。パーサーはコードを上から下、左から右に、字句からのみ解析します。トークンをアナライザーから取り出して、正しく解析することができます。

これが最大の変更点になるはずですが、最下層の動作原理がわからないので、ここに公式概要を掲載します。詳細は原文をご確認ください。

This PEP proposes replacing the current LL(1)-based parser of CPython with a new PEG-based parser. This new parser would allow the elimination of multiple "hacks" that exist in the current grammar to circumvent the LL(1)-limitation. It would substantially reduce the maintenance costs in some areas related to the compiling pipeline such as the grammar, the parser and the AST generation. The new PEG parser will also lift the LL(1) restriction on the current Python grammar.

更新ログには、いくつかの言語機能の変更、モジュールの削除、非推奨、およびAPIの変更も記載されています。興味のある方は、公式の更新ログで次のことを確認できます。

https://docs.python.org/3.9/whatsnew/changelog.html#changelog

Python3.9バージョンが近づいています。Python3アルバムをクリックすると、詳細が表示されます。次の号でお会いしましょう。


参照

Python 3.9 beta2バージョンがリリースされました。これらの7つの新しいPEPは何ですか?

Python 3.9の公式バージョンが近づいていますが、私はまだ3.6に向かっています!

What’s New In Python 3.9

https://docs.python.org/3.9/whatsnew/3.9.html#what-s-new-in-python-3-9

Recommended Posts

Python3.9の注目すべき更新ポイント
pythonの関数
Pythonの知識ポイント
pythonでのシェル実行の知識ポイント
03.Pythonエントリの演算子
Python3補足知識ポイント
Pythonの高度な知識ポイント
Pythonの結合関数
12.Python3でのネットワークプログラミング
pythonでステートメントを印刷する
Pythonデータ分析-データ更新
Pythonでの同時リクエスト
Ubuntuにpythonをインストールする
Pythonでのコンテキスト管理
pythonの算術演算子
pythonでguiを書く
PythonでのMongoDBの使用
PythonのStr文字列
Pythonでの計算ジオメトリ
Pythonでの同時リクエスト(パート2)
Pythonのタプルの添え字
Pythonでの継承について話す
2020--Python文法の一般的な知識のポイント
Pythonアプリケーションを3分でコンテナ化
pythonはパッケージをどのように更新しますか
pythonのイントロスペクションとは何ですか
pythonのオブジェクト指向とは何ですか
Pythonのジェネレーターとイテレーター
gccをcentosで6.4.0に更新します
Pythonで文字列について話す
Pythonはどのように更新値を一覧表示しますか
Python開発でのパンダの使用
pythonでnohupコマンド命令を使用する
pythonのリスト内包表記とは何ですか
pythonに関数のオーバーロードはありますか
PythonでNumpyを使い始める
詳細な並べ替えアルゴリズム(Pythonで実装)
pythonコードでラップする方法
Pythonでのrc1の意味
Pythonクローラーの基本的な知識ポイントの仕上げ
Python開発でのnumpyの使用
pythonのdefは何をしますか
Pythonで括弧を省略する方法
Pythonでの辞書の詳細な使用法
pythonでのosパッケージの使用
Pythonでのガベージコレクションについて学ぶ
pythonでクラスを書く方法
pythonで数値をフィルタリングする方法
Pythonの数字は何ですか?
PythonでExcelを読む方法
Pythonにはいくつかのキーワードがあります
Pythonのすべてがオブジェクトです
pythonでエラーを表示する方法
npはpythonで何をしますか
pythonでreturnを書く方法
Pythonのモジュールについて話す
Pythonで変数を理解する方法
pythonで変数をクリアする方法
pythonでのタプルの使用法
PythonでSQLiteを使用する方法
pythonmysqlのパラメータ化の説明