Python3.8の新機能の秘密

強力な新しい割り当て構文から下部の大きな変更まで、Python3.8はより最新のPythonに移行します。

Python 3.8はPython言語の最新バージョンであり、スクリプト作成、自動化、およびマシン学習やWeb開発などのさまざまなタスクに適しています。現在、Python 3.8は公式のベータ段階に入っています。このバージョンでは、多くの構文変更、メモリ共有、より効率的なシリアル化と逆シリアル化、改善された辞書、およびより多くの新機能が提供されます。

Python 3.8では、多くのパフォーマンスの改善も導入されました。一般的に、私たちはより速く、より正確で、より一貫性があり、より現代的なPythonを手に入れようとしています。 Python3.8の新機能と最も重要な変更点は次のとおりです。

1、 割り当て式

Python 3.8での最も明らかな変更は、割り当て式である:=演算子です。割り当て式は、変数が存在しない場合でも、変数に値を割り当てることができます。式で使用でき、個別のステートメントとして表示する必要はありません。

while(line := file.readline())!="end":print(chunk)

上記の例では、可変行が存在しない場合は作成され、file.readline()の戻り値が割り当てられます。次に、行が「終了」しているかどうかを確認します。そうでない場合は、次の行を読み、その行に保存して、テストを続行します。

割り当て式は、リスト内包表記と同じように、Pythonのシンプルさの伝統に従います。目的は、特定のPythonプログラミングパターンでの退屈な定型コードを回避することです。たとえば、上記のコードは、一般的な記述でさらに2行のコードを記述する必要があります。

2、 位置のみで指定されたパラメータ

位置のみで指定されたパラメーターは、関数定義の新しい構文です。これにより、プログラマーはパラメーターを位置のみで指定するように強制できます。これにより、Python関数定義で、どのパラメーターが位置パラメーターであり、どのパラメーターがキーワードパラメーターであるかというあいまいさを解決できます。

位置によってのみ指定されたパラメーターは、次の状況で使用できます。関数は任意のキーワードパラメーターを受け入れますが、1つ以上の不明なパラメーターを受け入れることもできます。これは通常、Pythonの組み込み関数の場合であるため、プログラマーがそうすることを許可すると、Python言語の一貫性を高めることができます。

Pythonのドキュメントに記載されている例は次のとおりです。

def pow(x, y, z=None,/):
 r = x**y
 if z is not None:
  r %= z
 return r

記号/は、位置パラメーターとキーワードパラメーターを区切ります。この例では、すべてのパラメーターは不明なパラメーターです。以前のバージョンのPythonでは、zはキーワード引数と見なされていました。ただし、上記の関数定義を使用すると、pow(2、10)とpow(2、10、5)はどちらも正しい呼び出しメソッドであり、pow(2、10、z = 5)は正しくありません。

3、 f文字列のデバッグをサポート

f文字列形式を使用すると、同じ式で出力テキストと値または変数を簡単に計算でき、より効率的です。

x =3print(f'{x+1}')

出力4。

いいえ= f文字列式の最後に追加すると、f式自体の値が出力され、その後に計算値が続きます。

x =3print(f'{x+1=}')

出力はx + 1 = 4です。

4、 マルチプロセス共有メモリ

Python 3.8では、マルチプロセッシングモジュールがSharedMemoryクラスを提供します。これにより、異なるPythonプロセス間で共有メモリ領域を作成できます。

古いバージョンのPythonでは、プロセス間でデータを共有するには、ファイルを書き込むか、ネットワークソケットを介して送信するか、Pythonのpickleモジュールを使用してシリアル化する必要があります。共有メモリは、プロセス間でデータを転送するためのより高速な方法を提供し、Pythonのマルチプロセッサおよびマルチコアプログラミングをより効率的にします。

共有メモリセグメントは、純粋なバイト領域として、または数値タイプ、文字列、バイトオブジェクト、Noneオブジェクトなどの少数のPythonオブジェクトを格納できる変更不可能なリストのようなオブジェクトとして割り当てることができます。

5、 入力モジュールの改善

Pythonは動的に型指定された言語ですが、サードパーティのツールがPythonコードを検証できるように、型付けモジュールを介して型のヒントを追加できます。 Python 3.8は入力にいくつかの新しい要素を追加するため、より堅牢なチェックをサポートできます。

6、 ピクルスプロトコルの新しいバージョン

