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ất

Chọ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ất

Chọ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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ến

cú pháp

while (condition) {
  // statement(s)
}

Thông số

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
64. một biểu thức boolean có giá trị là
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
65 hoặc
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i

Và đây là cách tiếp cận tương tự bằng cách sử dụng vòng lặp for

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i

Để 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ật

Các tính năng cú pháp mới

  • , hoãn đánh giá các chú thích loại

Thay đổi cú pháp không tương thích ngược

  • và bây giờ là từ khóa dành riêng

Mô-đun thư viện mới

  • :

  • :

Các tính năng tích hợp mới

  • , chức năng mới

Cải tiến mô hình dữ liệu Python

  • , tùy chỉnh quyền truy cập vào các thuộc tính mô-đun

  • , hỗ trợ cốt lõi để nhập mô-đun và các loại chung

  • bản chất bảo quản thứ tự chèn của các đối tượng đã được khai báo là một phần chính thức của thông số ngôn ngữ Python

Những cải tiến đáng kể trong thư viện tiêu chuẩn

  • Mô-đun đã nhận được các tính năng mới, quan trọng

  • Mô-đun đã nhận được hỗ trợ cho

Cải tiến triển khai CPython

  • Tránh sử dụng ASCII làm mã hóa văn bản mặc định

    • , ép buộc ngôn ngữ C kế thừa

    • , bắt buộc chế độ thời gian chạy UTF-8

  • , xác định. pyc

  • , xử lý được cải thiện

Cải tiến API C

  • , API C mới cho lưu trữ cục bộ theo luồng

Cải tiến tài liệu

  • , Bản dịch tài liệu Python

  • Bản dịch tài liệu mới. Nhật Bản, Pháp và Hàn Quốc

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ới

PEP 563. Hoãn đánh giá các chú thích

Sự 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

  • chú thích chỉ có thể sử dụng các tên đã có sẵn trong phạm vi hiện tại, nói cách khác, chúng không hỗ trợ bất kỳ loại tham chiếu chuyển tiếp nào;

  • chú thích mã nguồn có ảnh hưởng xấu đến thời gian khởi động của chương trình Python

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ích

PEP được viết và triển khai bởi Łukasz Langa

PEP 538. Ép buộc ngôn ngữ C kế thừa

Mộ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 annotations
6 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 annotations
7), 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-8

PEP đượ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ộc

Tùy chọn dòng lệnh

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
41 mới và biến môi trường có thể được sử dụng để kích hoạt

Khi ở 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 annotations
7), 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à

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
47 hoặc
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
49, đặt
i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
00,

Xem thêm

PEP 540 – Thêm chế độ UTF-8 mới

PEP đượ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 67

Tră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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
67 tích hợp. Theo mặc định, cái sau nhập và sau đó gọi
i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
06, nhưng bằng cách ràng buộc
i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
04 với chức năng bạn chọn,
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
700 để tắt hoàn toàn
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
67 tích hợp

Xem 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ồng

Mặ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 CPython

PEP đượ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ô-đun

Trăn 3. 7 cho phép xác định

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
704 trên các mô-đun hiện cũng được cho phép

Mộ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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
705 và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
706

PEP đượ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ây

PEP đượ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 767

Việ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

  • luôn được hiển thị theo mặc định, được khuyến nghị cho các cảnh báo dành cho người dùng cuối của ứng dụng (e. g. đối với cài đặt cấu hình ứng dụng không dùng nữa)

  • chỉ được hiển thị theo mặc định trong và khi chạy thử nghiệm, được đề xuất cho các cảnh báo dành cho các nhà phát triển Python khác khi việc nâng cấp phiên bản có thể dẫn đến hành vi thay đổi hoặc lỗi

  • chỉ được hiển thị theo mặc định khi chạy thử nghiệm, dành cho trường hợp nâng cấp phiên bản trong tương lai sẽ thay đổi danh mục cảnh báo thành hoặc

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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
767

PEP đượ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 chung

Ban đầ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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
791 và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ửa

Xem thêm

PEP 560 – Hỗ trợ cốt lõi để nhập mô-đun và các loại chung

PEP được viết và triển khai bởi Ivan Levkivskyi

PEP 552. dựa trên hàm băm. tập tin pyc

Theo 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. ,

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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 dung

PEP 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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
795 dựa trên hàm băm khi chạy. Các tệp
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
795 dựa trên hàm băm có thể được tạo bằng hoặc

Các tệp

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
795

Xem để biết thêm thông tin

Xem thêm

PEP 552 – Pyc xác định

PEP được viết và thực hiện bởi Benjamin Peterson

PEP 545. Bản dịch tài liệu Python

PEP 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

  • tiếng Nhật. https. // tài liệu. con trăn. tổ chức/ja/

  • người Pháp. https. // tài liệu. con trăn. tổ chức/fr/

  • Hàn Quốc. https. // tài liệu. con trăn. tổ chức/ko/

Xem thêm

PEP 545 – Bản dịch tài liệu Python

