Python 3.6¶
Python 3.6 beta 1 được phát hành vào ngày 12 tháng 9 năm 2016, và tóm tắt các tính năng mới có thể xem tại đây:
Tính năng cú pháp mới |
Trạng thái |
|
Định dạng chuỗi ký tự |
Hoàn thành |
|
Dấu gạch dưới trong hằng số số |
Hoàn thành |
|
Trình tạo bất đồng bộ |
||
Cú pháp cho chú thích biến (tạm thời) |
Hoàn thành |
|
Comprehension bất đồng bộ |
||
Tính năng tích hợp mới |
||
Bảo toàn thứ tự của kwargs trong hàm |
||
Tùy chỉnh đơn giản hơn khi tạo lớp |
Một phần [1] |
|
Bảo toàn thứ tự định nghĩa thuộc tính của lớp |
||
Thay đổi thư viện chuẩn |
||
Phân biệt giờ địa phương |
||
Thêm module Secrets vào thư viện chuẩn |
||
Thêm giao thức đường dẫn hệ thống tệp |
||
Nội tại CPython |
||
Thêm phiên bản riêng vào dict |
Sẽ không thực hiện |
|
Thêm API đánh giá frame vào CPython |
||
Thay đổi trên Linux/Windows |
||
Làm cho |
||
Thay đổi mã hóa console Windows thành UTF-8 |
||
Thay đổi mã hóa hệ thống tệp Windows thành UTF-8 |
||
Các thay đổi ngôn ngữ khác:
Câu lệnh global hoặc nonlocal bây giờ phải xuất hiện về mặt văn bản trước lần sử dụng đầu tiên của tên bị ảnh hưởng trong cùng phạm vi. Trước đây, điều này chỉ là SyntaxWarning. |
|
Hiện có thể đặt một phương thức đặc biệt thành None để chỉ ra rằng hoạt động tương ứng không khả dụng. Ví dụ, nếu một lớp đặt __iter__() thành None, lớp đó không thể lặp. |
|
Các chuỗi dài gồm các dòng traceback lặp lại bây giờ được viết tắt là [Previous line repeated {count} more times] |
|
Import bây giờ sẽ raise exception mới ModuleNotFoundError khi không thể tìm thấy module. Mã hiện tại kiểm tra ImportError (trong try-except) vẫn sẽ hoạt động. |
|
Các phương thức của lớp dựa vào super() không có đối số bây giờ sẽ hoạt động đúng khi được gọi từ các phương thức metaclass trong quá trình tạo lớp. |
Thay đổi đối với các module tích hợp:
Các iterator đã cạn kiệt của array.array bây giờ sẽ vẫn cạn kiệt ngay cả khi mảng được lặp qua bị mở rộng. |
|
Hàm b2a_base64() bây giờ chấp nhận đối số từ khóa tùy chọn newline để kiểm soát xem ký tự xuống dòng có được thêm vào giá trị trả về hay không |
Hoàn thành |
Hằng số mới cmath.tau (τ) đã được thêm vào |
|
Các hằng số mới: cmath.inf và cmath.nan để khớp với math.inf và math.nan, cũng như cmath.infj và cmath.nanj để khớp với định dạng được sử dụng bởi complex repr |
|
Lớp cơ sở trừu tượng Collection mới đã được thêm vào để đại diện cho các lớp container có thể lặp có kích thước |
|
Lớp cơ sở trừu tượng Reversible mới đại diện cho các lớp có thể lặp cũng cung cấp phương thức __reversed__(). |
|
Lớp cơ sở trừu tượng AsyncGenerator mới đại diện cho các trình tạo bất đồng bộ. |
|
Hàm namedtuple() bây giờ chấp nhận đối số từ khóa tùy chọn module, khi được chỉ định sẽ được sử dụng cho thuộc tính __module__ của lớp named tuple được trả về. |
|
Các đối số verbose và rename cho namedtuple() bây giờ chỉ là keyword-only. |
|
Các instance collections.deque đệ quy bây giờ có thể được pickle. |
|
Các hàm băm BLAKE2 đã được thêm vào module. blake2b() và blake2s() luôn khả dụng và hỗ trợ đầy đủ tính năng của BLAKE2. |
|
Các hàm băm SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512(), và các hàm băm SHAKE shake_128() và shake_256() đã được thêm vào. |
|
Hàm dẫn xuất khóa dựa trên mật khẩu scrypt() hiện khả dụng với OpenSSL 1.1.0 và mới hơn. |
|
json.load() và json.loads() bây giờ hỗ trợ đầu vào nhị phân. JSON được mã hóa nên được biểu diễn bằng UTF-8, UTF-16, hoặc UTF-32. |
|
Hằng số mới math.tau (τ) đã được thêm vào |
Hoàn thành |
Phương thức close() mới cho phép đóng rõ ràng một iterator scandir(). Iterator scandir() bây giờ hỗ trợ giao thức context manager. |
|
Trên Linux, os.urandom() bây giờ chặn cho đến khi nhóm entropy urandom của hệ thống được khởi tạo để tăng tính bảo mật. |
|
Lệnh gọi hệ thống getrandom() của Linux (lấy các byte ngẫu nhiên) hiện được cung cấp như hàm os.getrandom() mới. |
|
Đã thêm hỗ trợ cho các modifier span trong biểu thức chính quy. Ví dụ: '(?i:p)ython' khớp với 'python' và 'Python', nhưng không khớp với 'PYTHON'; '(?i)g(?-i:v)r' khớp với 'GvR' và 'gvr', nhưng không khớp với 'GVR'. |
|
Các nhóm đối tượng Match có thể được truy cập bằng __getitem__, tương đương với group(). Vì vậy mo['name'] bây giờ tương đương với mo.group('name'). |
|
Các đối tượng Match bây giờ hỗ trợ các đối tượng dạng chỉ số làm chỉ số nhóm. |
|
Hàm ioctl() bây giờ hỗ trợ mã điều khiển SIO_LOOPBACK_FAST_PATH. |
|
Các hằng số getsockopt() SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC, và SO_PASSSEC bây giờ được hỗ trợ. |
|
Hàm setsockopt() bây giờ hỗ trợ dạng setsockopt(level, optname, None, optlen: int). |
|
Module socket bây giờ hỗ trợ họ địa chỉ AF_ALG để giao tiếp với Linux Kernel crypto API. ALG_, SOL_ALG và sendmsg_afalg() đã được thêm vào. |
|
Các hằng số Linux mới TCP_USER_TIMEOUT và TCP_CONGESTION đã được thêm vào. |
|
ssl hỗ trợ OpenSSL 1.1.0. Phiên bản tối thiểu được khuyến nghị là 1.0.2. |
|
3DES đã bị loại bỏ khỏi bộ mã hóa mặc định và bộ mã hóa ChaCha20 Poly1305 đã được thêm vào. |
|
SSLContext có cấu hình mặc định tốt hơn cho các tùy chọn và mã hóa. |
|
Phiên SSL có thể được sao chép từ kết nối phía client này sang kết nối khác với lớp SSLSession mới. Tiếp tục phiên TLS có thể tăng tốc quá trình bắt tay ban đầu, giảm độ trễ và cải thiện hiệu suất. |
|
Phương thức get_ciphers() mới có thể được sử dụng để lấy danh sách các mã hóa được bật theo thứ tự ưu tiên mã hóa. |
|
Tất cả các hằng số và cờ đã được chuyển đổi sang IntEnum và IntFlags. |
|
Các giao thức TLS dành riêng cho phía server và client đối với SSLContext đã được thêm vào. |
|
Đã thêm SSLContext.post_handshake_auth để bật và ssl.SSLSocket.verify_client_post_handshake() để khởi tạo xác thực sau bắt tay TLS 1.3. |
|
bây giờ hỗ trợ số thực nửa độ chính xác IEEE 754 thông qua ký hiệu định dạng 'e'. |
|
Hàm getfilesystemencodeerrors() mới trả về tên của chế độ lỗi được sử dụng để chuyển đổi giữa tên tệp Unicode và tên tệp dạng bytes. |
|
Các hàm compress() và decompress() bây giờ chấp nhận đối số từ khóa |
|
Ghi chú