Pythonのpickleモジュールは、Pythonデータ構造またはインスタンスをシリアル化および逆シリアル化する方法を提供し、後で読むために辞書をそのまま保存できます。異なるバージョンのPythonは異なるピクルスプロトコルをサポートし、最新バージョンはより広く、より強力で、より効率的なシリアル化をサポートします。

Python 3.8によって導入されたpickleプロトコルの5番目のバージョンは、新しい方法でオブジェクトをpickleすることができます。これは、bytes、memoryviews、NumpyarrayなどのPythonのバッファープロトコルをサポートできます。新しいピクルスは、これらのオブジェクトをピクルス化するときに多くのメモリコピー操作を回避します。

NumPyやApacheArrowなどの外部ライブラリは、Pythonバインディングで新しいpickleプロトコルをサポートしています。新しいピクルスは、Python 3.6および3.7のプラグインとしても使用でき、PyPIからインストールできます。

7、 リバーシブル辞書

この辞書は、PyPyプロジェクトによって提供された新しい実装を使用して、Python3.6で書き直されました。現在の辞書は、より高速でコンパクトであることに加えて、要素の順序を継承します。要素は、リストのように、追加された順序で配置されます。 Python 3.8では、辞書でreversed()も使用できます。

8、 パフォーマンスの向上

9、 Python CAPIおよびCPythonの実装

最新バージョンのPythonは、CPython(Cで記述されたPythonのリファレンス実装)で使用されるCAPIのリファクタリングに多大な労力を費やしています。これまでのところ、これらの作品はまだ追加されており、既存の結果は次のとおりです。

Recommended Posts

Python3.8の新機能の秘密
Python3.10のいくつかの新機能
Python3.9の7つの機能
まず、Ubuntu17.10の新機能を見てください
Pythonの基盤を統合する(4)
Python(7)の基盤を統合する
Python(6)の基盤を統合する
Python(5)の基盤を統合する
Pythonの基盤を統合する(3)
pythonでのwheelの使用法
Pythonは中国語の4つの車輪を処理します
地主取引のPythonシミュレーション
Pythonの用途は何ですか
Zabbix 5.0LTSの新機能のリスト
Python文字列プーリングの前提
Pythonの父がMicrosoftに加わる
python accesshdfsの操作
pythonでのタプルの使用法
pythonを実行するメソッドを終了します
Pythonはスタックの構造を実装できますか?
pythonインタラクティブモードの基本を学ぶ
pythonの必須パラメーターは何ですか
pythonの下部にあるロジスティック回帰
Python3クローラーでのAjaxの使用
PythonはTowerofHanoiゲームを解決します
pythonの複数のバージョンの競合を解決します
python変数の範囲は何ですか
Pythonは分数シーケンスの合計を実装します
Pythonの基礎を学ぶ2日間
pythonのid関数は何ですか
Python言語の本質:Itertoolsライブラリ
pythonインスタンス化オブジェクトの特定のメソッド
python3はマスク描画の機能を実現します
python開発の見通しは何ですか
pythonの関数本体は何ですか
pythonインポートライブラリの特定の方法
pythonの複数のバージョンの競合を解決します
2.1 Pythonインタープリター(pythonインタープリター)
pythonでのadbの機能は何ですか
Python super()メソッドの原理の詳細な説明
javaとpythonの構文の違い
Pythonは学生管理システムの開発を実現します
PythonはDoudizhuでカードのシャッフルを実装します
pythonでのリストの意味と使用法
起動エラーを実行しているpythonの問題を解決します
python辞書の値を変更できますか?
Pythonはスネークゲームのソースコードを実装しています
Pythondecimalモジュールの使用法の詳細な説明
27歳でパイソンを学ぶのはどうですか?
ubuntuでpythonをアンインストールした結果、非常に
Pythonは釣りマスターのゲーム実装を書きます
[898] pythonは2つのリストの共通部分を取得します|ユニオン|違い
Python関数パラメータ分類の原理の詳細な説明
エンタープライズ言語に対するpythonの利点は何ですか
Python2とPython3の違いの簡単な要約
Pythonタイマースレッドプールの原理の詳細な説明
pythonのコンパイルとsslのインストールの問題を解決します
Pythonインターフェース開発の実装手順の詳細な説明
Pythonはスキンのフルセットをクロールします
Pythonでのパッケージの導入を理解する方法
Python構文の基本