PEP đượ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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ột biểu thức và khả năng hiểu có chứa một mệnh đề là bất hợp pháp trong các biểu thức do sự cố triển khai. Trong Trăn 3. 7 hạn chế này đã được dỡ bỏ

  • Hơn 255 đối số hiện có thể được truyền cho một hàm và một hàm hiện có thể có hơn 255 tham số. (Đóng góp bởi Serhiy Storchaka trong bpo-12844 và bpo-18896. )

  • và bây giờ bỏ qua tất cả khoảng trắng ASCII, không chỉ khoảng trắng. (Đóng góp bởi Robert Xiao trong bpo-28927. )

  • , và đã nhận được hỗ trợ cho phương thức mới, phương thức này có thể được sử dụng để kiểm tra xem một chuỗi hoặc byte chỉ chứa các ký tự ASCII. (Đóng góp bởi INADA Naoki trong bpo-32677. )

  • hiện hiển thị tên mô-đun và đường dẫn mô-đun

    from __future__ import annotations
    
    07 khi
    from __future__ import annotations
    
    08 không thành công. (Đóng góp bởi Matthias Bussonnier trong bpo-29546. )

  • Nhập vòng tròn liên quan đến nhập tuyệt đối với ràng buộc mô hình con với tên hiện được hỗ trợ. (Đóng góp bởi Serhiy Storchaka trong bpo-30024. )

  • from __future__ import annotations
    
    09 bây giờ tương đương với
    from __future__ import annotations
    
    10 thay vì
    from __future__ import annotations
    
    11. (Đóng góp bởi Serhiy Storchaka trong bpo-28974. )

  • Để hỗ trợ tốt hơn việc tạo động các dấu vết ngăn xếp, giờ đây có thể được khởi tạo từ mã Python và thuộc tính

    from __future__ import annotations
    
    13 trên hiện có thể ghi được. (Đóng góp bởi Nathaniel J. Smith trong bpo-30579. )

  • Khi sử dụng công tắc,

    from __future__ import annotations
    
    15 hiện được mở rộng một cách háo hức thành đường dẫn thư mục bắt đầu đầy đủ, thay vì bị bỏ lại dưới dạng thư mục trống (cho phép nhập từ thư mục làm việc hiện tại tại thời điểm nhập xảy ra) (Đóng góp bởi Nick Coghlan trong bpo- . )

  • Tùy chọn

    from __future__ import annotations
    
    17 mới hoặc biến môi trường có thể được sử dụng để hiển thị thời gian nhập từng mô-đun. (Đóng góp bởi Inada Naoki trong bpo-31415. )

Mô-đun mới

ngữ cảnh

Mô-đ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ảnh

PEP được viết và thực hiện bởi Yury Selivanov

lớp dữ liệu

Trì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ệu

PEP được viết và triển khai bởi Eric V. thợ rèn

nhập khẩu. tài nguyên

Mô-đ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 annotations
27 trả về phiên bản
from __future__ import annotations
28 để 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ến

argparse

