Python 3.5#

以下は、Python 3.5 で最終化/承認された PEP を、MicroPython への影響ごとに分類した一覧です。

構文の拡張

ステータス

PEP 448

追加のアンパッキングの一般化

一部対応

PEP 465

新しい行列乗算演算子

完了

PEP 492

async および await 構文によるコルーチン

完了

ランタイムの拡張と変更

PEP 461

バイナリ文字列の % フォーマット

完了

PEP 475

EINTR で失敗したシステムコールの再試行

完了

PEP 479

ジェネレータ内部での StopIteration の扱いの変更

完了

標準ライブラリの変更

PEP 471

os.scandir()

PEP 485

math.isclose()、近似的な等価性をテストするための関数

完了

その他の変更

PEP 441

Python の zip アプリケーションサポートの改善

PEP 486

Python Launcher を仮想環境に対応させる

関連なし

PEP 484

型ヒント(参考情報のみ)

完了 [1]

PEP 488

PYO ファイルの廃止

関連なし

PEP 489

拡張モジュールの読み込みの再設計

その他の言語の変更点:

namereplace エラーハンドラを追加しました。backslashreplace エラーハンドラはデコードおよび変換でも動作するようになりました。

プロパティのドキュメント文字列が書き込み可能になりました。これは collections.namedtuple() のドキュメント文字列に特に役立ちます

相対インポートを含む循環インポートがサポートされるようになりました。

新しいモジュール:

組み込みモジュールの変更点:

collections

OrderedDict クラスは C で実装されるようになり、4倍から100倍高速になりました。

OrderedDict.items()、OrderedDict.keys()、OrderedDict.values() のビューが reversed() による反復に対応するようになりました。

deque クラスは index(), insert(), copy() を定義するようになり、+ 演算子および * 演算子をサポートします。

namedtuple() が生成するドキュメント文字列を更新できるようになりました。

UserString クラスに __getnewargs__()、__rmod__()、casefold()、format_map()、isprintable()、maketrans() メソッドが実装され、str の対応するメソッドと一致するようになりました。

heapq

merge() における要素の比較は、新しいオプションの key キーワード引数にキー関数を渡すことでカスタマイズできるようになり、また新しいオプションの reverse キーワード引数を使って要素の比較を逆順にできるようになりました

io

新しい BufferedIOBase.readinto1() メソッドが追加されました。これは基盤となる生のストリームの RawIOBase.read() または RawIOBase.readinto() メソッドを最大1回だけ呼び出します

json

JSON デコーダは、エラーに関するより良いコンテキスト情報を提供するため、ValueError の代わりに JSONDecodeError を送出するようになりました。

math

math モジュールに2つの新しい定数 inf と nan が追加されました。

完了

新しい関数 isclose() は、近似的な等価性をテストする手段を提供します。

新しい gcd() 関数が追加されました。fractions.gcd() 関数は非推奨になりました。

os

DirEntry オブジェクトのイテレータを返す新しい scandir() 関数が追加されました。

urandom() 関数は、Linux 3.17 以降では getrandom() システムコールを、OpenBSD 5.6 以降では getentropy() を使用するようになり、/dev/urandom を使う必要がなくなり、ファイルディスクリプタの枯渇による潜在的な失敗を回避できるようになりました。

新しい get_blocking() および set_blocking() 関数により、ファイルディスクリプタのブロッキングモード(O_NONBLOCK)の取得と設定ができるようになりました。

渡された各パス名の最長共通サブパスを返す新しい os.path.commonpath() 関数が追加されました

re

固定長のグループへの参照および条件付き参照が、後方参照アサーション内で許可されるようになりました

正規表現におけるキャプチャグループの数が100個に制限されなくなりました。

sub() および subn() 関数は、マッチしなかったグループを例外を送出する代わりに空文字列で置換するようになりました。

re.error 例外に、エラーに関するより良いコンテキスト情報を提供する新しい属性 msg、pattern、pos、lineno、colno が追加されました

socket

タイムアウトを伴う関数は、システムクロックの代わりに単調増加クロックを使用するようになりました。

新しい socket.sendfile() メソッドにより、UNIX 上で高性能な os.sendfile() 関数を使ってソケット経由でファイルを送信できるようになり、単純な socket.send() を使う場合に比べてアップロードが2倍から3倍高速になります

socket.sendall() メソッドは、バイトを受信または送信するたびにソケットタイムアウトをリセットしなくなりました。ソケットタイムアウトは、すべてのデータを送信するための最大総所要時間となりました。

socket.listen() メソッドの backlog 引数がオプションになりました。デフォルトでは SOMAXCONN または 128 のいずれか小さい方に設定されます。

完了

ssl

メモリ BIO のサポート

アプリケーション層プロトコルネゴシエーションのサポート

実際に使用されているプロトコルバージョンを問い合わせる新しい SSLSocket.version() メソッドが追加されました。

SSLSocket クラスに SSLSocket.sendfile() メソッドが実装されました。

SSLSocket.send() メソッドは、非ブロッキングソケットで操作がブロックされる場合に、ssl.SSLWantReadError または ssl.SSLWantWriteError 例外を送出するようになりました。以前は 0 を返していました。

cert_time_to_seconds() 関数は、RFC 5280 に従い、入力時刻をローカル時刻ではなく UTC として解釈するようになりました。さらに、戻り値は常に int になりました。

新しい SSLObject.shared_ciphers() および SSLSocket.shared_ciphers() メソッドは、ハンドシェイク中にクライアントが送信した暗号のリストを返します。

SSLSocket クラスの SSLSocket.do_handshake()、SSLSocket.read()、SSLSocket.shutdown()、SSLSocket.write() メソッドは、バイトを受信または送信するたびにソケットタイムアウトをリセットしなくなりました。

match_hostname() 関数が IP アドレスのマッチングをサポートするようになりました。

sys

新しい set_coroutine_wrapper() 関数により、async def 関数によってコルーチンオブジェクトが作成されるたびに呼び出されるグローバルフックを設定できるようになりました。対応する get_coroutine_wrapper() を使って、現在設定されているラッパーを取得できます。

新しい is_finalizing() 関数を使って、Python インタプリタがシャットダウン中かどうかを確認できます。

time

monotonic() 関数が常に利用できるようになりました

注記