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

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

Python 3.6

Python 3.6 beta 1 は 2016年9月12日にリリースされました。新機能の概要はこちらにあります:

新しい構文機能

状態

PEP 498

リテラル文字列の書式化

完了

PEP 515

数値リテラル中のアンダースコア

完了

PEP 525

非同期ジェネレータ

PEP 526

変数アノテーションの構文(暫定)

完了

PEP 530

非同期内包表記

新しい組み込み機能

PEP 468

関数における kwargs の順序の保持

PEP 487

クラス生成のより簡単なカスタマイズ

部分的 [1]

PEP 520

クラス属性の定義順の保持

標準ライブラリの変更

PEP 495

ローカル時刻の曖昧性の解消

PEP 506

標準ライブラリへの secrets モジュールの追加

PEP 519

ファイルシステムパスのプロトコルの追加

CPython の内部

PEP 509

dict へのプライベートなバージョンの追加

対応しない

PEP 523

CPython へのフレーム評価 API の追加

Linux/Windows の変更

PEP 524

Linux で(システム起動中に) os.urandom() をブロックするようにする

PEP 528

Windows のコンソールのエンコーディングを UTF-8 に変更

PEP 529

Windows のファイルシステムのエンコーディングを UTF-8 に変更

その他の言語の変更:

global 文と nonlocal 文は、同じスコープ内で対象の名前が最初に使われる位置より前に、テキスト上で現れなければならなくなりました。以前はこれは SyntaxWarning でした。

特殊メソッドに None を設定して、対応する操作が利用できないことを示せるようになりました。たとえば、あるクラスが __iter__() に None を設定すると、そのクラスは反復可能ではなくなります。

同じトレースバックの行が長く繰り返される場合、 [Previous line repeated {count} more times] と省略されるようになりました

import は、モジュールが見つからないときに新しい例外 ModuleNotFoundError を発生させるようになりました。現在 (try-except で) ImportError を確認しているコードは、引き続き動作します。

引数なしの super() に依存するクラスメソッドが、クラス生成中にメタクラスのメソッドから呼ばれても正しく動作するようになりました。

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

array

array.array の使い切ったイテレータは、反復対象の配列が拡張されても、使い切ったままになります。

binascii

b2a_base64() 関数が、戻り値に改行文字を付けるかどうかを制御する省略可能な newline キーワード引数を受け付けるようになりました

完了

cmath

新しい cmath.tau (τ) 定数が追加されました

新しい定数: math.inf と math.nan に対応する cmath.inf と cmath.nan 、および complex の repr で使われる形式に合わせた cmath.infj と cmath.nanj 。

collections

サイズを持つ反復可能なコンテナクラスを表す、新しい Collection 抽象基底クラスが追加されました

新しい Reversible 抽象基底クラスは、 __reversed__() メソッドも提供する反復可能なクラスを表します。

新しい AsyncGenerator 抽象基底クラスは、非同期ジェネレータを表します。

namedtuple() 関数が省略可能なキーワード引数 module を受け付けるようになりました。これを指定すると、返される名前付きタプルクラスの __module__ 属性に使われます。

namedtuple() の verbose と rename 引数はキーワード専用になりました。

再帰的な collections.deque のインスタンスを pickle 化できるようになりました。

hashlib

BLAKE2 ハッシュ関数がモジュールに追加されました。 blake2b() と blake2s() は常に利用でき、BLAKE2 の全機能をサポートします。

SHA-3 ハッシュ関数 sha3_224() 、 sha3_256() 、 sha3_384() 、 sha3_512() 、および SHAKE ハッシュ関数 shake_128() と shake_256() が追加されました。

パスワードベースの鍵導出関数 scrypt() が、OpenSSL 1.1.0 以降で利用できるようになりました。

json

json.load() と json.loads() がバイナリ入力をサポートするようになりました。エンコードされた JSON は UTF-8、UTF-16、UTF-32 のいずれかで表現されている必要があります。

math

新しい math.tau (τ) 定数が追加されました

完了

os

新しい close() メソッドにより、 scandir() のイテレータを明示的に閉じられます。 scandir() のイテレータはコンテキストマネージャプロトコルをサポートするようになりました。

Linux では、安全性を高めるため、 os.urandom() はシステムの urandom エントロピープールが初期化されるまでブロックするようになりました。

Linux の getrandom() システムコール(ランダムなバイト列を取得)が、新しい os.getrandom() 関数として公開されました。

re

正規表現で修飾子のスパンがサポートされました。例: '(?i:p)ython' は 'python' と 'Python' にマッチしますが 'PYTHON' にはマッチしません。 '(?i)g(?-i:v)r' は 'GvR' と 'gvr' にマッチしますが 'GVR' にはマッチしません。

マッチオブジェクトのグループに __getitem__ でアクセスできるようになりました。これは group() と等価です。つまり mo['name'] は mo.group('name') と等価です。

マッチオブジェクトが、グループのインデックスとしてインデックス風のオブジェクトをサポートするようになりました。

socket

ioctl() 関数が SIO_LOOPBACK_FAST_PATH 制御コードをサポートするようになりました。

getsockopt() の定数 SO_DOMAIN 、 SO_PROTOCOL 、 SO_PEERSEC 、 SO_PASSSEC がサポートされるようになりました。

setsockopt() が setsockopt(level, optname, None, optlen: int) の形式をサポートするようになりました。

socket モジュールが、Linux カーネルの crypto API とやり取りするためのアドレスファミリ AF_ALG をサポートするようになりました。 ALG_ 、 SOL_ALG 、 sendmsg_afalg() が追加されました。

新しい Linux の定数 TCP_USER_TIMEOUT と TCP_CONGESTION が追加されました。

ssl

ssl は OpenSSL 1.1.0 をサポートします。推奨される最小バージョンは 1.0.2 です。

デフォルトの暗号スイートから 3DES が削除され、ChaCha20 Poly1305 の暗号スイートが追加されました。

SSLContext のオプションと暗号のデフォルト設定が改善されました。

新しい SSLSession クラスにより、SSL のセッションをあるクライアント側の接続から別の接続へコピーできます。TLS のセッション再開により、最初のハンドシェイクを高速化し、遅延を減らして性能を改善できます。

新しい get_ciphers() メソッドで、有効な暗号のリストを優先度順に取得できます。

すべての定数とフラグが IntEnum と IntFlags に変換されました。

SSLContext 用に、サーバー側とクライアント側それぞれに固有の TLS プロトコルが追加されました。

TLS 1.3 のハンドシェイク後認証を有効にする SSLContext.post_handshake_auth と、それを開始する ssl.SSLSocket.verify_client_post_handshake() が追加されました。

struct

'e' 書式指定子により IEEE 754 の半精度浮動小数点数をサポートするようになりました。

sys

新しい getfilesystemencodeerrors() 関数は、Unicode のファイル名とバイト列のファイル名を変換する際に使われるエラーモードの名前を返します。

zlib

compress() と decompress() 関数がキーワード引数を受け付けるようになりました

注記