Phươ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

  • Chức năng mới có thể được sử dụng để chạy một coroutine từ mã đồng bộ bằng cách tự động tạo và hủy vòng lặp sự kiện. (Đóng góp bởi Yury Selivanov trong bpo-32314. )

  • asyncio đã nhận được hỗ trợ cho. , , , và có một tham số ngữ cảnh chỉ từ khóa tùy chọn mới. bây giờ tự động theo dõi bối cảnh của họ. Xem PEP 567 để biết thêm chi tiết. (Đóng góp bởi Yury Selivanov trong bpo-32436. )

  • Chức năng mới đã được thêm dưới dạng lối tắt đến

    from __future__ import annotations
    
    40. (Đóng góp bởi Andrew Svetlov trong bpo-32311. )

  • Phương pháp mới có thể được sử dụng để nâng cấp kết nối hiện có lên TLS. (Đóng góp bởi Yury Selivanov trong bpo-23749. )

  • Phương pháp mới cho phép đọc dữ liệu từ ổ cắm trực tiếp vào bộ đệm được cung cấp để có thể giảm các bản sao dữ liệu. (Đóng góp bởi Antoine Pitrou trong bpo-31819. )

  • Hàm mới trả về phiên bản hiện đang chạy và hàm mới trả về một tập hợp tất cả các phiên bản

    from __future__ import annotations
    
    44 hiện có trong một vòng lặp nhất định. Các phương pháp
    from __future__ import annotations
    
    47 và
    from __future__ import annotations
    
    48 không được dùng nữa. (Đóng góp bởi Andrew Svetlov trong bpo-32250. )

  • Lớp tạm thời mới cho phép triển khai các giao thức phát trực tuyến với điều khiển thủ công đối với bộ đệm nhận. (Đóng góp bởi Yury Selivanov trong bpo-32251. )

  • Hàm mới trả về vòng lặp hiện đang chạy và tăng nếu không có vòng lặp nào đang chạy. Điều này trái ngược với , sẽ tạo ra một vòng lặp sự kiện mới nếu không có vòng lặp nào đang chạy. (Đóng góp bởi Yury Selivanov trong bpo-32269. )

  • Phương pháp coroutine mới cho phép đợi cho đến khi đóng luồng ghi. Phương thức mới có thể được sử dụng để xác định xem người viết có đang đóng hay không. (Đóng góp bởi Andrew Svetlov trong bpo-32391. )

  • Phương thức coroutine mới cho phép gửi tệp bằng cách sử dụng khi có thể. (Đóng góp bởi Andrew Svetlov trong bpo-32410. )

  • Các phương thức mới và

    from __future__ import annotations
    
    58 trả về phiên bản của vòng lặp mà trên đó một tác vụ hoặc một tương lai đã được tạo. cho phép làm tương tự cho các đối tượng. (Được đóng góp bởi Yury Selivanov trong bpo-32415 và Srinivas Reddy Thatiparthy trong bpo-32418. )

  • Giờ đây, có thể kiểm soát cách các trường hợp bắt đầu phân phát. Trước đây, máy chủ sẽ bắt đầu phục vụ ngay khi được tạo. Đối số từ khóa start_serving mới cho and , cũng như và có thể được sử dụng để tách rời quá trình khởi tạo và cung cấp máy chủ. Phương thức mới trả về

    from __future__ import annotations
    
    67 nếu máy chủ đang phục vụ. các đối tượng hiện là trình quản lý bối cảnh không đồng bộ

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    4

    (Đóng góp bởi Yury Selivanov trong bpo-32662. )

  • Các đối tượng gọi lại được trả về bằng cách đạt được phương thức mới trả về dấu thời gian gọi lại theo lịch trình tuyệt đối. (Đóng góp bởi Andrew Svetlov trong bpo-32741. )

  • Phương thức đã nhận được hỗ trợ cho các ổ cắm Unix. (Đóng góp bởi Quentin Dawans trong bpo-31245. )

  • Các phương thức , functions, , , và các biến thể ổ cắm UNIX tương ứng của chúng hiện chấp nhận đối số từ khóa ssl_handshake_timeout. (Đóng góp bởi Neil Aspinall trong bpo-29970. )

  • Phương thức mới trả về

    from __future__ import annotations
    
    67 nếu cuộc gọi lại bị hủy. (Đóng góp bởi Marat Sharafutdinov trong bpo-31943. )

  • Nguồn asyncio đã được chuyển đổi để sử dụng cú pháp /. (Đóng góp bởi Andrew Svetlov trong bpo-32193. )

  • Phương pháp mới có thể được sử dụng để xác định trạng thái đọc của phương tiện giao thông. Ngoài ra, các cuộc gọi đến và bây giờ là idempotent. (Đóng góp bởi Yury Selivanov trong bpo-32356. )

  • Các phương thức vòng lặp chấp nhận đường dẫn ổ cắm hiện hỗ trợ chuyển. (Đóng góp bởi Yury Selivanov trong bpo-32066. )

  • Trong các ổ cắm TCP trên Linux hiện được tạo với cờ

    from __future__ import annotations
    
    85 được đặt theo mặc định. (Đóng góp bởi Yury Selivanov và Victor Stinner trong bpo-27456. )

  • Các ngoại lệ xảy ra trong các tác vụ bị hủy không còn được ghi lại. (Đóng góp bởi Yury Selivanov trong bpo-30508. )

  • Các lớp

    from __future__ import annotations
    
    86 và
    from __future__ import annotations
    
    87 mới. (Đóng góp bởi Yury Selivanov trong bpo-33792. )

Một số API

from __future__ import annotations
0 đã được

nhị phân

Hà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 annotations
90 thay vì khoảng trắng. (Đóng góp bởi Xiang Zhang trong bpo-30103. )

lịch

Lớ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ập

from __future__ import annotations
92 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 annotations
94 mới. (Đóng góp bởi Benjamin Peterson trong bpo-31650. )

đồng thời. tương lai

và 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ảnh

Cá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ơ c

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 đườ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. )

dbm

hiệ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ân

Mô-đ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. )

dis

Hà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ăng

hiệ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. )

gc

Chứ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. )

hmac

Mô-đ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àng

và 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 annotations
14. (Đóng góp bởi Julien Palard trong bpo-31639. )

idlib và IDLE

Nhiề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ẩu

from __future__ import annotations
28 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ề

io

Phươ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ỉ IP

Cá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. )

itertools

hiệ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án

Chứ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âm

Loạ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. )

msilib

Phươ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ành

hiệ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ẫn

Phươ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. )

pdb

bâ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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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. )

pydoc

Má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àng

Lớ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ại

Các cờ và

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ư

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
402,
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
403 hoặc
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ắm

Phương thức mới trả về

from __future__ import annotations
67 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ị

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
416 (Linux 2. 6. 13),
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
417 (Linux 2. 6. 37) và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
420 hiện đang đợi cho đến khi tất cả các luồng không phải daemon hoàn tất.
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
421 hiện đang đợi cho đến khi tất cả các tiến trình con hoàn tất

