Python 3.5¶
Dưới đây là danh sách các PEP đã hoàn thiện/chấp nhận cho Python 3.5, được nhóm theo mức độ ảnh hưởng đến MicroPython.
Mở rộng cú pháp |
Trạng thái |
|
Tổng quát hóa unpack bổ sung |
Một phần |
|
Toán tử nhân ma trận mới |
Hoàn chỉnh |
|
Coroutine với cú pháp |
Hoàn chỉnh |
|
Mở rộng và thay đổi runtime |
||
Định dạng % cho chuỗi nhị phân |
Hoàn chỉnh |
|
Thử lại các lệnh gọi hệ thống thất bại với |
Hoàn chỉnh |
|
Thay đổi cách xử lý |
Hoàn chỉnh |
|
Thay đổi thư viện chuẩn |
||
|
||
|
Hoàn chỉnh |
|
Các thay đổi khác |
||
Cải thiện hỗ trợ ứng dụng zip Python |
||
Làm cho Python Launcher nhận biết môi trường ảo |
Không liên quan |
|
Gợi ý kiểu dữ liệu (chỉ mang tính tư vấn) |
Hoàn chỉnh [1] |
|
Loại bỏ tệp PYO |
Không liên quan |
|
Thiết kế lại cách tải module mở rộng |
||
Các thay đổi ngôn ngữ khác:
Đã thêm trình xử lý lỗi namereplace. Trình xử lý lỗi backslashreplace nay hoạt động với giải mã và dịch. |
|
Chuỗi tài liệu thuộc tính (property docstring) nay có thể ghi. Điều này đặc biệt hữu ích cho chuỗi tài liệu của collections.namedtuple() |
|
Các import vòng tròn liên quan đến import tương đối nay được hỗ trợ. |
Các module mới:
Thay đổi đối với các module dựng sẵn:
Lớp OrderedDict nay được triển khai bằng C, giúp nó nhanh hơn 4 đến 100 lần. |
|
Các view OrderedDict.items(), OrderedDict.keys(), OrderedDict.values() nay hỗ trợ duyệt reversed(). |
|
The deque class now defines index(), insert(), and copy(), and supports the + and * operators. |
|
Chuỗi tài liệu do namedtuple() tạo ra nay có thể được cập nhật. |
|
Lớp UserString nay triển khai các phương thức __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() và maketrans() để phù hợp với các phương thức tương ứng của str. |
|
So sánh phần tử trong merge() nay có thể tùy chỉnh bằng cách truyền hàm key vào đối số từ khóa key tùy chọn mới, và đối số từ khóa reverse tùy chọn mới có thể dùng để đảo ngược so sánh phần tử |
|
Phương thức BufferedIOBase.readinto1() mới, chỉ dùng tối đa một lần gọi đến RawIOBase.read() hoặc RawIOBase.readinto() của luồng thô bên dưới |
|
Bộ giải mã JSON nay phát sinh JSONDecodeError thay vì ValueError để cung cấp thông tin ngữ cảnh tốt hơn về lỗi. |
|
Hai hằng số mới đã được thêm vào module math: inf và nan. |
Hoàn chỉnh |
Hàm mới isclose() cung cấp cách kiểm tra xấp xỉ bằng nhau. |
|
Hàm gcd() mới đã được thêm vào. Hàm fractions.gcd() nay bị đánh dấu lỗi thời. |
|
Hàm scandir() mới trả về iterator của các đối tượng DirEntry đã được thêm vào. |
|
Hàm urandom() nay sử dụng syscall getrandom() trên Linux 3.17 trở lên, và getentropy() trên OpenBSD 5.6 trở lên, loại bỏ nhu cầu sử dụng /dev/urandom và tránh lỗi do hết bộ mô tả tệp. |
|
Các hàm get_blocking() và set_blocking() mới cho phép lấy và đặt chế độ chặn của bộ mô tả tệp (O_NONBLOCK.) |
|
Có hàm os.path.commonpath() mới trả về đường dẫn con chung dài nhất của từng đường dẫn được truyền vào |
|
Các tham chiếu và tham chiếu có điều kiện đến các nhóm có độ dài cố định nay được cho phép trong lookbehind assertion |
|
Số lượng nhóm bắt giữ trong biểu thức chính quy không còn bị giới hạn ở 100. |
|
Các hàm sub() và subn() nay thay thế các nhóm không khớp bằng chuỗi rỗng thay vì phát sinh ngoại lệ. |
|
Ngoại lệ re.error có các thuộc tính mới: msg, pattern, pos, lineno và colno, cung cấp thông tin ngữ cảnh tốt hơn về lỗi |
|
Các hàm có timeout nay sử dụng đồng hồ đơn điệu thay vì đồng hồ hệ thống. |
|
Phương thức socket.sendfile() mới cho phép gửi tệp qua socket bằng cách sử dụng hàm hiệu năng cao os.sendfile() trên UNIX, giúp tốc độ tải lên nhanh hơn 2 đến 3 lần so với khi dùng socket.send() thông thường |
|
Phương thức socket.sendall() không còn đặt lại timeout của socket mỗi khi bytes được nhận hoặc gửi. Timeout socket nay là tổng thời gian tối đa để gửi tất cả dữ liệu. |
|
Đối số backlog của phương thức socket.listen() nay là tùy chọn. Theo mặc định nó được đặt thành SOMAXCONN hoặc 128, tùy giá trị nào nhỏ hơn. |
Hoàn chỉnh |
Hỗ trợ Memory BIO |
|
Hỗ trợ Application-Layer Protocol Negotiation |
|
Có phương thức SSLSocket.version() mới để truy vấn phiên bản giao thức thực tế đang sử dụng. |
|
Lớp SSLSocket nay triển khai phương thức SSLSocket.sendfile(). |
|
Phương thức SSLSocket.send() nay phát sinh ngoại lệ ssl.SSLWantReadError hoặc ssl.SSLWantWriteError trên socket không chặn nếu thao tác sẽ bị chặn. Trước đây, nó sẽ trả về 0. |
|
Hàm cert_time_to_seconds() nay diễn giải thời gian đầu vào là UTC chứ không phải giờ địa phương, theo RFC 5280. Ngoài ra, giá trị trả về luôn là int. |
|
Các phương thức SSLObject.shared_ciphers() và SSLSocket.shared_ciphers() mới trả về danh sách các mã hóa do client gửi trong quá trình bắt tay. |
|
Các phương thức SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() và SSLSocket.write() của lớp SSLSocket không còn đặt lại timeout socket mỗi khi bytes được nhận hoặc gửi. |
|
Hàm match_hostname() nay hỗ trợ khớp địa chỉ IP. |
|
Hàm set_coroutine_wrapper() mới cho phép đặt hook toàn cục sẽ được gọi bất cứ khi nào đối tượng coroutine được tạo bởi hàm async def. Hàm get_coroutine_wrapper() tương ứng có thể dùng để lấy wrapper hiện tại. |
|
Hàm is_finalizing() mới có thể dùng để kiểm tra xem bộ thông dịch Python có đang tắt không. |
|
Hàm monotonic() nay luôn khả dụng |
|
Ghi chú