Bạn có thể thay đổi một biến trong vòng lặp while không?
Chọn một trang web để nhận nội dung đã dịch nếu có và xem các sự kiện và ưu đãi tại địa phương. Dựa trên vị trí của bạn, chúng tôi khuyên bạn nên chọn. Show
Bạn cũng có thể chọn một trang web từ danh sách sau Làm thế nào để có được hiệu suất trang web tốt nhấtChọn trang Trung Quốc (bằng tiếng Trung hoặc tiếng Anh) để có hiệu suất trang tốt nhất. Các trang web quốc gia khác của MathWorks không được tối ưu hóa cho các lượt truy cập từ vị trí của bạn Chọn một trang web để nhận nội dung đã dịch nếu có và xem các sự kiện và ưu đãi tại địa phương. Dựa trên vị trí của bạn, chúng tôi khuyên bạn nên chọn. Bạn cũng có thể chọn một trang web từ danh sách sau Làm thế nào để có được hiệu suất trang web tốt nhấtChọn trang Trung Quốc (bằng tiếng Trung hoặc tiếng Anh) để có hiệu suất trang tốt nhất. Các trang web quốc gia khác của MathWorks không được tối ưu hóa cho các lượt truy cập từ vị trí của bạn Một vòng lặp 63 sẽ lặp liên tục và vô tận, cho đến khi biểu thức bên trong dấu ngoặc đơn, () trở thành sai. Một cái gì đó phải thay đổi biến được kiểm tra hoặc vòng lặp while sẽ không bao giờ thoát. Điều này có thể nằm trong mã của bạn, chẳng hạn như biến tăng dần hoặc điều kiện bên ngoài, chẳng hạn như kiểm tra cảm biếncú pháp
Thông số 64. một biểu thức boolean có giá trị là 65 hoặc 66 Trong ví dụ của bạn, vòng lặp while được thực thi trong một lớp con, do đó, những thay đổi đối với biến bên trong vòng lặp while sẽ không ảnh hưởng đến biến bên ngoài. Điều này là do bạn đang sử dụng vòng lặp với một đường ống, điều này sẽ tự động khiến nó chạy trong một lớp con Đây là một giải pháp thay thế bằng cách sử dụng vòng lặp while
Và đây là cách tiếp cận tương tự bằng cách sử dụng vòng lặp for
Để biết thêm thông tin xem các bài viết sau Ngoài ra, hãy xem chương sau từ Advanced Bash Scripting Guide Bạn có thể sử dụng các vòng lặp bên trong các vòng lặp, bạn chỉ cần lưu ý rằng chúng là các vòng lặp. Những gì bạn muốn làm với vòng lặp while của mình rõ ràng là công việc của một điều kiện nếu, hãy làm nếu điều kiện đúng, nếu không thì không làm gì cả. Nhưng vòng lặp while là một vòng lặp, nó sẽ thực hiện công việc trong {} miễn là điều kiện là đúng và điều này có nghĩa là vĩnh viễn vì vòng lặp for chỉ giảm xuống nếu {} của vòng lặp for giảm xuống. Bài viết này giải thích các tính năng mới trong Python 3. 7, so với 3. 6. Trăn 3. 7 được phát hành vào ngày 27 tháng 6 năm 2018. Để biết chi tiết đầy đủ, xem Tóm tắt – Phát hành nổi bậtCác tính năng cú pháp mới
Thay đổi cú pháp không tương thích ngược
Mô-đun thư viện mới
Các tính năng tích hợp mới
Cải tiến mô hình dữ liệu Python
Những cải tiến đáng kể trong thư viện tiêu chuẩn
Cải tiến triển khai CPython
Cải tiến API C
Cải tiến tài liệu
Phiên bản này có các cải tiến hiệu suất đáng chú ý trong nhiều lĩnh vực. Phần liệt kê chúng một cách chi tiết Để biết danh sách các thay đổi có thể ảnh hưởng đến khả năng tương thích với các bản phát hành Python trước đó, vui lòng tham khảo phần Các tính năng mớiPEP 563. Hoãn đánh giá các chú thíchSự ra đời của gợi ý loại trong Python đã phát hiện ra hai vấn đề rõ ràng về khả năng sử dụng với chức năng của chú thích được thêm vào trong PEP 3107 và được tinh chỉnh thêm trong PEP 526
Cả hai vấn đề này đều được khắc phục bằng cách hoãn đánh giá các chú thích. Thay vì biên dịch mã thực thi các biểu thức trong chú thích tại thời điểm định nghĩa của chúng, trình biên dịch lưu chú thích ở dạng chuỗi tương đương với AST của biểu thức được đề cập. Nếu cần, các chú thích có thể được giải quyết trong thời gian chạy bằng cách sử dụng. Trong trường hợp phổ biến khi điều này không bắt buộc, các chú thích sẽ rẻ hơn để lưu trữ (vì các chuỗi ngắn được trình thông dịch thực hiện) và giúp thời gian khởi động nhanh hơn Khả năng sử dụng khôn ngoan, các chú thích hiện hỗ trợ các tham chiếu chuyển tiếp, làm cho cú pháp sau hợp lệ class C: @classmethod def from_string(cls, source: str) -> C: ... def validate_b(self, obj: B) -> bool: ... class B: ... Vì thay đổi này phá vỡ khả năng tương thích, hành vi mới cần được bật trên cơ sở mỗi mô-đun trong Python 3. 7 bằng cách nhập from __future__ import annotations Nó sẽ trở thành mặc định trong Python 3. 10 Xem thêm PEP 563 – Hoãn đánh giá các chú thíchPEP được viết và triển khai bởi Łukasz Langa PEP 538. Ép buộc ngôn ngữ C kế thừaMột thách thức đang diễn ra trong sê-ri Python 3 là xác định chiến lược mặc định hợp lý để xử lý giả định mã hóa văn bản “7-bit ASCII” hiện được ngụ ý bằng cách sử dụng ngôn ngữ C hoặc POSIX mặc định trên các nền tảng không phải Windows PEP 538 cập nhật giao diện dòng lệnh trình thông dịch mặc định để tự động ép buộc ngôn ngữ đó thành ngôn ngữ dựa trên UTF-8 có sẵn như được mô tả trong tài liệu về biến môi trường mới. Tự động đặt from __future__ import annotations6 theo cách này có nghĩa là cả trình thông dịch lõi và phần mở rộng C nhận biết ngôn ngữ (chẳng hạn như ) sẽ sử dụng UTF-8 làm mã hóa văn bản mặc định, thay vì ASCII Định nghĩa hỗ trợ nền tảng trong PEP 11 cũng đã được cập nhật để giới hạn hỗ trợ xử lý văn bản đầy đủ đối với các ngôn ngữ không dựa trên ASCII được định cấu hình phù hợp Là một phần của thay đổi này, trình xử lý lỗi mặc định cho và hiện tại là @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"0 (chứ không phải là @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"1) khi sử dụng bất kỳ ngôn ngữ mục tiêu ép buộc đã xác định nào (hiện tại là @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"2, @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"3 và @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"4). Trình xử lý lỗi mặc định cho tiếp tục là @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"6, bất kể ngôn ngữ nào Ép buộc ngôn ngữ theo mặc định là im lặng, nhưng để hỗ trợ gỡ lỗi các sự cố tích hợp có khả năng liên quan đến ngôn ngữ, bạn có thể yêu cầu các cảnh báo rõ ràng (được phát trực tiếp trên ) bằng cách đặt @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"8. Cài đặt này cũng sẽ khiến thời gian chạy Python phát ra cảnh báo nếu ngôn ngữ C kế thừa vẫn hoạt động khi trình thông dịch lõi được khởi chạy Mặc dù tính năng cưỡng chế ngôn ngữ của PEP 538 cũng có lợi ích là ảnh hưởng đến các mô-đun mở rộng (chẳng hạn như GNU from __future__ import annotations7), cũng như các quy trình con (bao gồm cả những ứng dụng chạy ứng dụng không phải Python và các phiên bản Python cũ hơn), nhưng nó có nhược điểm là yêu cầu mục tiêu phù hợp. . Để xử lý tốt hơn trường hợp không có ngôn ngữ mục tiêu phù hợp (chẳng hạn như xảy ra trên RHEL/CentOS 7), Python 3. 7 cũng thực hiện Xem thêm PEP 538 – Buộc ngôn ngữ C kế thừa thành ngôn ngữ dựa trên UTF-8PEP được viết và thực hiện bởi Nick Coghlan PEP 540. Chế độ thời gian chạy UTF-8 bắt buộcTùy chọn dòng lệnh 41 mới và biến môi trường có thể được sử dụng để kích hoạtKhi ở chế độ UTF-8, CPython bỏ qua cài đặt ngôn ngữ và sử dụng mã hóa UTF-8 theo mặc định. Trình xử lý lỗi cho và luồng được đặt thành @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"0 Chế độ UTF-8 bắt buộc có thể được sử dụng để thay đổi hành vi xử lý văn bản trong trình thông dịch Python nhúng mà không thay đổi cài đặt ngôn ngữ của ứng dụng nhúng Mặc dù chế độ UTF-8 của PEP 540 có ưu điểm là hoạt động bất kể ngôn ngữ nào khả dụng trên hệ thống đang chạy, nhưng nó có nhược điểm là không ảnh hưởng đến các mô-đun mở rộng (chẳng hạn như GNU from __future__ import annotations7), các tiến trình con đang chạy các ứng dụng không phải Python và . Để giảm nguy cơ làm hỏng dữ liệu văn bản khi giao tiếp với các thành phần đó, Python 3. 7 cũng thực hiện) Chế độ UTF-8 được bật theo mặc định khi ngôn ngữ là 47 hoặc 48 và tính năng cưỡng chế ngôn ngữ PEP 538 không thể thay đổi nó thành một giải pháp thay thế dựa trên UTF-8 (cho dù lỗi đó là do đặt 49, đặt 00, Xem thêm PEP 540 – Thêm chế độ UTF-8 mớiPEP được viết và triển khai bởi Victor Stinner PEP 553. Tích hợp sẵn i=1 while read x; do i=$(($i + 1)) echo $i done <<<$(find tmp -type f) echo $i 67Trăn 3. 7 bao gồm chức năng tích hợp mới như một cách dễ dàng và nhất quán để vào trình gỡ lỗi Python Cuộc gọi 67 tích hợp. Theo mặc định, cái sau nhập và sau đó gọi 06, nhưng bằng cách ràng buộc 04 với chức năng bạn chọn, 67 có thể nhập bất kỳ trình gỡ lỗi nào. Ngoài ra, biến môi trường có thể được đặt thành có thể gọi được của trình gỡ lỗi bạn chọn. Đặt 700 để tắt hoàn toàn 67 tích hợpXem thêm PEP 553 – Điểm dừng tích hợp()PEP được viết và thực hiện bởi Barry Warsaw PEP 539. API C mới cho Lưu trữ cục bộ theo luồngMặc dù Python cung cấp API C để hỗ trợ lưu trữ cục bộ theo luồng; . Đây thường không phải là vấn đề đối với các nền tảng hỗ trợ chính thức, nhưng đó không phải là tuân thủ POSIX, cũng không phải là di động theo bất kỳ ý nghĩa thực tế nào. int to represent TLS keys across all platforms. This has not generally been a problem for officially support platforms, but that is neither POSIX-compliant, nor portable in any practical sense. PEP 539 thay đổi điều này bằng cách cung cấp một cái mới cho CPython thay thế việc sử dụng API TLS hiện có trong trình thông dịch CPython, đồng thời loại bỏ API hiện có. API TSS sử dụng một loại mới thay vì int để biểu thị các khóa TSS–một loại không rõ ràng mà định nghĩa của loại này có thể phụ thuộc vào việc triển khai TLS cơ bản. Do đó, điều này sẽ cho phép xây dựng CPython trên các nền tảng nơi khóa TLS gốc được xác định theo cách không thể truyền an toàn cho int . Lưu ý rằng trên các nền tảng nơi khóa TLS gốc được xác định theo cách không thể truyền an toàn cho int , tất cả chức năng của khóa hiện có . Điều này cho thấy rõ ràng rằng API cũ không được hỗ trợ trên các nền tảng không thể sử dụng API một cách đáng tin cậy và sẽ không có nỗ lực nào được thực hiện để thêm hỗ trợ đó. Xem thêm PEP 539 – Một C-API mới cho Lưu trữ cục bộ theo luồng trong CPythonPEP được viết bởi Erik M. Bray; PEP 562. Tùy chỉnh quyền truy cập vào các thuộc tính mô-đunTrăn 3. 7 cho phép xác định 703 trên các mô-đun và sẽ gọi nó bất cứ khi nào không tìm thấy thuộc tính mô-đun. Xác định 704 trên các mô-đun hiện cũng được cho phépMột ví dụ điển hình về nơi điều này có thể hữu ích là không dùng thuộc tính mô-đun và tải chậm Xem thêm PEP 562 – Mô-đun 705 và 706PEP được viết và triển khai bởi Ivan Levkivskyi PEP 564. Chức năng thời gian mới với độ phân giải nano giâyĐộ phân giải của đồng hồ trong các hệ thống hiện đại có thể vượt quá độ chính xác giới hạn của số dấu phẩy động được trả về bởi hàm và các biến thể của nó. Để tránh mất độ chính xác, PEP 564 thêm sáu biến thể “nano giây” mới của các chức năng hẹn giờ hiện có vào mô-đun Các hàm mới trả về số nano giây dưới dạng giá trị số nguyên cho thấy rằng trên Linux và Windows, độ phân giải của tốt hơn khoảng 3 lần so với Xem thêm PEP 564 – Thêm chức năng thời gian mới với độ phân giải nano giâyPEP được viết và triển khai bởi Victor Stinner PEP 565. Hiển thị Cảnh báo Khấu hao trong i=1 while read x; do i=$(($i + 1)) echo $i done <<<$(find tmp -type f) echo $i 767Việc xử lý mặc định của đã được thay đổi sao cho các cảnh báo này một lần nữa được hiển thị theo mặc định, nhưng chỉ khi mã kích hoạt chúng đang chạy trực tiếp trong mô-đun. Do đó, các nhà phát triển tập lệnh tệp đơn lẻ và những người sử dụng Python tương tác sẽ một lần nữa bắt đầu thấy các cảnh báo không dùng nữa cho các API mà họ sử dụng, nhưng các cảnh báo không dùng nữa được kích hoạt bởi các mô-đun ứng dụng, thư viện và khung đã nhập sẽ tiếp tục bị ẩn theo mặc định Do sự thay đổi này, thư viện tiêu chuẩn hiện cho phép các nhà phát triển chọn giữa ba hành vi cảnh báo không dùng nữa
Trước đây cả hai và chỉ hiển thị khi chạy thử nghiệm, điều đó có nghĩa là các nhà phát triển chủ yếu viết các tập lệnh tệp đơn lẻ hoặc sử dụng Python một cách tương tác có thể bị bất ngờ khi phá vỡ các thay đổi trong API mà họ đã sử dụng Xem thêm PEP 565 – Hiển thị Cảnh báo Khấu hao trong 767PEP được viết và thực hiện bởi Nick Coghlan PEP 560. Hỗ trợ cốt lõi cho mô-đun i=1 while read x; do i=$(($i + 1)) echo $i done <<<$(find tmp -type f) echo $i 789 và các loại chungBan đầu, PEP 484 được thiết kế theo cách nó sẽ không đưa ra bất kỳ thay đổi nào đối với trình thông dịch CPython cốt lõi. Bây giờ hãy nhập các gợi ý và mô-đun được cộng đồng sử dụng rộng rãi, vì vậy hạn chế này được loại bỏ. PEP giới thiệu hai phương thức đặc biệt 791 và 792, những phương thức này hiện được sử dụng bởi hầu hết các lớp và cấu trúc đặc biệt trong. Do đó, tốc độ của các hoạt động khác nhau với các loại tăng lên tới 7 lần, các loại chung có thể được sử dụng mà không có xung đột siêu dữ liệu và một số lỗi tồn tại lâu dài trong mô-đun đã được sửaXem thêm PEP 560 – Hỗ trợ cốt lõi để nhập mô-đun và các loại chungPEP được viết và triển khai bởi Ivan Levkivskyi PEP 552. dựa trên hàm băm. tập tin pycTheo truyền thống, Python đã kiểm tra tính cập nhật của các tệp bộ đệm mã byte (tôi. e. , 795) bằng cách so sánh siêu dữ liệu nguồn (dấu thời gian và kích thước được sửa đổi lần cuối) với siêu dữ liệu nguồn được lưu trong tiêu đề tệp bộ đệm khi nó được tạo. Mặc dù hiệu quả, phương pháp vô hiệu hóa này có nhược điểm của nó. Khi dấu thời gian của hệ thống tệp quá thô, Python có thể bỏ lỡ các bản cập nhật nguồn, dẫn đến sự nhầm lẫn của người dùng. Ngoài ra, việc có dấu thời gian trong tệp bộ đệm là vấn đề đối với khả năng tái tạo bản dựng và hệ thống xây dựng dựa trên nội dungPEP 552 mở rộng định dạng pyc để cho phép hàm băm của tệp nguồn được sử dụng để vô hiệu hóa thay vì dấu thời gian nguồn. Các tệp 795 như vậy được gọi là "dựa trên hàm băm". Theo mặc định, Python vẫn sử dụng tính năng vô hiệu hóa dựa trên dấu thời gian và không tạo tệp 795 dựa trên hàm băm khi chạy. Các tệp 795 dựa trên hàm băm có thể được tạo bằng hoặcCác tệp 795 dựa trên hàm băm có hai biến thể. đã kiểm tra và bỏ chọn. Python xác thực các tệp 795 dựa trên hàm băm đã kiểm tra dựa trên các tệp nguồn tương ứng trong thời gian chạy nhưng không làm như vậy đối với các pyc dựa trên hàm băm không được kiểm tra. Các tệp 795 dựa trên hàm băm không được kiểm tra là một tối ưu hóa hiệu suất hữu ích cho các môi trường nơi hệ thống bên ngoài Python (e. g. , hệ thống xây dựng) chịu trách nhiệm cập nhật các tệp 795Xem để biết thêm thông tin Xem thêm PEP 552 – Pyc xác địnhPEP được viết và thực hiện bởi Benjamin Peterson PEP 545. Bản dịch tài liệu PythonPEP 545 mô tả quy trình tạo và duy trì bản dịch tài liệu Python Ba bản dịch mới đã được thêm vào
Xem thêm PEP 545 – Bản dịch tài liệu PythonPEP được viết và triển khai bởi Julien Palard, Inada Naoki và Victor Stinner Chế độ phát triển Python (-X dev)Có thể sử dụng tùy chọn dòng lệnh 676 mới hoặc biến môi trường mới để bật. Khi ở chế độ phát triển, Python thực hiện các kiểm tra thời gian chạy bổ sung quá tốn kém để được bật theo mặc định. Xem tài liệu để biết mô tả đầy đủThay đổi ngôn ngữ khác
Mô-đun mớingữ cảnhMô-đun mới và một bộ hỗ trợ giới thiệu cho các biến ngữ cảnh. Các biến ngữ cảnh về mặt khái niệm tương tự như các biến cục bộ của luồng. Không giống như TLS, các biến ngữ cảnh hỗ trợ chính xác mã không đồng bộ Các mô-đun và đã được cập nhật để sử dụng và hỗ trợ các biến ngữ cảnh ngay lập tức. Riêng ngữ cảnh thập phân hoạt động hiện được lưu trữ trong một biến ngữ cảnh, cho phép các hoạt động thập phân hoạt động với ngữ cảnh chính xác trong mã không đồng bộ Xem thêm PEP 567 – Biến bối cảnhPEP được viết và thực hiện bởi Yury Selivanov lớp dữ liệuTrình trang trí mới cung cấp cách khai báo các lớp dữ liệu. Một lớp dữ liệu mô tả các thuộc tính của nó bằng cách sử dụng các chú thích biến lớp. Hàm tạo của nó và các phương thức ma thuật khác, chẳng hạn như , và được tạo tự động Thí dụ @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)" Xem thêm PEP 557 – Lớp dữ liệuPEP được viết và triển khai bởi Eric V. thợ rèn nhập khẩu. tài nguyênMô-đun mới cung cấp một số API mới và một ABC mới để truy cập, mở và đọc tài nguyên bên trong các gói. Tài nguyên gần giống với tệp bên trong gói, nhưng chúng không cần phải là tệp thực trên hệ thống tệp vật lý. Trình tải mô-đun có thể cung cấp hàm from __future__ import annotations27 trả về phiên bản from __future__ import annotations28 để hỗ trợ API mới này. Trình tải đường dẫn tệp tích hợp và trình tải tệp zip đều hỗ trợ điều này Được đóng góp bởi Barry Warsaw và Brett Cannon trong bpo-32248 Xem thêm importlib_resources – một cổng sau PyPI cho các phiên bản Python cũ hơn Mô-đun cải tiếnargparsePhương pháp mới cho phép trộn lẫn các tùy chọn và đối số vị trí. (Đóng góp bởi paul. j3 trong bpo-14191. ) không đồng bộMô-đun đã nhận được nhiều tính năng mới, khả năng sử dụng và. Những thay đổi đáng chú ý bao gồm
Một số API from __future__ import annotations0 đã được nhị phânHàm hiện chấp nhận một đối số từ khóa backtick tùy chọn. Khi nó đúng, số 0 được biểu thị bằng from __future__ import annotations90 thay vì khoảng trắng. (Đóng góp bởi Xiang Zhang trong bpo-30103. ) lịchLớp này có các thuộc tính lớp mới giúp dễ dàng tùy chỉnh các lớp CSS trong lịch HTML được tạo. (Đóng góp bởi Oz Tiram trong bpo-30095. ) bộ sưu tậpfrom __future__ import annotations92 hiện hỗ trợ các giá trị mặc định. (Đóng góp bởi Raymond Hettinger trong bpo-32320. ) biên dịchđã học tham số invalidation_mode mới, có thể được sử dụng để bật. Chế độ vô hiệu hóa cũng có thể được chỉ định trên dòng lệnh bằng cách sử dụng đối số from __future__ import annotations94 mới. (Đóng góp bởi Benjamin Peterson trong bpo-31650. ) đồng thời. tương laivà bây giờ hỗ trợ các đối số khởi tạo mới và khởi tạo khởi tạo. (Đóng góp bởi Antoine Pitrou trong bpo-21423. ) Bây giờ có thể lấy bối cảnh đa xử lý thông qua đối số mp_context mới. (Đóng góp bởi Thomas Moreau trong bpo-31540. ) ngữ cảnhCái mới là trình quản lý bối cảnh không cần thao tác đơn giản hơn và nhanh hơn so với. (Đóng góp bởi Jesse-Bakker trong bpo-10049. ) , , và mới đã được thêm vào để bổ sung cho các đối tác đồng bộ của chúng. (Được đóng góp bởi Jelle Zijlstra trong bpo-29679 và bpo-30241, và bởi Alexander Mohr và Ilya Kulakov trong bpo-29302. ) hồ sơ cDòng lệnh hiện chấp nhận @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"04 thay thế cho đường dẫn tập lệnh. (Đóng góp bởi Sanyam Khurana trong bpo-21862. ) hầm mộMô-đun hiện hỗ trợ phương pháp băm Blowfish. (Đóng góp bởi Serhiy Storchaka trong bpo-31664. ) Hàm hiện cho phép chỉ định số vòng để băm. (Đóng góp bởi Serhiy Storchaka trong bpo-31702. ) ngày giờPhương thức mới xây dựng một đối tượng từ một chuỗi ở một trong các định dạng được xuất ra bởi. (Đóng góp bởi Paul Ganssle trong bpo-15873. ) Lớp hiện hỗ trợ độ lệch phút phụ. (Đóng góp bởi Alexander Belopolsky trong bpo-5288. ) dbmhiện hỗ trợ đọc các tệp chỉ đọc và không còn ghi tệp chỉ mục khi nó không được thay đổi số thập phânMô-đun hiện sử dụng để lưu trữ ngữ cảnh thập phân. (Đóng góp bởi Yury Selivanov trong bpo-32630. ) disHàm hiện có thể phân tách các đối tượng mã lồng nhau (mã hiểu, biểu thức trình tạo và hàm lồng nhau và mã được sử dụng để xây dựng các lớp lồng nhau). Độ sâu tối đa của đệ quy tháo gỡ được kiểm soát bởi tham số độ sâu mới. (Đóng góp bởi Serhiy Storchaka trong bpo-11822. ) distutils@dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"14 hiện được bao gồm trong danh sách các README tiêu chuẩn của distutils và do đó được bao gồm trong các bản phân phối nguồn. (Đóng góp bởi Ryan Gonzalez trong bpo-11913. ) liệt kêĐã học thuộc tính lớp @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"16 mới, cho phép liệt kê tên của các thuộc tính không nên trở thành thành viên enum. (Đóng góp bởi Ethan Furman trong bpo-31801. ) Trong Trăn 3. 8, việc cố gắng kiểm tra các đối tượng không phải Enum trong lớp @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"15 sẽ làm tăng (e. g. @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"19); . g. @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"22); . (Đóng góp bởi Ethan Furman trong bpo-33217. ) công cụ chức nănghiện hỗ trợ đăng ký triển khai bằng cách sử dụng chú thích loại. (Đóng góp bởi Łukasz Langa trong bpo-32227. ) gcChức năng mới cho phép đóng băng tất cả các đối tượng được theo dõi bởi trình thu gom rác và loại trừ chúng khỏi các bộ sưu tập trong tương lai. Điều này có thể được sử dụng trước lệnh gọi POSIX @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"26 để làm cho bản sao GC trở nên thân thiện hoặc để tăng tốc độ thu thập. Các chức năng mới đảo ngược hoạt động này. Ngoài ra, có thể được sử dụng để lấy số lượng đối tượng bị đóng băng. (Đóng góp bởi Li Zekun trong bpo-31558. ) hmacMô-đun hiện có chức năng one-shot được tối ưu hóa, nhanh hơn gấp ba lần so với @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"31. (Đóng góp bởi Christian Heimes trong bpo-32433. ) http. khách hàngvà hiện hỗ trợ đối số kích thước khối mới để cải thiện thông lượng tải lên. (Đóng góp bởi Nir Soffer trong bpo-31945. ) http. người phục vụhiện hỗ trợ tiêu đề HTTP @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"35. Máy chủ trả về trạng thái phản hồi 304 nếu tệp đích không được sửa đổi sau thời gian được chỉ định trong tiêu đề. (Đóng góp bởi Pierre Quentel trong bpo-29654. ) chấp nhận đối số thư mục mới, ngoài đối số dòng lệnh @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"37 mới. Với tham số này, máy chủ phục vụ thư mục được chỉ định, theo mặc định, nó sử dụng thư mục làm việc hiện tại. (Đóng góp bởi Stéphane Wirtel và Julien Palard trong bpo-28707. ) Lớp mới sử dụng các luồng để xử lý các yêu cầu bằng cách sử dụng @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"39. Nó được sử dụng khi @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"40 được chạy với from __future__ import annotations14. (Đóng góp bởi Julien Palard trong bpo-31639. ) idlib và IDLENhiều bản sửa lỗi cho tự động hoàn thành. (Đóng góp bởi Louie Lu trong bpo-15786. ) Trình duyệt mô-đun (trên menu Tệp, trước đây được gọi là Trình duyệt lớp), hiện hiển thị các hàm và lớp lồng nhau bên cạnh các hàm và lớp cấp cao nhất. (Được đóng góp bởi Guilherme Polo, Cheryl Sabella và Terry Jan Reedy trong bpo-1612262. ) Hộp thoại Cài đặt (Tùy chọn, Định cấu hình IDLE) đã được viết lại một phần để cải thiện cả hình thức và chức năng. (Đóng góp bởi Cheryl Sabella và Terry Jan Reedy trong nhiều số báo. ) Mẫu phông chữ hiện bao gồm một lựa chọn các ký tự không phải là tiếng Latinh để người dùng có thể thấy rõ hơn hiệu quả của việc chọn một phông chữ cụ thể. (Đóng góp bởi Terry Jan Reedy trong bpo-13802. ) Mẫu có thể được chỉnh sửa để bao gồm các ký tự khác. (Đóng góp bởi Serhiy Storchaka trong bpo-31860. ) Các tính năng IDLE trước đây được triển khai dưới dạng tiện ích mở rộng đã được triển khai lại như các tính năng thông thường. Cài đặt của họ đã được chuyển từ tab Tiện ích mở rộng sang các tab hộp thoại khác. (Đóng góp bởi Charles Wohlganger và Terry Jan Reedy trong bpo-27099. ) Tùy chọn bối cảnh mã trình chỉnh sửa đã sửa đổi. Hộp hiển thị tất cả các dòng ngữ cảnh lên đến dòng tối đa. Nhấp vào một dòng ngữ cảnh sẽ chuyển trình chỉnh sửa đến dòng đó. Màu bối cảnh cho các chủ đề tùy chỉnh được thêm vào tab Điểm nổi bật của hộp thoại Cài đặt. (Được đóng góp bởi Cheryl Sabella và Terry Jan Reedy trong bpo-33642, bpo-33768 và bpo-33679. ) Trên Windows, lệnh gọi API mới cho Windows biết rằng tk chia tỷ lệ cho DPI. Trên Windows 8. 1+ hoặc 10, với các thuộc tính tương thích DPI của mã nhị phân Python không thay đổi và độ phân giải màn hình lớn hơn 96 DPI, điều này sẽ làm cho văn bản và đường kẻ sắc nét hơn. Nếu không nó sẽ không có tác dụng. (Đóng góp bởi Terry Jan Reedy trong bpo-33656. ) Mới trong 3. 7. 1 Đầu ra trên N dòng (50 theo mặc định) được nén xuống một nút. Có thể thay đổi N trong phần PyShell của trang Chung của hộp thoại Cài đặt. Ít dòng hơn, nhưng có thể dài hơn, có thể được nén bằng cách nhấp chuột phải vào đầu ra. Đầu ra đã ép có thể được mở rộng tại chỗ bằng cách nhấp đúp vào nút hoặc vào khay nhớ tạm hoặc một cửa sổ riêng bằng cách nhấp chuột phải vào nút. (Đóng góp bởi Tal Einat trong bpo-1529353. ) Những thay đổi ở trên đã được nhập vào 3. 6 bản phát hành bảo trì MỚI trong 3. 7. 4 Thêm “Chạy tùy chỉnh” vào menu Chạy để chạy mô-đun với cài đặt tùy chỉnh. Mọi đối số dòng lệnh đã nhập đều được thêm vào sys. argv. Chúng xuất hiện lại trong hộp cho lần chạy tùy chỉnh tiếp theo. Người ta cũng có thể chặn khởi động lại mô-đun chính Shell bình thường. (Được đóng góp bởi Cheryl Sabella, Terry Jan Reedy và những người khác trong bpo-5680 và bpo-37627. ) Mới trong 3. 7. 5 Thêm số dòng tùy chọn cho cửa sổ soạn thảo IDLE. Windows mở mà không có số dòng trừ khi được đặt khác trong tab Chung của hộp thoại cấu hình. Số dòng cho một cửa sổ hiện có được hiển thị và ẩn trong menu Tùy chọn. (Đóng góp bởi Tal Einat và Saimadhav Heblikar trong bpo-17535. ) nhập khẩufrom __future__ import annotations28 ABC được giới thiệu để hỗ trợ tải tài nguyên từ các gói. Xem thêm. (Đóng góp bởi Barry Warsaw, Brett Cannon trong bpo-32248. ) hiện tăng nếu mô-đun thiếu thông số kỹ thuật. (Đóng góp bởi Garvit Khatri trong bpo-29851. ) @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"45 hiện tăng thay vì nếu mô-đun cha được chỉ định không phải là gói (i. e. thiếu thuộc tính @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"48). (Đóng góp bởi Milan Oberkirch trong bpo-30436. ) @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"49 mới có thể được sử dụng để tính toán hàm băm của nguồn đã truyền. A nhúng giá trị được hàm này trả về ioPhương pháp mới có thể được sử dụng để định cấu hình lại luồng văn bản với các cài đặt mới. (Đóng góp bởi Antoine Pitrou trong bpo-30526 và INADA Naoki trong bpo-15216. ) địa chỉ IPCác phương pháp @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"51 và @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"52 mới và có thể được sử dụng để kiểm tra ngăn chặn mạng. (Đóng góp bởi Michel Albert và Cheryl Sabella trong bpo-20825. ) itertoolshiện chấp nhận làm đối số bắt đầu, dừng và lát. (Đóng góp bởi Will Roberts trong bpo-30537. ) miền địa phươngĐối số tiền tệ mới to có thể được sử dụng để thực hiện chuyển đổi bằng cách sử dụng dấu phân cách hàng nghìn tiền tệ và chuỗi nhóm. (Đóng góp bởi Garvit trong bpo-10379. ) Hàm hiện luôn trả về @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"59 trên Android hoặc khi ở trong khai thác gỗcác trường hợp hiện có thể được chọn. (Đóng góp bởi Vinay Sajip trong bpo-30520. ) Phương pháp mới có thể được sử dụng để thay thế luồng logger sau khi tạo trình xử lý. (Đóng góp bởi Vinay Sajip trong bpo-30522. ) Bây giờ có thể chỉ định các đối số từ khóa cho các hàm tạo của trình xử lý trong cấu hình được chuyển đến. (Đóng góp bởi Preston Landers trong bpo-31080. ) môn ToánChức năng mới thực hiện thao tác còn lại kiểu IEEE 754. (Đóng góp bởi Mark Dickinson trong bpo-29962. ) kịch câmLoại MIME của. bmp đã được thay đổi từ @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"64 thành @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"65. (Đóng góp bởi Nitish Chandra trong bpo-22589. ) msilibPhương pháp mới có thể được sử dụng để đóng cơ sở dữ liệu MSI. (Đóng góp bởi Berker Peksag trong bpo-20486. ) đa xử lýPhương thức mới đóng đối tượng quy trình một cách rõ ràng và giải phóng tất cả các tài nguyên được liên kết với nó. được nâng lên nếu quá trình cơ bản vẫn đang chạy. (Đóng góp bởi Antoine Pitrou trong bpo-30596. ) Phương pháp mới có thể được sử dụng để kết thúc quá trình bằng tín hiệu @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"70 trên Unix. (Đóng góp bởi Vitor Pereira trong bpo-30794. ) Các luồng không phải daemon được tạo bởi hiện được tham gia khi thoát khỏi quy trình. (Đóng góp bởi Antoine Pitrou trong bpo-18966. ) hệ điều hànhhiện chấp nhận đối số đường dẫn là. (Đóng góp bởi Serhiy Storchaka trong bpo-28682. ) đạt được sự hỗ trợ cho. (Đóng góp bởi Serhiy Storchaka trong bpo-25996. ) Chức năng mới cho phép đăng ký các lệnh gọi lại Python được thực thi tại process fork. (Đóng góp bởi Antoine Pitrou trong bpo-16500. ) Đã thêm (kết hợp chức năng của và ) và chức năng (kết hợp chức năng của và ). (Đóng góp bởi Pablo Galindo trong bpo-31368. ) Đối số chế độ không còn ảnh hưởng đến các bit cấp phép tệp của các thư mục cấp trung gian mới được tạo. (Đóng góp bởi Serhiy Storchaka trong bpo-19930. ) bây giờ trả về bộ mô tả tệp mới. Trước đây, @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"84 luôn được trả về. (Đóng góp bởi Benjamin Peterson trong bpo-32441. ) Cấu trúc được trả về bây giờ chứa thuộc tính trên Solaris và các dẫn xuất của nó. (Đóng góp bởi Jesús Cea Avión trong bpo-32659. ) đường dẫnPhương pháp mới hiện khả dụng trên các hệ thống POSIX và có thể được sử dụng để xác định xem một đường dẫn có phải là điểm gắn kết hay không. (Do Cooper Ry Lees đóng góp trong bpo-30897. ) pdbbây giờ có một đối số chỉ từ khóa tiêu đề tùy chọn. Nếu được cung cấp, nó sẽ được in ra bàn điều khiển ngay trước khi quá trình gỡ lỗi bắt đầu. (Đóng góp bởi Barry Warsaw trong bpo-31389. ) dòng lệnh hiện chấp nhận @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"04 thay thế cho tệp tập lệnh. (Đóng góp bởi Mario Corchero trong bpo-32206. ) py_compile– và bằng cách mở rộng, – hiện tôn trọng biến môi trường @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"93 bằng cách tạo vô điều kiện các tệp 795 để xác thực dựa trên hàm băm. Điều này cho phép đảm bảo các bản dựng có thể tái sản xuất của các tệp 795 khi chúng được tạo một cách háo hức. (Đóng góp bởi Bernhard M. Wiedemann trong bpo-29708. )pydocMáy chủ pydoc hiện có thể liên kết với một tên máy chủ tùy ý được chỉ định bởi đối số dòng lệnh @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"96 mới. (Đóng góp bởi Feanil Patel trong bpo-31128. ) xếp hàngLớp mới là hàng đợi FIFO không giới hạn. (Đóng góp bởi Antoine Pitrou trong bpo-14976. ) lạiCác cờ và 400 có thể được đặt trong phạm vi của một nhóm. (Đóng góp bởi Serhiy Storchaka trong bpo-31690. )hiện hỗ trợ tách trên một mẫu như 402, 403 hoặc 404 khớp với một chuỗi trống. (Đóng góp bởi Serhiy Storchaka trong bpo-25054. )Biểu thức chính quy được biên dịch với cờ không còn phụ thuộc vào ngôn ngữ tại thời điểm biên dịch. Cài đặt ngôn ngữ chỉ được áp dụng khi sử dụng biểu thức chính quy đã biên dịch. (Đóng góp bởi Serhiy Storchaka trong bpo-30215. ) hiện được phát ra nếu một biểu thức chính quy chứa các cấu trúc bộ ký tự sẽ thay đổi về mặt ngữ nghĩa trong tương lai, chẳng hạn như các tập hợp lồng nhau và các thao tác tập hợp. (Đóng góp bởi Serhiy Storchaka trong bpo-30349. ) Các đối tượng đối sánh và biểu thức chính quy được biên dịch giờ đây có thể được sao chép bằng cách sử dụng và. (Đóng góp bởi Serhiy Storchaka trong bpo-10076. ) dấu hiệuĐối sốWarn_on_full_buffer mới cho hàm giúp có thể chỉ định liệu Python có in cảnh báo trên thiết bị lỗi chuẩn khi bộ đệm đánh thức bị tràn hay không. (Đóng góp bởi Nathaniel J. Smith trong bpo-30050. ) ổ cắmPhương thức mới trả về from __future__ import annotations67 nếu ổ cắm ở chế độ chặn và @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"23 nếu không. (Đóng góp bởi Yury Selivanov trong bpo-32373. ) Chức năng mới đóng bộ mô tả tệp ổ cắm đã qua. Chức năng này nên được sử dụng thay vì để tương thích tốt hơn trên các nền tảng. (Đóng góp bởi Christian Heimes trong bpo-32454. ) Mô-đun hiện hiển thị 416 (Linux 2. 6. 13), 417 (Linux 2. 6. 37) và 418 (Linux 3. 12) hằng số. (Đóng góp bởi Omar Sandoval trong bpo-26273 và Nathaniel J. Smith trong bpo-29728. )Hỗ trợ cho ổ cắm đã được thêm vào để cho phép giao tiếp giữa các máy ảo và máy chủ của chúng. (Đóng góp bởi Cathy Avery trong bpo-27584. ) Ổ cắm hiện tự động phát hiện họ, loại và giao thức từ bộ mô tả tệp theo mặc định. (Đóng góp bởi Christian Heimes trong bpo-28134. ) máy chủ ổ cắm 420 hiện đang đợi cho đến khi tất cả các luồng không phải daemon hoàn tất. 421 hiện đang đợi cho đến khi tất cả các tiến trình con hoàn tấtThêm một thuộc tính lớp 422 mới vào và các lớp. Đặt thuộc tính lớp thành @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"23 để lấy trước 3. 7 hành vi sqlite3hiện hiển thị phương thức khi thư viện SQLite cơ bản ở phiên bản 3. 6. 11 hoặc cao hơn. (Đóng góp bởi Lele Gaifax trong bpo-27645. ) Đối số cơ sở dữ liệu hiện chấp nhận bất kỳ thay vì chỉ một chuỗi. (Đóng góp bởi Anders Lorentsen trong bpo-31843. ) sslMô-đun hiện sử dụng API dựng sẵn của OpenSSL thay vì kiểm tra tên máy chủ hoặc địa chỉ IP. Các giá trị được xác thực trong quá trình bắt tay TLS. Bất kỳ lỗi xác thực chứng chỉ nào bao gồm lỗi kiểm tra tên máy chủ hiện sẽ tăng và hủy bỏ quá trình bắt tay bằng thông báo Cảnh báo TLS thích hợp. Ngoại lệ mới chứa thông tin bổ sung. Xác thực tên máy chủ có thể được tùy chỉnh với. (Đóng góp bởi Christian Heimes trong bpo-31399. ) Ghi chú Kiểm tra tên máy chủ được cải thiện yêu cầu triển khai libssl tương thích với OpenSSL 1. 0. 2 hoặc 1. 1. Do đó, OpenSSL 0. 9. 8 và 1. 0. 1 không còn được hỗ trợ (xem để biết thêm chi tiết). Mô-đun ssl hầu như tương thích với LibreSSL 2. 7. 2 và mới hơn Mô-đun 429 không còn gửi địa chỉ IP trong tiện ích mở rộng SNI TLS. (Đóng góp bởi Christian Heimes trong bpo-32185. )không còn hỗ trợ một phần ký tự đại diện như 435. (Đóng góp bởi Mandeep Singh trong bpo-23033 và Christian Heimes trong bpo-31399. )Lựa chọn bộ mật mã mặc định của mô-đun 429 hiện sử dụng cách tiếp cận danh sách đen thay vì danh sách trắng được mã hóa cứng. Python không còn kích hoạt lại mật mã đã bị chặn bởi các bản cập nhật bảo mật OpenSSL. Lựa chọn bộ mật mã mặc định có thể được cấu hình tại thời điểm biên dịch. (Đóng góp bởi Christian Heimes trong bpo-31429. )Xác thực chứng chỉ máy chủ chứa tên miền quốc tế hóa (IDN) hiện được hỗ trợ. Là một phần của thay đổi này, thuộc tính hiện lưu trữ tên máy chủ dự kiến ở dạng nhãn A ( 438), thay vì dạng nhãn U ( 439). (Đóng góp bởi Nathaniel J. Smith và Christian Heimes trong bpo-28414. )Mô-đun 429 có hỗ trợ sơ bộ và thử nghiệm cho TLS 1. 3 và OpenSSL 1. 1. 1. Tại thời điểm Python 3. 7. 0 phát hành, OpenSSL 1. 1. 1 vẫn đang được phát triển và TLS 1. 3 vẫn chưa được hoàn thiện. TLS 1. 3 bắt tay và giao thức hoạt động hơi khác so với TLS 1. 2 trở về trước, xem. (Được đóng góp bởi Christian Heimes trong bpo-32947, bpo-20995, bpo-29136, bpo-30622 và bpo-33618)và không còn có một nhà xây dựng công khai. Khởi tạo trực tiếp chưa bao giờ là một tính năng được ghi lại và hỗ trợ. Các thể hiện phải được tạo bằng các phương thức và. (Đóng góp bởi Christian Heimes trong bpo-32951) OpenSSL 1. 1 API để đặt phiên bản giao thức TLS tối thiểu và tối đa có sẵn dưới dạng và. Các giao thức được hỗ trợ được biểu thị bằng một số cờ mới, chẳng hạn như. (Đóng góp bởi Christian Heimes trong bpo-32609. ) sợi dâybây giờ cho phép bạn tùy ý sửa đổi mẫu biểu thức chính quy cho các trình giữ chỗ có dấu ngoặc và trình giữ chỗ không có dấu ngoặc một cách riêng biệt. (Đóng góp bởi Barry Warsaw trong bpo-1198569. ) quy trình conHàm chấp nhận đối số từ khóa capt_output mới. Khi đúng, thiết bị xuất chuẩn và thiết bị xuất chuẩn sẽ được ghi lại. Điều này tương đương với việc truyền các đối số stdout và stderr. (Đóng góp bởi Bo Bayles trong bpo-32102. ) Hàm 452 và hàm tạo hiện chấp nhận đối số từ khóa văn bản làm bí danh cho universal_newlines. (Đóng góp bởi Andrew Clegg trong bpo-31756. )Trên Windows, mặc định cho close_fds đã được thay đổi từ @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"23 thành from __future__ import annotations67 khi chuyển hướng các núm điều khiển tiêu chuẩn. Giờ đây, có thể đặt close_fds thành true khi chuyển hướng các tay cầm tiêu chuẩn. Nhìn thấy. Điều này có nghĩa là close_fds hiện được mặc định là from __future__ import annotations67 trên tất cả các nền tảng được hỗ trợ. (Đóng góp bởi Segev Finer trong bpo-19764. ) Mô-đun quy trình con giờ đây duyên dáng hơn khi xử lý trong , hoặc trong trình quản lý ngữ cảnh. Bây giờ nó đợi một khoảng thời gian ngắn để đứa trẻ thoát ra, trước khi tiếp tục xử lý ngoại lệ 458. (Đóng góp bởi Gregory P. Smith trong bpo-25942. )hệ thốngHàm hook mới được gọi bởi hàm tích hợp. (Đóng góp bởi Barry Warsaw trong bpo-31353. ) Trên Android, phiên bản mới trả về phiên bản API Android thời gian xây dựng. (Đóng góp bởi Victor Stinner trong bpo-28740. ) Hàm mới trả về độ sâu theo dõi nguồn gốc coroutine hiện tại, như được đặt bởi hàm mới. đã được chuyển đổi để sử dụng API mới này thay vì 469 không dùng nữa. (Đóng góp bởi Nathaniel J. Smith trong bpo-32591. )thời gianPEP 564 bổ sung sáu chức năng mới với độ phân giải nano giây cho mô-đun Số nhận dạng đồng hồ mới đã được thêm vào
Các chức năng mới và có thể được sử dụng để đo thời gian CPU trên mỗi luồng. (Đóng góp bởi Antoine Pitrou trong bpo-32025. ) Hàm mới trả về ID đồng hồ của đồng hồ thời gian CPU dành riêng cho luồng tkinterHiện đã có lớp mới. (Đóng góp bởi Alan Moore trong bpo-32585. ) theo dõihoạt động giống như truy vết thông thường hơn, sắp xếp các khung từ cũ nhất đến gần đây nhất. hiện chấp nhận giới hạn âm, cắt bớt kết quả thành khung hình cũ nhất của 487. Để có được hành vi cũ, hãy sử dụng đối số most_recent_first mới cho 486. (Đóng góp bởi Jesse Bakker trong bpo-32121. )các loạiCác lớp , , và mới hiện có sẵn. (Đóng góp bởi Manuel Krebber và Guido van Rossum trong bpo-29377, và Serhiy Storchaka trong bpo-32265. ) Chức năng mới tự động giải quyết các mục MRO theo quy định của PEP 560. (Đóng góp bởi Ivan Levkivskyi trong bpo-32717. ) unicodedataCơ sở dữ liệu nội bộ đã được nâng cấp để sử dụng Unicode 11. (Đóng góp bởi Benjamin Peterson. ) đơn vị nhấtTùy chọn dòng lệnh 495 mới cho phép lọc các bài kiểm tra theo chuỗi con tên hoặc mẫu giống như hệ vỏ Unix. Ví dụ, 496 chạy 497, 498, nhưng không chạy 499. (Đóng góp bởi Jonas Haag trong bpo-32071. )đơn vị nhất. chế nhạoCác thuộc tính bây giờ bảo toàn danh tính của chúng khi chúng hoặc. (Đóng góp bởi Serhiy Storchaka trong bpo-20804. ) Chức năng mới cho phép niêm phong các phiên bản, điều này sẽ không cho phép tạo thêm các mô phỏng thuộc tính. Con dấu được áp dụng đệ quy cho tất cả các thuộc tính mà chính chúng là giả. (Đóng góp bởi Mario Corchero trong bpo-30541. ) urllib. phân tích cú phápđã được cập nhật từ RFC 2396 lên RFC 3986, thêm 006 vào tập hợp các ký tự không bao giờ được trích dẫn theo mặc định. (Đóng góp bởi Christian Theune và Ratnadeep Debnath trong bpo-16285. )ưuHàm hiện chấp nhận một đối số từ khóa backtick tùy chọn. Khi nó đúng, số 0 được biểu thị bằng from __future__ import annotations90 thay vì khoảng trắng. (Đóng góp bởi Xiang Zhang trong bpo-30103. ) uuidThuộc tính mới chuyển tiếp thông tin từ nền tảng về việc liệu các UUID được tạo có được tạo bằng phương pháp an toàn đa xử lý hay không. (Đóng góp bởi Barry Warsaw trong bpo-22807. ) hiện thích các địa chỉ MAC được quản lý phổ biến hơn các địa chỉ MAC được quản lý cục bộ. Điều này đảm bảo tốt hơn cho tính duy nhất toàn cầu của UUID được trả về từ. Nếu chỉ có địa chỉ MAC được quản lý cục bộ, địa chỉ đầu tiên được tìm thấy sẽ được trả về. (Đóng góp bởi Barry Warsaw trong bpo-32107. ) cảnh báoViệc khởi tạo các bộ lọc cảnh báo mặc định đã thay đổi như sau
(Đóng góp bởi Nick Coghlan và Victor Stinner trong bpo-20361, bpo-32043 và bpo-32230. ) Cảnh báo ngừng sử dụng một lần nữa được hiển thị theo mặc định trong tập lệnh một tệp và tại dấu nhắc tương tác. Xem để biết chi tiết. (Nick Coghlan đóng góp trong bpo-31975. ) xml. cây etreecác vị từ trong các phương pháp 023 giờ đây có thể so sánh văn bản của nút hiện tại với 024, không chỉ văn bản ở trẻ em. Vị ngữ cũng cho phép thêm khoảng trắng để dễ đọc hơn. (Đóng góp bởi Stefan Behnel trong bpo-31648. )xmlrpc. người phục vụ 025 hiện có thể được sử dụng làm trang trí. (Đóng góp bởi Xiang Zhang trong bpo-7769. )ứng dụng zipChức năng hiện chấp nhận đối số bộ lọc tùy chọn để cho phép người dùng chọn tệp nào sẽ được đưa vào kho lưu trữ. (Đóng góp bởi Irmen de Jong trong bpo-31072. ) Chức năng bây giờ chấp nhận một đối số nén tùy chọn để tạo một kho lưu trữ nén. Tùy chọn dòng lệnh 028 cũng đã được thêm vào để hỗ trợ nén. (Đóng góp bởi Zhiming Wang trong bpo-31638. )zipfilehiện chấp nhận tham số nénlevel mới để kiểm soát mức độ nén. (Đóng góp bởi Bo Bayles trong bpo-21417. ) Các thư mục con trong kho lưu trữ do 029 tạo hiện được lưu trữ theo thứ tự bảng chữ cái. (Đóng góp bởi Bernhard M. Wiedemann trong bpo-30693. )Thay đổi API CAPI mới cho lưu trữ cục bộ theo luồng đã được triển khai. Xem để có cái nhìn tổng quan và tham khảo đầy đủ. (Contributed by Masayuki Yamamoto in bpo-25658. ) Chức năng mới cho thấy một số Hàm mới trả về mô-đun đã nhập trước đó với tên đã cho. (Đóng góp bởi Eric Snow trong bpo-28411. ) Macro 032 mới giúp giảm bớt việc viết các hàm so sánh phong phú. (Đóng góp bởi Petr Victorin trong bpo-23699. )Macro mới có thể được sử dụng để đánh dấu các đường dẫn mã không thể truy cập. (Đóng góp bởi Barry Warsaw trong bpo-31338. ) Bây giờ hiển thị API C thông qua chức năng mới và. (Đóng góp bởi Victor Stinner trong bpo-30054. ) Có thể sử dụng các điểm đánh dấu tĩnh 037 và 038 mới để theo dõi quá trình nhập mô-đun. (Đóng góp bởi Christian Heimes trong bpo-31574. )Các trường 039 và 040 của cấu trúc , , , và 045 hiện thuộc loại 046 thay vì 047. (Đóng góp bởi Serhiy Storchaka trong bpo-28761. )Kết quả của và bây giờ thuộc loại 046 thay vì 047. (Đóng góp bởi Serhiy Storchaka trong bpo-28769. )Kết quả của , và bây giờ luôn là một danh sách, thay vì một danh sách hoặc một bộ. (Đóng góp bởi Oren Milman trong bpo-28280. ) Đã thêm chức năng và. (Đóng góp bởi Serhiy Storchaka trong bpo-27867. ) không được dùng để ủng hộ các chức năng mới và. (Đóng góp bởi Antoine Pitrou trong bpo-16500. ) Đĩa đơn 061 là một phần của API công khai đã bị xóa vì các thành viên của nó không bao giờ bị xóa có thể gây ra lỗi phân tách trong quá trình hoàn thiện trình thông dịch. Được đóng góp bởi Xavier de Gaye trong bpo-22898 và bpo-30697Đã thêm hỗ trợ API C cho múi giờ với hàm tạo múi giờ và truy cập vào đơn vị UTC với. Được đóng góp bởi Paul Ganssle trong bpo-10381 Loại kết quả của 065 và 066 và tham số id của đã thay đổi từ long thành . (Đóng góp bởi Serhiy Storchaka trong bpo-6532. ) long. (Contributed by Serhiy Storchaka in bpo-6532.)hiện tăng a nếu đối số thứ hai là 070 và chuỗi wchar_t* chứa ký tự null. (Đóng góp bởi Serhiy Storchaka trong bpo-30708. )Các thay đổi đối với trình tự khởi động và quản lý bộ cấp phát bộ nhớ động có nghĩa là yêu cầu gọi trước khi gọi hầu hết các chức năng C API được lập thành tài liệu dài hiện được phụ thuộc nhiều hơn và việc không tuân thủ yêu cầu này có thể dẫn đến lỗi phân tách trong các ứng dụng nhúng. Xem phần trong tài liệu này và phần trong tài liệu C API để biết thêm chi tiết Cái mới trả về ID duy nhất cho một trình thông dịch nhất định. (Đóng góp bởi Eric Snow trong bpo-29102. ) , bây giờ hãy sử dụng mã hóa UTF-8 khi được bật. (Đóng góp bởi Victor Stinner trong bpo-29240. ) và bây giờ sử dụng mã hóa ngôn ngữ hiện tại cho trình xử lý lỗi @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"0. (Đóng góp bởi Victor Stinner trong bpo-29240. ) Các tham số bắt đầu và kết thúc của hiện được điều chỉnh để hoạt động giống như các lát chuỗi. (Đóng góp bởi Xiang Zhang trong bpo-28822. ) Xây dựng thay đổiHỗ trợ xây dựng 079 đã bị xóa. Mô-đun hiện luôn có sẵn. (Đóng góp bởi Antoine Pitrou trong bpo-31370. )Bản sao đầy đủ của libffi không còn được đóng gói để sử dụng khi xây dựng mô-đun trên các nền tảng UNIX không phải OSX. Cần có một bản sao libffi đã cài đặt khi xây dựng 081 trên các nền tảng như vậy. (Đóng góp bởi Zachary Ware trong bpo-27979. )Quá trình xây dựng Windows không còn phụ thuộc vào Subversion để lấy các nguồn bên ngoài, thay vào đó, một tập lệnh Python được sử dụng để tải xuống các tệp zip từ GitHub. Nếu con trăn 3. 6 không được tìm thấy trên hệ thống (thông qua 083), NuGet được sử dụng để tải xuống bản sao Python 32 bit cho mục đích này. (Đóng góp bởi Zachary Ware trong bpo-30450. )Mô-đun yêu cầu OpenSSL 1. 0. 2 hoặc 1. 1 libssl tương thích. OpenSSL 1. 0. 1 đã hết tuổi thọ vào ngày 31-12-2016 và không còn được hỗ trợ nữa. LibreSSL tạm thời cũng không được hỗ trợ. LibreSSL phát hành đến phiên bản 2. 6. 4 thiếu yêu cầu OpenSSL 1. 0. 2 API tối ưu hóaChi phí gọi nhiều phương thức của các lớp thư viện tiêu chuẩn khác nhau được triển khai trong C đã được giảm đáng kể bằng cách chuyển nhiều mã hơn để sử dụng quy ước 085. (Đóng góp bởi Victor Stinner trong bpo-29300, bpo-29507, bpo-29452 và bpo-29286. )Các tối ưu hóa khác nhau đã giảm 10% thời gian khởi động Python trên Linux và tới 30% trên macOS. (Đóng góp bởi Victor Stinner, INADA Naoki trong bpo-29585, và Ivan Levkivskyi trong bpo-31333. ) Các cuộc gọi phương thức hiện nhanh hơn tới 20% do thay đổi mã byte để tránh tạo các phiên bản phương thức bị ràng buộc. (Đóng góp bởi Yury Selivanov và INADA Naoki trong bpo-26110. ) Mô-đun đã nhận được một số tối ưu hóa đáng chú ý cho các chức năng thường được sử dụng
Do đó, thời gian nhập của đã giảm đi 7 lần và nhiều thao tác nhập giờ đây nhanh hơn. (Đóng góp bởi Ivan Levkivskyi trong bpo-32226. ) và đã được tối ưu hóa cho các trường hợp phổ biến để nhanh hơn tới 40-75%. (Đóng góp bởi Elliot Gorokhovsky trong bpo-28685. ) bây giờ lên đến 5. nhanh gấp 5 lần. (Đóng góp bởi Yury Selivanov trong bpo-31179. ) và bây giờ nhanh hơn khoảng 4 lần khi không tìm thấy tên và obj không ghi đè hoặc. (Đóng góp bởi INADA Naoki trong bpo-32544. ) Tìm kiếm một số ký tự Unicode nhất định (chẳng hạn như chữ viết hoa của Ukraina “Є”) trong một chuỗi chậm hơn tới 25 lần so với tìm kiếm các ký tự khác. Nó bây giờ chỉ chậm hơn 3 lần trong trường hợp xấu nhất. (Đóng góp bởi Serhiy Storchaka trong bpo-24821. ) Nhà máy đã được triển khai lại để tạo ra các bộ dữ liệu được đặt tên nhanh hơn từ 4 đến 6 lần. (Được đóng góp bởi Jelle Zijlstra với những cải tiến hơn nữa của INADA Naoki, Serhiy Storchaka và Raymond Hettinger trong bpo-28638. ) 7000 và 7001 hiện nhanh hơn tới 30% trong trường hợp thông thường. (Đóng góp bởi Paul Ganssle trong bpo-32403. )Chức năng này hiện nhanh hơn tới 2 lần nhờ sử dụng. (Đóng góp bởi Serhiy Storchaka trong bpo-25996. ) Tốc độ của chức năng đã được cải thiện 20–40% nhờ sử dụng chức năng. (Đóng góp bởi Serhiy Storchaka trong bpo-28564. ) Tối ưu hóa kết hợp không phân biệt chữ hoa chữ thường và tìm kiếm. Tìm kiếm một số mẫu giờ đây có thể nhanh hơn tới 20 lần. (Đóng góp bởi Serhiy Storchaka trong bpo-30285. ) bây giờ chuyển đổi tham số 7008 thành đối tượng int nếu nó là 7009. Bây giờ nó nhanh như Python 3. 5 và nhanh hơn Python 3. 6 khoảng 10% tùy thuộc vào mẫu. (Đóng góp bởi INADA Naoki trong bpo-31671. )Các phương thức của các lớp và có thể nhanh hơn khoảng 10% khi tải nặng. (Đóng góp bởi Giampaolo Rodola’ trong bpo-30014) Việc gấp liên tục đã được chuyển từ trình tối ưu hóa lỗ nhìn trộm sang trình tối ưu hóa AST mới, có thể thực hiện tối ưu hóa một cách nhất quán hơn. (Đóng góp bởi Eugene Toder và INADA Naoki trong bpo-29469 và bpo-11549. ) Hầu hết các hàm và phương thức trong đã được viết lại bằng C. Điều này làm cho việc tạo các lớp cơ sở trừu tượng và gọi và trên chúng 1. nhanh gấp 5 lần. Điều này cũng giảm tới 10% thời gian khởi động Python. (Đóng góp bởi Ivan Levkivskyi và INADA Naoki trong bpo-31333) Cải thiện tốc độ đáng kể đối với các hàm tạo thay thế cho và bằng cách sử dụng các hàm tạo đường dẫn nhanh khi không xây dựng các lớp con. (Đóng góp bởi Paul Ganssle trong bpo-32403) Tốc độ so sánh các phiên bản đã được cải thiện đáng kể trong một số trường hợp nhất định. Hiện tại nó nhanh hơn từ 10 lần đến 70 lần khi so sánh các mảng chứa các giá trị có cùng kiểu số nguyên. (Đóng góp bởi Adrian Wielgosik trong bpo-24700. ) Các chức năng và hiện sử dụng triển khai thư viện C (nhanh hơn) trên hầu hết các nền tảng. (Đóng góp bởi Serhiy Storchaka trong bpo-26121. ) Các thay đổi triển khai CPython khác
Hành vi Python không dùng nữaCác biểu thức lợi nhuận (cả hai mệnh đề 7037 và 7038) hiện không được dùng trong các biểu thức hiểu và trình tạo (ngoài biểu thức lặp trong mệnh đề 7039 ngoài cùng bên trái). Điều này đảm bảo rằng khả năng hiểu luôn trả về ngay một vùng chứa thuộc loại thích hợp (thay vì có khả năng trả về một đối tượng), trong khi các biểu thức trình tạo sẽ không cố xen kẽ đầu ra ẩn của chúng với đầu ra từ bất kỳ biểu thức năng suất rõ ràng nào. Trong Trăn 3. 7, các biểu thức như vậy phát ra khi được biên dịch, trong Python 3. 8 đây sẽ là một. (Đóng góp bởi Serhiy Storchaka trong bpo-10544. )Việc trả về một lớp con của from không được dùng nữa và sẽ là một lỗi trong các phiên bản Python trong tương lai. Điều này làm cho 7044 phù hợp với và. (Đóng góp bởi Serhiy Storchaka trong bpo-28894. )Các mô-đun, hàm và phương thức Python không dùng nữaaifc 7047 không được dùng nữa và sẽ bị xóa trong Python 3. 9. sử dụng thay thế. (Đóng góp bởi Brian Curtin trong bpo-31985. )không đồng bộHỗ trợ cho các phiên bản 76-ing trực tiếp và các nguyên mẫu đồng bộ hóa asyncio khác đã không còn được dùng nữa. Trình quản lý ngữ cảnh không đồng bộ phải được sử dụng để lấy và giải phóng tài nguyên đồng bộ hóa. (Đóng góp bởi Andrew Svetlov trong bpo-32253. )Các phương thức 7051 và 7052 không được dùng nữa. (Đóng góp bởi Andrew Svetlov trong bpo-32250. )bộ sưu tậpTrong Trăn 3. 8, các lớp cơ sở trừu tượng trong sẽ không còn được hiển thị trong mô-đun thông thường. Điều này sẽ giúp tạo ra sự phân biệt rõ ràng hơn giữa các lớp cụ thể và các lớp cơ sở trừu tượng. (Đóng góp bởi Serhiy Storchaka trong bpo-25988. ) dbmhiện hỗ trợ đọc các tệp chỉ đọc và không còn ghi tệp chỉ mục khi nó không được thay đổi. Một cảnh báo không dùng nữa hiện được đưa ra nếu tệp chỉ mục bị thiếu và được tạo lại ở chế độ 7056 và 7057 (đây sẽ là một lỗi trong các bản phát hành Python trong tương lai). (Đóng góp bởi Serhiy Storchaka trong bpo-28847. )liệt kêTrong Trăn 3. 8, việc cố gắng kiểm tra các đối tượng không phải Enum trong lớp @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"15 sẽ làm tăng (e. g. @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"19); . g. @dataclass class Point: x: float y: float z: float = 0.0 p = Point(1.5, 2.5) print(p) # produces "Point(x=1.5, y=2.5, z=0.0)"22); . (Đóng góp bởi Ethan Furman trong bpo-33217. ) lấy văn bảnViệc sử dụng giá trị không phải là số nguyên để chọn dạng số nhiều trong hiện không được dùng nữa. Nó không bao giờ hoạt động chính xác. (Đóng góp bởi Serhiy Storchaka trong bpo-28692. ) nhập khẩuCả hai phương thức (được thay thế bằng ) và (được thay thế bằng ) đều không được dùng trong Python 3. 4 bây giờ phát ra. (Đóng góp bởi Matthias Bussonnier trong bpo-29576) ABC đã không còn được dùng để ủng hộ from __future__ import annotations28 miền địa phươngđã không được dùng nữa, thay vào đó hãy sử dụng. (Đóng góp bởi Garvit trong bpo-10379. ) macpath 7075 hiện không được dùng nữa và sẽ bị xóa trong Python 3. 8. (Chi Hsuan Yen đóng góp trong bpo-9850. )xâu chuỗi 7076 và 7077 không được dùng nữa. Không thể xây dựng Python với luồng bị vô hiệu hóa. sử dụng thay thế. (Đóng góp bởi Antoine Pitrou trong bpo-31370. )ổ cắmViệc cắt bớt giá trị đối số im lặng trong và đã không được dùng nữa. Trong các phiên bản Python trong tương lai, nếu đối số được truyền lớn hơn 16 bit, một ngoại lệ sẽ được đưa ra. (Đóng góp bởi Oren Milman trong bpo-28332. ) sslkhông được dùng nữa. sử dụng thay thế. (Đóng góp bởi Christian Heimes trong bpo-28124. ) sunau 7083 không được dùng nữa và sẽ bị xóa trong Python 3. 9. sử dụng thay thế. (Đóng góp bởi Brian Curtin trong bpo-31985. )hệ thốngKhông dùng nữa 469 và 7086Hàm 7087 không có giấy tờ đã không được dùng nữa và sẽ bị xóa trong phiên bản Python trong tương lai. (Đóng góp bởi Victor Stinner trong bpo-28799. )sóng 7088 không được dùng nữa và sẽ bị xóa trong Python 3. 9. sử dụng thay thế. (Đóng góp bởi Brian Curtin trong bpo-31985. )Các chức năng và loại API C không dùng nữaHàm không được dùng nữa và được thay thế bằng macro nếu 7091 không được đặt hoặc được đặt thành giá trị trong phạm vi từ 7092 đến 7093 (không bao gồm) hoặc là từ 7094 trở lên. (Đóng góp bởi Serhiy Storchaka trong bpo-27867. )đã bị phản đối. Sử dụng , hoặc thay vào đó. (Đóng góp bởi Antoine Pitrou trong bpo-16500. ) Loại bỏ hỗ trợ nền tảng
Loại bỏ API và tính năngCác tính năng và API sau đã bị xóa khỏi Python 3. 7
Loại bỏ mô-đunMô-đun 7642 đã bị xóa. Nó không bao giờ được bật theo mặc định, không bao giờ hoạt động chính xác trên x86-64 và nó đã thay đổi Python ABI theo cách gây ra sự cố không mong muốn cho các tiện ích mở rộng C. (Đóng góp bởi Nathaniel J. Smith trong bpo-29137. )Thay đổi chỉ dành cho WindowsTrình khởi chạy python, (py. exe), có thể chấp nhận các trình xác định 32 & 64 bit mà không cần phải chỉ định phiên bản phụ. Vì vậy, 7643 và 7644 trở thành hợp lệ cũng như 7645, cả -m-64 và -m. các biểu mẫu n-64 hiện được chấp nhận để buộc python 64 bit ngay cả khi 32 bit sẽ được sử dụng. Nếu phiên bản được chỉ định không có sẵn py. exe sẽ báo lỗi khi thoát. (Đóng góp bởi Steve Barnes trong bpo-30291. )Trình khởi chạy có thể được chạy dưới dạng 7646 để tạo danh sách các trăn đã cài đặt, với mặc định được đánh dấu bằng dấu hoa thị. Chạy 7647 sẽ bao gồm các đường dẫn. Nếu py được chạy với một trình xác định phiên bản không thể khớp, nó cũng sẽ in danh sách dạng ngắn của các trình xác định có sẵn. (Đóng góp bởi Steve Barnes trong bpo-30362. )Chuyển sang Python 3. 7Phần này liệt kê các thay đổi được mô tả trước đây và các bản sửa lỗi khác có thể yêu cầu thay đổi mã của bạn Thay đổi trong hành vi Python
Các thay đổi trong API Python
Những thay đổi trong API CHàm được coi là không an toàn đối với các chuỗi có thể thay đổi kích thước. Nếu các chỉ số của lát cắt không phải là phiên bản của , mà là các đối tượng triển khai phương thức 7862, thì chuỗi có thể được thay đổi kích thước sau khi chuyển độ dài của nó cho 7090. Điều này có thể dẫn đến việc trả về các chỉ số nằm ngoài độ dài của chuỗi. Để tránh các sự cố có thể xảy ra, hãy sử dụng các chức năng mới và. (Đóng góp bởi Serhiy Storchaka trong bpo-27867. )Thay đổi mã byte CPythonCó hai opcode mới. và 7867. (Đóng góp bởi Yury Selivanov và INADA Naoki trong bpo-26110. )Opcode 7868 đã bị xóa. (Đóng góp bởi Mark Shannon trong bpo-32550. )Thay đổi chỉ dành cho WindowsTệp được sử dụng để ghi đè hiện có tên là 7870 thay vì 7871. Xem để biết thêm thông tin. (Đóng góp bởi Steve Dower trong bpo-28137. )Các thay đổi triển khai CPython khácĐể chuẩn bị cho những thay đổi tiềm năng trong tương lai đối với API khởi tạo thời gian chạy CPython công khai (xem PEP 432 để biết bản nháp ban đầu, nhưng hơi lỗi thời), logic quản lý cấu hình và khởi động nội bộ của CPython đã được tái cấu trúc đáng kể. Mặc dù các bản cập nhật này nhằm mục đích hoàn toàn minh bạch đối với cả ứng dụng nhúng và người dùng CPython CLI thông thường, nhưng chúng được đề cập ở đây vì quá trình tái cấu trúc thay đổi thứ tự bên trong của các hoạt động khác nhau trong quá trình khởi động trình thông dịch và do đó có thể phát hiện ra các lỗi tiềm ẩn trước đó. . (Ban đầu do Nick Coghlan và Eric Snow đóng góp như một phần của bpo-22257, và được cập nhật thêm bởi Nick, Eric và Victor Stinner trong một số số báo khác). Một số chi tiết đã biết bị ảnh hưởng
Do những thay đổi trong cách định cấu hình bộ lọc cảnh báo mặc định, việc đặt giá trị lớn hơn một không còn đủ để gửi cả thông báo và chuyển đổi chúng thành ngoại lệ. Thay vào đó, cờ phải được đặt (để khiến cảnh báo được phát ra ngay từ đầu) và bộ lọc cảnh báo rõ ràng 7878 được thêm vào để chuyển chúng thành ngoại lệDo sự thay đổi trong cách trình biên dịch do DocStrings xử lý, sự ngầm 7879 trong một cơ thể chức năng chỉ bao gồm một tài liệu hiện được đánh dấu là xảy ra trên cùng một dòng với tài liệu, không phải trên đường tiêu đề của chức năngTrạng thái ngoại lệ hiện tại đã được chuyển từ đối tượng khung sang đồng thường trình. Điều này đã đơn giản hóa trình thông dịch và sửa một số lỗi khó hiểu do hoán đổi trạng thái ngoại lệ khi vào hoặc thoát khỏi trình tạo. (Đóng góp bởi Mark Shannon trong bpo-25612. ) Những thay đổi đáng chú ý trong Python 3. 7. 1bắt đầu trong 3. 7. 1, giờ đây luôn đọc và tôn trọng tất cả các cài đặt môi trường giống như (trong các phiên bản Python trước đó, nó tôn trọng một tập hợp con không xác định của các biến môi trường đó, trong khi ở Python 3. 7. 0 nó không đọc bất kỳ trong số chúng do bpo-34247). Nếu hành vi này là không mong muốn, hãy đặt thành 1 trước khi gọi Trong 3. 7. 1 API C cho Biến ngữ cảnh để sử dụng con trỏ. Xem thêm bpo-34762 Trong 3. 7. 1 mô-đun hiện ngầm phát ra mã thông báo 7886 khi được cung cấp đầu vào không có dòng mới ở cuối. Hành vi này hiện khớp với những gì mã thông báo C thực hiện trong nội bộ. (Đóng góp bởi Ammar Askar trong bpo-33899. )Những thay đổi đáng chú ý trong Python 3. 7. 2Trong 3. 7. 2, trên Windows không còn sao chép các tệp nhị phân gốc mà thay vào đó tạo các tập lệnh chuyển hướng có tên là 7888 và 7889. Điều này giải quyết một vấn đề đã tồn tại từ lâu trong đó tất cả các môi trường ảo sẽ phải được nâng cấp hoặc tạo lại với mỗi bản cập nhật Python. Tuy nhiên, lưu ý rằng bản phát hành này vẫn sẽ yêu cầu giải trí môi trường ảo để nhận tập lệnh mớiNhững thay đổi đáng chú ý trong Python 3. 7. 6Do những lo ngại đáng kể về bảo mật, thông sốReuse_address của không còn được hỗ trợ. Điều này là do hành vi của tùy chọn ổ cắm 7891 trong UDP. Để biết thêm chi tiết, hãy xem tài liệu về from __future__ import annotations71. (Đóng góp bởi Kyle Stanley, Antoine Pitrou, và Yury Selivanov trong bpo-37228. ) Những thay đổi đáng chú ý trong Python 3. 7. 10Các phiên bản Python trước đó cho phép sử dụng cả 7893 và 7894 làm dấu tách tham số truy vấn trong và. Do những lo ngại về bảo mật và để phù hợp với các khuyến nghị mới hơn của W3C, điều này đã được thay đổi để chỉ cho phép một khóa phân tách duy nhất, với 7894 làm mặc định. Thay đổi này cũng ảnh hưởng và khi họ sử dụng các chức năng bị ảnh hưởng trong nội bộ. Để biết thêm chi tiết, vui lòng xem tài liệu tương ứng của họ. (Đóng góp bởi Adam Goldschmidt, Senthil Kumaran và Ken Jin trong bpo-42967. )
Tôi có thể thay đổi giá trị I bên trong vòng lặp không?Sử dụng vòng lặp While. Chúng ta không thể trực tiếp tăng/giảm giá trị lặp bên trong phần thân của vòng lặp for , chúng ta có thể sử dụng vòng lặp while cho mục đích này.
Chúng ta có thể thay đổi tên biến trong vòng lặp không?Bạn không thể thay đổi tên biến . Những gì bạn có thể muốn làm là tạo các giá trị mới với tên mới mỗi lần thông qua vòng lặp.
Bạn có thể sửa đổi các vòng lặp không?Bạn có thể sửa đổi biến vòng lặp trong vòng lặp for , vấn đề là vòng lặp for trong Python không giống như vòng lặp for "kiểu cũ" trong e. g. Java, nhưng giống như các vòng lặp "kiểu mới" cho mỗi vòng lặp. Trong Python, cho tôi trong phạm vi (0, 10). không hoạt động như for (int i = 0; i < 10; i++) { , mà giống như for (int i. int mới[] {0, 1,. , 10}}.
Bạn có thể gán biến cho vòng lặp for không?Thường thì biến điều khiển vòng lặp for chỉ cần thiết cho mục đích của vòng lặp và không được sử dụng ở nơi khác. Trong trường hợp này, có thể khai báo biến bên trong phần khởi tạo của for . |