Thêm một thuộc tính lớp

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

sqlite3

hiệ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. )

ssl

Mô-đ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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ư

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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 (

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
438), thay vì dạng nhãn U (
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
439). (Đóng góp bởi Nathaniel J. Smith và Christian Heimes trong bpo-28414. )

Mô-đun

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ây

bâ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 con

Hà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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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 annotations
67 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 annotations
67 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ệ

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
458. (Đóng góp bởi Gregory P. Smith trong bpo-25942. )

hệ thống

Hà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ì

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
469 không dùng nữa. (Đóng góp bởi Nathaniel J. Smith trong bpo-32591. )

thời gian

PEP 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

  • (Linux). Giống với , ngoại trừ nó cũng bao gồm bất kỳ thời điểm nào mà hệ thống bị treo

  • (FreeBSD, NetBSD và OpenBSD). Bộ hẹn giờ CPU trên mỗi tiến trình có độ phân giải cao

  • (FreeBSD, OpenBSD). Thời gian có giá trị tuyệt đối là thời gian hệ thống đã chạy và không bị treo, cung cấp phép đo thời gian hoạt động chính xác

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

tkinter

Hiện đã có lớp mới. (Đóng góp bởi Alan Moore trong bpo-32585. )

theo dõi

hoạ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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
487. Để có được hành vi cũ, hãy sử dụng đối số most_recent_first mới cho
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
486. (Đóng góp bởi Jesse Bakker trong bpo-32121. )

các loại

Cá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. )

unicodedata

Cơ 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ất

Tùy chọn dòng lệnh

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ụ,
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
496 chạy
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
497,
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
498, nhưng không chạy
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
499. (Đóng góp bởi Jonas Haag trong bpo-32071. )

đơn vị nhất. chế nhạo

Cá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

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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. )

ưu

Hà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 annotations
90 thay vì khoảng trắng. (Đóng góp bởi Xiang Zhang trong bpo-30103. )

uuid

Thuộ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áo

Việc khởi tạo các bộ lọc cảnh báo mặc định đã thay đổi như sau

  • các cảnh báo được bật thông qua các tùy chọn dòng lệnh (bao gồm cả các tùy chọn dành cho CPython và tùy chọn mới dành riêng cho CPython

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    676) luôn được chuyển đến bộ máy cảnh báo thông qua thuộc tính

  • các bộ lọc cảnh báo được bật thông qua dòng lệnh hoặc môi trường hiện có thứ tự ưu tiên sau

    • bộ lọc

      i=1
      for x in $(find tmp -type f);
      do 
         i=$(($i + 1))
         echo $i
      done
      echo $i
      
      016 cho (hoặc
      i=1
      for x in $(find tmp -type f);
      do 
         i=$(($i + 1))
         echo $i
      done
      echo $i
      
      018)

    • bất kỳ bộ lọc nào được chỉ định với tùy chọn

    • bất kỳ bộ lọc nào được chỉ định với biến môi trường

    • bất kỳ bộ lọc cụ thể CPython nào khác (e. g. bộ lọc

      i=1
      for x in $(find tmp -type f);
      do 
         i=$(($i + 1))
         echo $i
      done
      echo $i
      
      021 được thêm cho chế độ
      i=1
      for x in $(find tmp -type f);
      do 
         i=$(($i + 1))
         echo $i
      done
      echo $i
      
      022 mới)

    • bất kỳ bộ lọc ẩn nào được xác định trực tiếp bởi máy móc cảnh báo

  • trong , tất cả các cảnh báo hiện được hiển thị theo mặc định (danh sách bộ lọc ngầm định trống)

