Python 3.5

Berikut adalah daftar PEP yang telah difinalkan/diterima untuk Python 3.5 yang dikelompokkan berdasarkan dampaknya terhadap MicroPython.

Ekstensi pada sintaksis

Status

PEP 448

Generalisasi unpacking tambahan

Sebagian

PEP 465

Operator perkalian matriks baru

Lengkap

PEP 492

Coroutine dengan sintaksis async dan await

Lengkap

Ekstensi dan perubahan pada runtime

PEP 461

Format % untuk string biner

Lengkap

PEP 475

Mencoba ulang syscall yang gagal dengan EINTR

Lengkap

PEP 479

Ubah penanganan StopIteration di dalam generator

Lengkap

Perubahan pustaka standar

PEP 471

os.scandir()

PEP 485

math.isclose(), fungsi untuk pengujian kesetaraan perkiraan

Lengkap

Perubahan lain-lain

PEP 441

Peningkatan dukungan aplikasi zip Python

PEP 486

Membuat Python Launcher menyadari lingkungan virtual

Tidak relevan

PEP 484

Type hints (hanya saran)

Lengkap [1]

PEP 488

Eliminasi file PYO

Tidak relevan

PEP 489

Perancangan ulang pemuatan modul ekstensi

Perubahan Bahasa Lainnya:

Ditambahkan penangan error namereplace. Penangan error backslashreplace kini berfungsi dengan decoding dan translating.

Docstring properti kini dapat ditulis. Hal ini sangat berguna untuk docstring collections.namedtuple()

Impor melingkar yang melibatkan impor relatif kini didukung.

Modul Baru:

Perubahan pada modul builtin:

collections

Kelas OrderedDict kini diimplementasikan dalam C, yang membuatnya 4 hingga 100 kali lebih cepat.

Tampilan OrderedDict.items(), OrderedDict.keys(), OrderedDict.values() kini mendukung iterasi reversed().

Kelas deque kini mendefinisikan index(), insert(), dan copy(), serta mendukung operator + dan *.

Docstring yang dihasilkan oleh namedtuple() kini dapat diperbarui.

Kelas UserString kini mengimplementasikan metode __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable(), dan maketrans() agar sesuai dengan metode str yang bersesuaian.

heapq

Perbandingan elemen dalam merge() kini dapat dikustomisasi dengan meneruskan fungsi key dalam argumen kata kunci key opsional baru, dan argumen kata kunci reverse opsional baru dapat digunakan untuk membalik perbandingan elemen

io

Metode BufferedIOBase.readinto1() baru, yang menggunakan paling banyak satu panggilan ke metode RawIOBase.read() atau RawIOBase.readinto() dari raw stream yang mendasarinya

json

Decoder JSON kini menampilkan JSONDecodeError sebagai pengganti ValueError untuk memberikan informasi konteks yang lebih baik tentang error.

math

Dua konstanta baru telah ditambahkan ke modul math: inf dan nan.

Lengkap

Fungsi baru isclose() menyediakan cara untuk menguji kesetaraan perkiraan.

Fungsi gcd() baru telah ditambahkan. Fungsi fractions.gcd() kini sudah deprecated.

os

Fungsi scandir() baru yang mengembalikan iterator dari objek DirEntry telah ditambahkan.

Fungsi urandom() kini menggunakan syscall getrandom() pada Linux 3.17 atau yang lebih baru, dan getentropy() pada OpenBSD 5.6 dan yang lebih baru, menghilangkan kebutuhan untuk menggunakan /dev/urandom dan menghindari kegagalan karena kelebihan deskriptor file.

Fungsi get_blocking() dan set_blocking() baru memungkinkan mendapatkan dan mengatur mode pemblokiran deskriptor file (O_NONBLOCK.)

Terdapat fungsi os.path.commonpath() baru yang mengembalikan sub-path umum terpanjang dari setiap pathname yang diteruskan

re

Referensi dan referensi bersyarat ke grup dengan panjang tetap kini diizinkan dalam pernyataan lookbehind

Jumlah grup penangkap dalam ekspresi reguler tidak lagi dibatasi hingga 100.

Fungsi sub() dan subn() kini mengganti grup yang tidak cocok dengan string kosong sebagai pengganti menampilkan pengecualian.

Pengecualian re.error memiliki atribut baru, msg, pattern, pos, lineno, dan colno, yang memberikan informasi konteks yang lebih baik tentang error

socket

Fungsi dengan timeout kini menggunakan monotonic clock, sebagai pengganti system clock.

Metode socket.sendfile() baru memungkinkan pengiriman file melalui socket dengan menggunakan fungsi os.sendfile() yang berkinerja tinggi di UNIX, menghasilkan upload 2 hingga 3 kali lebih cepat dibandingkan menggunakan socket.send() biasa

Metode socket.sendall() tidak lagi mengatur ulang timeout socket setiap kali byte diterima atau dikirim. Timeout socket kini merupakan durasi total maksimum untuk mengirim semua data.

Argumen backlog dari metode socket.listen() kini opsional. Secara default diset ke SOMAXCONN atau 128, mana yang lebih kecil.

Lengkap

ssl

Dukungan Memory BIO

Dukungan Application-Layer Protocol Negotiation

Terdapat metode SSLSocket.version() baru untuk menanyakan versi protokol aktual yang digunakan.

Kelas SSLSocket kini mengimplementasikan metode SSLSocket.sendfile().

Metode SSLSocket.send() kini menampilkan pengecualian ssl.SSLWantReadError atau ssl.SSLWantWriteError pada socket non-blocking jika operasi akan diblokir. Sebelumnya, metode ini mengembalikan 0.

Fungsi cert_time_to_seconds() kini menginterpretasikan waktu input sebagai UTC dan bukan waktu lokal, sesuai RFC 5280. Selain itu, nilai kembalian selalu berupa int.

Metode SSLObject.shared_ciphers() dan SSLSocket.shared_ciphers() baru mengembalikan daftar cipher yang dikirim oleh klien selama handshake.

Metode SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown(), dan SSLSocket.write() dari kelas SSLSocket tidak lagi mengatur ulang timeout socket setiap kali byte diterima atau dikirim.

Fungsi match_hostname() kini mendukung pencocokan alamat IP.

sys

Fungsi set_coroutine_wrapper() baru memungkinkan pengaturan hook global yang akan dipanggil setiap kali objek coroutine dibuat oleh fungsi async def. get_coroutine_wrapper() yang bersesuaian dapat digunakan untuk mendapatkan wrapper yang saat ini diatur.

Fungsi is_finalizing() baru dapat digunakan untuk memeriksa apakah interpreter Python sedang dimatikan.

time

Fungsi monotonic() kini selalu tersedia

Catatan