このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

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 ランチャーを仮想環境に対応させる

関係なし

PEP 484

型ヒント(勧告のみ)

完了 [1]

PEP 488

PYO ファイルの廃止

関係なし

PEP 489

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

その他の言語の変更:

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

プロパティの docstring が書き込み可能になりました。これは特に collections.namedtuple() の docstring に便利です

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

新しいモジュール:

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

collections

OrderedDict クラスが C で実装され、4〜100 倍高速になりました。

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

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

namedtuple() が生成する docstring を更新できるようになりました。

UserString クラスが、str の対応するメソッドに合わせて __getnewargs__() 、 __rmod__() 、 casefold() 、 format_map() 、 isprintable() 、 maketrans() の各メソッドを実装するようになりました。

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() 関数が常に利用できるようになりました

注記