(Đó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 etree

các vị từ trong các phương pháp

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
023 giờ đây có thể so sánh văn bản của nút hiện tại với
i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $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ụ

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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 zip

Chứ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

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
028 cũng đã được thêm vào để hỗ trợ nén. (Đóng góp bởi Zhiming Wang trong bpo-31638. )

zipfile

hiệ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

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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 C

API 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

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
037 và
i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
039 và
i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
040 của cấu trúc , , , và
i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
045 hiện thuộc loại
i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
046 thay vì
i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
047. (Đóng góp bởi Serhiy Storchaka trong bpo-28761. )

Kết quả của và bây giờ thuộc loại

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
046 thay vì
i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
065 và
i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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à

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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 đổi

Hỗ trợ xây dựng

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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óa

Chi 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

i=1
for x in $(find tmp -type f);
do 
   i=$(($i + 1))
   echo $i
done
echo $i
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

  • Chức năng đã được triển khai lại trong C để làm cho nó nhanh hơn tới 15 lần. (Đóng góp bởi Yury Selivanov trong bpo-32296. )

  • quản lý gọi lại đã được tối ưu hóa. (Đóng góp bởi Yury Selivanov trong bpo-32348. )

  • hiện nhanh hơn tới 15%. (Đóng góp bởi Yury Selivanov trong bpo-32355. )

  • hiện nhanh hơn tới 2 lần khi đối số độ trễ bằng 0 hoặc âm. (Đóng góp bởi Andrew Svetlov trong bpo-32351. )

  • Chi phí hoạt động của chế độ gỡ lỗi asyncio đã giảm. (Đóng góp bởi Antoine Pitrou trong bpo-31970. )

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. )

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7000 và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ố

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7008 thành đối tượng int nếu nó là
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

  • Trace hook bây giờ có thể từ chối nhận

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7022 và từ chối nhận các sự kiện
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7023 từ trình thông dịch bằng cách đặt các thuộc tính
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7024 và
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7025 mới tương ứng trên khung được theo dõi. (Nick Coghlan đóng góp trong bpo-31344. )

  • Đã sửa một số vấn đề về tính nhất quán với các thuộc tính mô-đun gói không gian tên. Các đối tượng mô-đun không gian tên hiện có một

    from __future__ import annotations
    
    07 đượ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)"
    
    84 (trước đây chưa được đặt) và
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7028 của chúng cũ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)"
    
    84 (trước đây là chuỗi
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7030). Xem bpo-32305. Ngoài ra, đối tượng mô-đun không gian tên
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7031 được đặt thành cùng một giá trị như
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7032 (trước đây, giá trị cũ đượ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)"
    
    84). Xem bpo-32303

  • Từ điển hiện hiển thị theo thứ tự từ vựng mà các biến đã được xác định. Trước đây, thứ tự không được xác định. (Đóng góp bởi Raymond Hettinger trong bpo-32690. )

  • Lệnh

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7036 không còn cố gắng thay đổi các ký tự cuối dòng CR thành CRLF. Điều này khắc phục sự cố tham nhũng với các sdists kết thúc bằng một byte tương đương với CR. (Đóng góp bởi Bo Bayles trong bpo-32304. )

Hành vi Python không dùng nữa

Các biểu thức lợi nhuận (cả hai mệnh đề

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7037 và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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 đề
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ữa

aifc

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7051 và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7052 không được dùng nữa. (Đóng góp bởi Andrew Svetlov trong bpo-32250. )

bộ sưu tập

Trong 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. )

dbm

hiệ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ế độ

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7056 và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ản

Việ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ẩu

Cả 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 annotations
28

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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7076 và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ắm

Việ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. )

ssl

không được dùng nữa. sử dụng thay thế. (Đóng góp bởi Christian Heimes trong bpo-28124. )

sunau

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ống

Không dùng nữa

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
469 và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7086

Hàm

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ữa

Hàm không được dùng nữa và được thay thế bằng macro nếu

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7091 không được đặt hoặc được đặt thành giá trị trong phạm vi từ
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7092 đến
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7093 (không bao gồm) hoặc là từ
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

  • FreeBSD 9 trở lên không còn được hỗ trợ chính thức

  • Để hỗ trợ Unicode đầy đủ, bao gồm cả trong các mô-đun mở rộng, các nền tảng *nix hiện dự kiến ​​sẽ cung cấp ít nhất một trong số

    @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 (ngôn ngữ đầ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)"
    
    3 (ngôn ngữ đầy đủ) hoặc
    @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 (ngôn ngữ chỉ dành cho
    from __future__ import annotations
    
    6) như một giải pháp thay thế cho nền tảng kế thừa dựa trên
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7603

  • mởSSL 0. 9. 8 và 1. 0. 1 không còn được hỗ trợ, có nghĩa là xây dựng CPython 3. 7 có hỗ trợ SSL/TLS trên các nền tảng cũ hơn vẫn sử dụng các phiên bản này yêu cầu các tùy chọn bản dựng tùy chỉnh liên kết với phiên bản OpenSSL mới hơn

    Đáng chú ý, sự cố này ảnh hưởng đến Debian 8 (hay còn gọi là “jessie”) và Ubuntu 14. 04 (còn gọi là “Trusty”) LTS Linux, vì chúng vẫn sử dụng OpenSSL 1. 0. 1 theo mặc định

    Debian 9 (“kéo dài”) và Ubuntu 16. 04 (“xenial”), cũng như các bản phát hành gần đây của các bản phát hành LTS Linux khác (e. g. RHEL/CentOS 7. 5, SLES 12-SP3), sử dụng OpenSSL 1. 0. 2 trở lên và vẫn được hỗ trợ trong cấu hình bản dựng mặc định

    Tệp cấu hình CI riêng của CPython cung cấp một ví dụ về việc sử dụng cơ sở hạ tầng thử nghiệm khả năng tương thích SSL trong bộ thử nghiệm của CPython để xây dựng và liên kết với OpenSSL 1. 1. 0 thay vì một hệ thống lỗi thời được cung cấp OpenSSL

Loại bỏ API và tính năng

