Python 3.6
Python 3.6 beta 1 は 2016年9月12日にリリースされました。新機能の概要はこちらにあります:
新しい構文機能 |
状態 |
|
リテラル文字列の書式化 |
完了 |
|
数値リテラル中のアンダースコア |
完了 |
|
非同期ジェネレータ |
||
変数アノテーションの構文(暫定) |
完了 |
|
非同期内包表記 |
||
新しい組み込み機能 |
||
関数における kwargs の順序の保持 |
||
クラス生成のより簡単なカスタマイズ |
部分的 [1] |
|
クラス属性の定義順の保持 |
||
標準ライブラリの変更 |
||
ローカル時刻の曖昧性の解消 |
||
標準ライブラリへの secrets モジュールの追加 |
||
ファイルシステムパスのプロトコルの追加 |
||
CPython の内部 |
||
dict へのプライベートなバージョンの追加 |
対応しない |
|
CPython へのフレーム評価 API の追加 |
||
Linux/Windows の変更 |
||
Linux で(システム起動中に) |
||
Windows のコンソールのエンコーディングを UTF-8 に変更 |
||
Windows のファイルシステムのエンコーディングを UTF-8 に変更 |
||
その他の言語の変更:
global 文と nonlocal 文は、同じスコープ内で対象の名前が最初に使われる位置より前に、テキスト上で現れなければならなくなりました。以前はこれは SyntaxWarning でした。 |
|
特殊メソッドに None を設定して、対応する操作が利用できないことを示せるようになりました。たとえば、あるクラスが __iter__() に None を設定すると、そのクラスは反復可能ではなくなります。 |
|
同じトレースバックの行が長く繰り返される場合、 [Previous line repeated {count} more times] と省略されるようになりました |
|
import は、モジュールが見つからないときに新しい例外 ModuleNotFoundError を発生させるようになりました。現在 (try-except で) ImportError を確認しているコードは、引き続き動作します。 |
|
引数なしの super() に依存するクラスメソッドが、クラス生成中にメタクラスのメソッドから呼ばれても正しく動作するようになりました。 |
組み込みモジュールの変更:
array.array の使い切ったイテレータは、反復対象の配列が拡張されても、使い切ったままになります。 |
|
b2a_base64() 関数が、戻り値に改行文字を付けるかどうかを制御する省略可能な newline キーワード引数を受け付けるようになりました |
完了 |
新しい cmath.tau (τ) 定数が追加されました |
|
新しい定数: math.inf と math.nan に対応する cmath.inf と cmath.nan 、および complex の repr で使われる形式に合わせた cmath.infj と cmath.nanj 。 |
|
サイズを持つ反復可能なコンテナクラスを表す、新しい Collection 抽象基底クラスが追加されました |
|
新しい Reversible 抽象基底クラスは、 __reversed__() メソッドも提供する反復可能なクラスを表します。 |
|
新しい AsyncGenerator 抽象基底クラスは、非同期ジェネレータを表します。 |
|
namedtuple() 関数が省略可能なキーワード引数 module を受け付けるようになりました。これを指定すると、返される名前付きタプルクラスの __module__ 属性に使われます。 |
|
namedtuple() の verbose と rename 引数はキーワード専用になりました。 |
|
再帰的な collections.deque のインスタンスを pickle 化できるようになりました。 |
|
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.load() と json.loads() がバイナリ入力をサポートするようになりました。エンコードされた JSON は UTF-8、UTF-16、UTF-32 のいずれかで表現されている必要があります。 |
|
新しい math.tau (τ) 定数が追加されました |
完了 |
新しい close() メソッドにより、 scandir() のイテレータを明示的に閉じられます。 scandir() のイテレータはコンテキストマネージャプロトコルをサポートするようになりました。 |
|
Linux では、安全性を高めるため、 os.urandom() はシステムの urandom エントロピープールが初期化されるまでブロックするようになりました。 |
|
Linux の getrandom() システムコール(ランダムなバイト列を取得)が、新しい os.getrandom() 関数として公開されました。 |
|
正規表現で修飾子のスパンがサポートされました。例: '(?i:p)ython' は 'python' と 'Python' にマッチしますが 'PYTHON' にはマッチしません。 '(?i)g(?-i:v)r' は 'GvR' と 'gvr' にマッチしますが 'GVR' にはマッチしません。 |
|
マッチオブジェクトのグループに __getitem__ でアクセスできるようになりました。これは group() と等価です。つまり mo['name'] は mo.group('name') と等価です。 |
|
マッチオブジェクトが、グループのインデックスとしてインデックス風のオブジェクトをサポートするようになりました。 |
|
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 は 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() が追加されました。 |
|
'e' 書式指定子により IEEE 754 の半精度浮動小数点数をサポートするようになりました。 |
|
新しい getfilesystemencodeerrors() 関数は、Unicode のファイル名とバイト列のファイル名を変換する際に使われるエラーモードの名前を返します。 |
|
compress() と decompress() 関数がキーワード引数を受け付けるようになりました |
|
注記