Các tính năng và API sau đã bị xóa khỏi Python 3. 7

  • Hàm

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7605 đã bị xóa. Nó được giới thiệu trong Python 2. 3 để tương thích ngược với Python 2. 2 và không được dùng nữa kể từ Python 3. 1

  • Các lối thoát không xác định bao gồm

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7606 và một chữ cái ASCII trong các mẫu thay thế cho không được dùng trong Python 3. 5 và bây giờ sẽ gây ra lỗi

  • Đã xóa hỗ trợ của đối số loại trừ trong. Nó không được dùng nữa trong Python 2. 7 và 3. 2. Thay vào đó hãy sử dụng đối số bộ lọc

  • Hàm

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7609 trong mô-đun
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7610 không được dùng trong Python 3. 1, và hiện đã bị xóa. Sử dụng chức năng thay thế

  • không còn hỗ trợ tham số dài dòng hoặc thuộc tính

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7613 hiển thị mã nguồn được tạo cho lớp tuple được đặt tên. Đây là một phần của tối ưu hóa được thiết kế để tăng tốc độ tạo lớp. (Đượ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. )

  • Hàm , và không còn nhận đối số từ khóa. Đối số đầu tiên của bây giờ chỉ có thể được chuyển dưới dạng đối số vị trí

  • Đã xóa trước đây không dùng nữa trong Python 2. 4 lớp

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7619,
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7620 và
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7621 trong học phần. Các giá trị chính tả trong kết quả của các hàm
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7623 và
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7624 hiện là các giá trị chính tả bình thường. Bạn không còn có thể sử dụng quyền truy cập thuộc tính để truy cập các mục của những từ điển này

  • Hàm

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7625 đã bị xóa. Thay vào đó, hãy sử dụng chức năng này, nó có sẵn trên tất cả các nền tảng kể từ Python 3. 5.
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7627 chỉ là bí danh của
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7628 trên Python 3. 5 và mới hơn

  • không còn xuất các mô-đun và

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7631 dưới dạng
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7632 và
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7633. Thay thế
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7634 bằng
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7635

  • Khởi tạo trực tiếp của và các đối tượng hiện bị cấm. Các hàm tạo không bao giờ được ghi lại, thử nghiệm hoặc thiết kế dưới dạng các hàm tạo công khai. Người dùng được cho là sử dụng hoặc. (Đóng góp bởi Christian Heimes trong bpo-32951. )

  • Lệnh

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7641 không sử dụng đã bị xóa. (Đóng góp bởi Eric N. Vander Weele trong bpo-29218. )

Loại bỏ mô-đun

Mô-đun

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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 Windows

Trì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,

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7643 và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7644 trở thành hợp lệ cũng như
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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. 7

Phầ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

  • và tên hiện là từ khóa dành riêng. Mã sử ​​dụng những tên này làm số nhận dạng giờ đây sẽ tăng. (Đóng góp bởi Jelle Zijlstra trong bpo-30406. )

  • PEP 479 được bật cho tất cả mã trong Python 3. 7, có nghĩa là các ngoại lệ được đưa ra trực tiếp hoặc gián tiếp trong coroutines và bộ tạo được chuyển thành ngoại lệ. (Đóng góp bởi Yury Selivanov trong bpo-32670. )

  • các phương thức không còn có thể được khai báo là không đồng bộ. (Đóng góp bởi Yury Selivanov trong bpo-31709. )

  • Do sơ suất, các phiên bản Python trước đó đã chấp nhận sai cú pháp sau

    i=1
    for x in $(find tmp -type f);
    do 
       i=$(($i + 1))
       echo $i
    done
    echo $i
    
    0

    Trăn 3. 7 hiện tăng chính xác a , vì biểu thức trình tạo luôn cần phải nằm ngay bên trong một tập hợp dấu ngoặc đơn và không thể có dấu phẩy ở hai bên và chỉ có thể bỏ qua dấu ngoặc đơn trong các cuộc gọi. (Đóng góp bởi Serhiy Storchaka trong bpo-32012 và bpo-32023. )

  • Khi sử dụng khóa chuyển, thư mục làm việc ban đầu hiện được thêm vào , thay vì một chuỗi trống (biểu thị động thư mục làm việc hiện tại tại thời điểm mỗi lần nhập). Bất kỳ chương trình nào đang kiểm tra chuỗi trống hoặc dựa vào hành vi trước đó sẽ cần được cập nhật tương ứng (e. g. bằng cách kiểm tra cả

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7657 hoặc
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7658, tùy thuộc vào lý do tại sao mã kiểm tra chuỗi trống ngay từ đầu)

Các thay đổi trong API Python

  • i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    420 hiện đang đợi cho đến khi tất cả các luồng không phải daemon hoàn thành. Đặt thuộc tính lớp
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7660 mới 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 để nhận trước 3. 7 hành vi. (Đóng góp bởi Victor Stinner trong bpo-31233 và bpo-33540. )

  • i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    421 hiện đang đợi cho đến khi tất cả các tiến trình con hoàn tất. Đặt thuộc tính lớp
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    422 mới 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 để nhận trước 3. 7 hành vi. (Đóng góp bởi Victor Stinner trong bpo-31151 và bpo-33540. )

  • Hàm hiện tạm thời đặt ngôn ngữ

    from __future__ import annotations
    
    6 thành giá trị của
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7667 trong một số trường hợp. (Đóng góp bởi Victor Stinner trong bpo-31900. )

  • bây giờ tăng một đường dẫn nếu là một chuỗi. Trước đây một danh sách trống đã được trả lại. (Đóng góp bởi Sanyam Khurana trong bpo-24744. )

  • Đối số chuỗi định dạng cho bây giờ là. Chuyển nó dưới dạng đối số từ khóa không được dùng trong Python 3. 5. (Đóng góp bởi Serhiy Storchaka trong bpo-29193. )

  • Các thuộc tính và của lớp hiện ở chế độ chỉ đọc. Việc gán cho chúng không được dùng trong Python 3. 5. Sử dụng phương pháp để thiết lập chúng. (Đóng góp bởi Serhiy Storchaka trong bpo-29192. )

  • Đố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. Để đặt bit quyền truy cập tệp của họ, bạn có thể đặt ô trước khi gọi

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7677. (Đóng góp bởi Serhiy Storchaka trong bpo-19930. )

  • Loại bây giờ thay vì. (Đóng góp bởi Victor Stinner trong bpo-21071. )

  • bây giờ chấp nhận các đối số mã hóa và lỗi và trả về kết quả tương tự như

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7682. đối với các trường không phải tệp, giá trị được liên kết với khóa là danh sách các chuỗi, không phải byte. (Đóng góp bởi Pierre Quentel trong bpo-29979. )

  • Do những thay đổi nội bộ trong , việc gọi một ổ cắm được tạo bởi các phiên bản Python cũ hơn không được hỗ trợ

  • i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7686 for đã thay đổi thành không bao gồm dấu phẩy ở cuối. Hầu hết các trường hợp ngoại lệ đều bị ảnh hưởng bởi sự thay đổi này. (Đóng góp bởi Serhiy Storchaka trong bpo-30399. )

  • i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7686 for đã thay đổi để bao gồm các đối số từ khóa trong đầu ra. (Đóng góp bởi Utkarsh Upadhyay trong bpo-30302. )

  • Bởi vì hiện được triển khai bằng hàm, onerror trình xử lý do người dùng chỉ định hiện được gọi với đối số đầu tiên là

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7692 thay vì
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7693 khi liệt kê thư mục không thành công

  • Hỗ trợ cho các tập hợp lồng nhau và các thao tác tập hợp trong biểu thức chính quy như trong Tiêu chuẩn kỹ thuật Unicode #18 có thể được thêm vào trong tương lai. Điều này sẽ thay đổi cú pháp. Để tạo điều kiện cho sự thay đổi trong tương lai này, một ý chí sẽ được nêu ra trong các trường hợp mơ hồ trong thời điểm hiện tại. Điều đó bao gồm các bộ bắt đầu bằng một chữ

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7695 hoặc chứa các chuỗi ký tự chữ
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7696,
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7697,
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7698 và
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7699. Để tránh cảnh báo, hãy thoát chúng bằng dấu gạch chéo ngược. (Đóng góp bởi Serhiy Storchaka trong bpo-30349. )

  • Kết quả của việc tách một chuỗi trên một chuỗi có thể khớp với một chuỗi rỗng đã bị thay đổi. Ví dụ: việc tách trên

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7801 giờ đây sẽ không chỉ tách trên các khoảng trắng như trước đây mà còn trên các chuỗi trống trước tất cả các ký tự không phải khoảng trắng và ngay trước khi kết thúc chuỗi. Hành vi trước đó có thể được khôi phục bằng cách thay đổi mẫu thành
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7802. A đã được phát ra cho các mẫu như vậy kể từ Python 3. 5

    Đối với các mẫu phù hợp với cả chuỗi trống và không trống, kết quả tìm kiếm tất cả các kết quả phù hợp cũng có thể bị thay đổi trong các trường hợp khác. Ví dụ: trong chuỗi

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7804, mẫu
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7805 sẽ không chỉ khớp với các chuỗi trống ở vị trí 2 và 3 mà còn cả chuỗi
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7806 ở vị trí 2–3. Để chỉ khớp với các dòng trống, mẫu phải được viết lại thành
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7807

    hiện thay thế các kết quả khớp trống liền kề với kết quả khớp không trống trước đó. Ví dụ:

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7809 hiện trả về
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7810 thay vì
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7811 (dấu trừ đầu tiên giữa 'b' và 'd' thay thế 'x' và dấu trừ thứ hai thay thế một chuỗi trống giữa 'x' và 'd')

    (Đóng góp bởi Serhiy Storchaka trong bpo-25054 và bpo-32308. )

  • Thay đổi để chỉ thoát các ký tự đặc biệt của biểu thức chính quy thay vì thoát tất cả các ký tự không phải là chữ cái ASCII, số và

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7813. (Đóng góp bởi Serhiy Storchaka trong bpo-29995. )

  • các khung hiện được sắp xếp từ cũ nhất đến gần đây nhất để phù hợp hơn với. (Đóng góp bởi Jesse Bakker trong bpo-32121. )

  • Trên các hệ điều hành hỗ trợ hoặc cờ bit, chúng không còn được áp dụng nữa. Do đó, các kiểm tra như

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7819 hoạt động như mong đợi trên tất cả các nền tảng. (Đóng góp bởi Yury Selivanov trong bpo-32331. )

  • Trên Windows, mặc định cho đối số close_fds của đã được thay đổi từ thành khi chuyển hướng các bộ điều khiển tiêu chuẩn. Nếu trước đây bạn phụ thuộc vào các thẻ điều khiển được kế thừa khi sử dụng với chuyển hướng io tiêu chuẩn, bạn sẽ phải vượt qua

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7824 để duy trì hành vi trước đó hoặc sử dụng

  • – ảnh hưởng hoàn toàn – hiện xóa các mục trong đó đượ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)"
    
    84. (Đóng góp bởi Brett Cannon trong bpo-33169. )

  • Trong , , , , đã được thay đổi thành các phương thức coroutine thích hợp để phù hợp với tài liệu của họ. Trước đây, các phương thức này trả về các trường hợp. (Đóng góp bởi Yury Selivanov trong bpo-32327. )

  • hiện trả về một bản sao của danh sách ổ cắm máy chủ bên trong, thay vì trả lại trực tiếp. (Đóng góp bởi Yury Selivanov trong bpo-32662. )

  • bây giờ là một ví dụ thay vì một ví dụ. (Đóng góp bởi Victor Stinner trong bpo-21071. )

  • các bộ phân tích con hiện có thể được thực hiện bắt buộc bằng cách chuyển

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7842 tới. (Đóng góp bởi Anthony Sottile trong bpo-26510. )

  • bây giờ chặt chẽ hơn. Cộng và trừ các số tùy ý không còn được phép. (Đóng góp bởi Serhiy Storchaka trong bpo-31778. )

  • bây giờ sẽ liên tục đưa ra một ngoại lệ khi một ngày nằm ngoài phạm vi

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7846 đến
    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7847. Để hỗ trợ các ứng dụng không thể chấp nhận các ngoại lệ như vậy, phiên bản mới và có thể được sử dụng. Các phương thức mới trả về các bộ dữ liệu và không bị giới hạn bởi phạm vi được hỗ trợ bởi. (Đóng góp bởi Alexander Belopolsky trong bpo-28292. )

  • hiện giữ nguyên thứ tự của các ánh xạ cơ bản. (Đóng góp bởi Raymond Hettinger trong bpo-32792. )

  • Phương pháp

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7852 và hiện tăng if được gọi trong khi tắt trình thông dịch. (Đóng góp bởi Mark Nemec trong bpo-33097. )

  • Trình tạo hiện sử dụng

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7857 để xử lý các giá trị mặc định, làm cho hành vi của nó nhất quán với phần còn lại của trình phân tích cú pháp. Các khóa và giá trị không phải chuỗi trong từ điển mặc định hiện đang được chuyển đổi hoàn toàn thành chuỗi. (Đóng góp bởi James Tocknell trong bpo-23835. )

  • Một số nhập khẩu nội bộ không có giấy tờ đã bị loại bỏ. Một ví dụ là

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7858 không còn nữa; . Lưu ý rằng các mục nhập nội bộ không có giấy tờ như vậy có thể bị xóa bất kỳ lúc nào mà không cần thông báo, ngay cả trong các bản phát hành phiên bản vi mô

Những thay đổi trong API C

Hà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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7862, thì chuỗi có thể được thay đổi kích thước sau khi chuyển độ dài của nó cho
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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 CPython

Có hai opcode mới. và

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7867. (Đóng góp bởi Yury Selivanov và INADA Naoki trong bpo-26110. )

Opcode

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7868 đã bị xóa. (Đóng góp bởi Mark Shannon trong bpo-32550. )

Thay đổi chỉ dành cho Windows

Tệp được sử dụng để ghi đè hiện có tên là

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7870 thay vì
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

  • hiện không thể sử dụng bằng ứng dụng nhúng do yêu cầu tạo đối tượng Unicode trước khi gọi

    i=1
    while read x; do
       i=$(($i + 1))
       echo $i
    done <<<$(find tmp -type f)
    echo $i
    
    7873. sử dụng thay thế

  • các bộ lọc cảnh báo được thêm bởi một ứng dụng nhúng giờ đây sẽ được ưu tiên nhất quán hơn các bộ lọc mặc định do trình thông dịch đặt

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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ăng

Trạ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. 1

bắ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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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. 2

Trong 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à

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7888 và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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ới

Những thay đổi đáng chú ý trong Python 3. 7. 6

Do 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

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7891 trong UDP. Để biết thêm chi tiết, hãy xem tài liệu về
from __future__ import annotations
71. (Đó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. 10

Các phiên bản Python trước đó cho phép sử dụng cả

i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
7893 và
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $i
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
i=1
while read x; do
   i=$(($i + 1))
   echo $i
done <<<$(find tmp -type f)
echo $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 .