6 gán giá trị cho các biến như một phần của biểu thức lớn hơn. Nó được gọi một cách trìu mến là "người điều hành hải mã" do giống với mắt và ngà của một con hải mã
if(n:=len(a))>10:print(f"List is too long ({n} elements, expected <= 10)")
Một lợi ích tương tự phát sinh trong quá trình khớp biểu thức chính quy trong đó các đối tượng khớp được cần hai lần, một lần để kiểm tra xem có khớp hay không và một lần khác để trích xuất một nhóm con
Toán tử cũng hữu ích với các vòng lặp while tính toán một giá trị để kiểm tra kết thúc vòng lặp và sau đó cần lại giá trị đó trong phần thân của vòng lặp
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
Một trường hợp sử dụng thúc đẩy khác phát sinh trong việc hiểu danh sách trong đó một giá trị được tính toán trong điều kiện lọc cũng cần thiết trong nội dung biểu thức
Cố gắng hạn chế sử dụng toán tử hải mã để làm sạch các trường hợp giúp giảm độ phức tạp và cải thiện khả năng đọc
Xem PEP 572 để biết mô tả đầy đủ
(Đóng góp bởi Emily Morehouse trong bpo-35224. )
Thông số chỉ vị trí¶
Có một cú pháp tham số chức năng mới
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
8 để chỉ ra rằng một số tham số chức năng phải được chỉ định theo vị trí và không thể được sử dụng làm đối số từ khóa. Đây là cùng một ký hiệu được hiển thị bởi
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
9 cho các hàm C được chú thích bằng công cụ Argument Clinic của Larry Hastings.
Trong ví dụ sau, tham số a và b chỉ là vị trí, trong khi c hoặc d có thể là vị trí hoặc từ khóa và e hoặc f bắt buộc phải là từ khóa
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
Sau đây là một cuộc gọi hợp lệ
f(10,20,30,d=40,e=50,f=60)
Tuy nhiên, đây là những cuộc gọi không hợp lệ
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
0
Một trường hợp sử dụng cho ký hiệu này là nó cho phép các hàm Python thuần túy mô phỏng đầy đủ các hành vi của các hàm được mã hóa C hiện có. Ví dụ: hàm
f(10,20,30,d=40,e=50,f=60)
0 tích hợp không chấp nhận đối số từ khóa
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
2
Một trường hợp sử dụng khác là loại trừ đối số từ khóa khi tên tham số không hữu ích. Ví dụ: hàm dựng sẵn
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
7 có chữ ký
f(10,20,30,d=40,e=50,f=60)
2. Điều này ngăn cản các cuộc gọi khó xử như
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
5
Một lợi ích khác của việc đánh dấu một tham số là chỉ vị trí là nó cho phép thay đổi tên tham số trong tương lai mà không có nguy cơ phá vỡ mã máy khách. Ví dụ: trong mô-đun
f(10,20,30,d=40,e=50,f=60)
3, tên tham số dist có thể được thay đổi trong tương lai. Điều này đã được thực hiện với đặc tả chức năng sau
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
7
Vì các tham số ở bên trái của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
8 không được hiển thị dưới dạng các từ khóa có thể, nên các tên tham số vẫn có sẵn để sử dụng trong
Điều này giúp đơn giản hóa rất nhiều việc triển khai các hàm và phương thức cần chấp nhận các đối số từ khóa tùy ý. Ví dụ: đây là một đoạn trích từ mã trong mô-đun
Bộ đệm hệ thống tệp song song cho các tệp bytecode đã biên dịch¶
Cài đặt
f(10,20,30,d=40,e=50,f=60)
7 mới (cũng có sẵn dưới dạng
f(10,20,30,d=40,e=50,f=60)
8
f(10,20,30,d=40,e=50,f=60)
9) định cấu hình bộ đệm ẩn mã byte để sử dụng một cây hệ thống tệp song song riêng biệt, thay vì các thư mục con
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
00 mặc định trong mỗi thư mục nguồn
Vị trí của bộ đệm được báo cáo trong
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
01 (
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
02 cho biết vị trí mặc định trong thư mục con của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
00)
(Đóng góp bởi Carl Meyer trong bpo-33499. )
Bản dựng gỡ lỗi sử dụng cùng một ABI như bản phát hành¶
Python hiện sử dụng cùng một ABI cho dù nó được tích hợp ở chế độ phát hành hay gỡ lỗi. Trên Unix, khi Python được xây dựng ở chế độ gỡ lỗi, giờ đây có thể tải các phần mở rộng C được xây dựng ở chế độ phát hành và các phần mở rộng C được xây dựng bằng ABI ổn định
Bản phát hành và bản dựng gỡ lỗi hiện tương thích với ABI. xác định macro
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
04 không còn ngụ ý macro
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
05, đưa ra sự không tương thích ABI duy nhất. Macro
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
05, bổ sung hàm
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
07 và biến môi trường
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
08, có thể được đặt bằng cách sử dụng tùy chọn bản dựng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
09 mới. (Đóng góp bởi Victor Stinner trong bpo-36465. )
Trên Unix, các tiện ích mở rộng của C không còn được liên kết với libpython ngoại trừ trên Android và Cygwin. Hiện tại, Python được liên kết tĩnh có thể tải tiện ích mở rộng C được tạo bằng thư viện Python được chia sẻ. (Đóng góp bởi Victor Stinner trong bpo-21536. )
Trên Unix, khi Python được xây dựng ở chế độ gỡ lỗi, giờ đây, quá trình nhập cũng tìm kiếm các tiện ích mở rộng C được biên dịch trong chế độ phát hành và các tiện ích mở rộng C được biên dịch với ABI ổn định. (Đóng góp bởi Victor Stinner trong bpo-36722. )
Để nhúng Python vào một ứng dụng, một tùy chọn
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
20 mới phải được chuyển đến
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
21 để nhận được
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
22 (liên kết ứng dụng với libpython). Để hỗ trợ cả 3. 8 trở lên, hãy thử
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
21 trước và dự phòng thành
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
24 (không có
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
20) nếu lệnh trước đó không thành công
Thêm mô-đun pkg-config
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
26 để nhúng Python vào ứng dụng.
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
27 bao gồm
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
22. Để hỗ trợ cả 3. 8 trở lên, trước tiên hãy thử dùng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
29 và dự phòng bằng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
50 (không có
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
20) nếu lệnh trước đó không thành công (thay thế
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
52 bằng phiên bản Python)
Mặt khác,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
53 không còn chứa
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
22. Tiện ích mở rộng C không được liên kết với libpython (ngoại trừ trên Android và Cygwin, các trường hợp của chúng được xử lý bởi tập lệnh); . (Đóng góp bởi Victor Stinner trong bpo-36721. )
f-strings hỗ trợ def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)
55 cho các biểu thức tự ghi lại và gỡ lỗi¶
Đã thêm trình xác định
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
55 vào f-string s. Một chuỗi f chẳng hạn như
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
57 sẽ mở rộng thành văn bản của biểu thức, một dấu bằng, sau đó là biểu diễn của biểu thức được đánh giá. Ví dụ.
(Đóng góp bởi Eric V. Smith và Larry Hastings trong bpo-36817. )
PEP 578. Móc kiểm tra thời gian chạy Python¶
PEP thêm một Audit Hook và Verified Open Hook. Cả hai đều có sẵn từ Python và mã gốc, cho phép các ứng dụng và khung được viết bằng mã Python thuần túy để tận dụng các thông báo bổ sung, đồng thời cho phép người nhúng hoặc quản trị viên hệ thống triển khai các bản dựng Python trong đó kiểm tra luôn được bật
Xem PEP 578 để biết đầy đủ chi tiết
PEP 587. Cấu hình khởi tạo Python¶
PEP 587 thêm API C mới để định cấu hình Khởi tạo Python cung cấp khả năng kiểm soát tốt hơn trên toàn bộ cấu hình và báo cáo lỗi tốt hơn
21 becomes the new reference configuration, replacing global configuration variables and other private variables
See Python Initialization Configuration for the documentation.
See PEP 587 for a full description
(Contributed by Victor Stinner in bpo-36763. )
PEP 590. Vectorcall. a fast calling protocol for CPython¶
The Vectorcall Protocol is added to the Python/C API. It is meant to formalize existing optimizations which were already done for various classes. Any static type implementing a callable can use this protocol.
Đây là tạm thời. Mục đích là làm cho nó hoàn toàn công khai trong Python 3. 9
Xem PEP 590 để biết mô tả đầy đủ
(Đóng góp bởi Jeroen Demeyer, Mark Shannon và Petr Viktorin trong bpo-36974. )
24 được sử dụng để truyền dữ liệu lớn giữa các quy trình Python nhằm tận dụng lợi thế của quá trình xử lý đa lõi hoặc đa máy, điều quan trọng là phải tối ưu hóa quá trình truyền bằng cách giảm các bản sao bộ nhớ và có thể bằng cách áp dụng các kỹ thuật tùy chỉnh như nén phụ thuộc vào dữ liệu
24 5 giới thiệu hỗ trợ cho bộ đệm ngoài băng nơi dữ liệu tương thích với PEP 3118 có thể được truyền tách biệt khỏi luồng pickle chính, theo quyết định của lớp giao tiếp
45 không còn được phép. Nó không bao giờ có ý định cho phép nhiều hơn một tên trần ở phía bên trái của thuật ngữ gán đối số từ khóa. (Đóng góp bởi Benjamin Peterson trong bpo-34641. )
53 hiện trả về một thể hiện của lớp con, thay vì lớp cơ sở. Điều này cũng ảnh hưởng đến loại hoạt động trả về mà việc triển khai (trực tiếp hoặc gián tiếp) sử dụng số học
56 không bị bắt, quy trình Python hiện thoát qua tín hiệu SIGINT hoặc với mã thoát chính xác để quy trình gọi có thể phát hiện ra rằng nó đã chết do một . Shell trên POSIX và Windows sử dụng điều này để chấm dứt tập lệnh đúng cách trong các phiên tương tác. (Được đóng góp bởi Google thông qua Gregory P. Smith trong bpo-1054041. )
Một số kiểu lập trình nâng cao yêu cầu cập nhật đối tượng
57 cho một chức năng hiện có. Vì các đối tượng mã là bất biến, nên cần tạo một đối tượng mã mới, một đối tượng mã được mô hình hóa trên đối tượng mã hiện có. Với 19 tham số, điều này hơi tẻ nhạt. Bây giờ, phương pháp mới
65 signature. This allows the direct control over the state-updating behavior of a specific object. If not None, this callable will have priority over the object’s
67 module provides (provisional) support for reading metadata from third-party packages. For example, it can extract an installed package’s version number, list of entry points, and more
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
2
(Contributed by Barry Warsaw and Jason R. Coombs in bpo-34632. )
80 has graduated from the provisional to stable API. This function can be used to execute a coroutine and return the result while automatically managing the event loop. For example.
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
3
Điều này gần tương đương với
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
01 method. (Contributed by Alex Grönholm in bpo-34270. )
Added support for Happy Eyeballs to
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
02. To specify the behavior, two new parameters have been added. happy_eyeballs_delay and interleave. The Happy Eyeballs algorithm improves responsiveness in applications that support IPv4 and IPv6 by attempting to simultaneously connect using both. (Contributed by twisteroid ambassador in bpo-33530. )
builtins¶
The
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
03 built-in has been improved to accept the
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
04 flag. With this new flag passed,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
07 and
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
08 constructs that are usually considered invalid syntax. Asynchronous code object marked with the
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
09 flag may then be returned. (Đóng góp bởi Matthias Bussonnier trong bpo-34616)
bộ sưu tập¶
The
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
10 method for
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
11 now returns a
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
12 instead of a
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
13. This works because regular dicts have guaranteed ordering since Python 3. 7. If the extra features of
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
14 are required, the suggested remediation is to cast the result to the desired type.
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
15. (Contributed by Raymond Hettinger in bpo-35864. )
cProfile¶
The
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
16 class can now be used as a context manager. Profile a block of code by running
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
6
(Contributed by Scott Sanderson in bpo-29235. )
csv¶
The
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
17 now returns instances of
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
12 instead of a
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
13. The tool is now faster and uses less memory while still preserving the field order. (Contributed by Michael Selik in bpo-34003. )
curses¶
Added a new variable holding structured version information for the underlying ncurses library.
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
20. (Contributed by Serhiy Storchaka in bpo-31680. )
ctypes¶
On Windows,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
21 and subclasses now accept a winmode parameter to specify flags for the underlying
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
22 call. Các cờ mặc định được đặt để chỉ tải các phần phụ thuộc DLL từ các vị trí đáng tin cậy, bao gồm đường dẫn lưu trữ DLL (nếu đường dẫn đầy đủ hoặc một phần được sử dụng để tải DLL ban đầu) và các đường dẫn được thêm bởi
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
23. (Đóng góp bởi Steve Dower trong bpo-36085. )
ngày giờ¶
Đã thêm các hàm tạo thay thế mới
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
24 và
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
25, chúng tạo các đối tượng
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
26 và
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
27 tương ứng từ năm ISO, số tuần và ngày trong tuần; . (Đóng góp bởi Paul Ganssle trong bpo-36004. )
công cụ chức năng¶
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
29 hiện có thể được sử dụng như một công cụ trang trí thẳng thay vì là một hàm trả về một công cụ trang trí. Vì vậy, cả hai đều được hỗ trợ
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
7
(Đóng góp bởi Raymond Hettinger trong bpo-36772. )
Đã thêm trình trang trí
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
30 mới, dành cho các thuộc tính được tính toán được lưu trong bộ nhớ đệm cho vòng đời của phiên bản
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
8
(Đóng góp bởi Carl Meyer trong bpo-21145)
Đã thêm một trình trang trí
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
31 mới để chuyển đổi các phương thức thành các hàm chung bằng cách sử dụng một lần gửi:
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
9
(Đóng góp bởi Ethan Smith trong bpo-32380)
gc¶
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
32 hiện có thể nhận tham số tạo tùy chọn cho biết một thế hệ để lấy các đối tượng từ. (Đóng góp bởi Pablo Galindo trong bpo-36016. )
gettext¶
Đã thêm
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
33 và các biến thể của nó. (Được đóng góp bởi Franz Glasner, Éric Araujo và Cheryl Sabella trong bpo-2504. )
gzip¶
Đã thêm tham số mtime vào
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
34 cho đầu ra có thể lặp lại. (Đóng góp bởi Guo Ci Teo trong bpo-34898. )
Ngoại lệ
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
35 hiện được nâng lên thay vì
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
36 đối với một số loại tệp gzip không hợp lệ hoặc bị hỏng. (Đóng góp bởi Filip Gruszczyński, Michele Orrù, và Zackery Spytz trong bpo-6584. )
IDLE và idlib¶
Đầ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. )
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 cũ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. )
Đã thêm số dòng tùy chọn cho cửa sổ trình chỉnh sửa 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. )
Mã hóa gốc của hệ điều hành hiện được sử dụng để chuyển đổi giữa các chuỗi Python và các đối tượng Tcl. Điều này cho phép IDLE hoạt động với biểu tượng cảm xúc và các ký tự không phải BMP khác. Những ký tự này có thể được hiển thị hoặc sao chép và dán vào hoặc từ khay nhớ tạm. Chuyển đổi chuỗi từ Tcl sang Python và ngược lại không bao giờ thất bại. (Nhiều người đã làm việc này trong tám năm nhưng vấn đề cuối cùng đã được giải quyết bởi Serhiy Storchaka trong bpo-13153. )
Mới trong 3. 8. 1
Thêm tùy chọn để tắt nhấp nháy con trỏ. (Đóng góp bởi Zackery Spytz trong bpo-4603. )
Phím thoát hiện đóng các cửa sổ hoàn thành IDLE. (Đóng góp bởi Johnny Najera trong bpo-38944. )
Những thay đổi ở trên đã được nhập vào 3. 7 bản phát hành bảo trì
Thêm từ khóa vào danh sách hoàn thành tên mô-đun. (Đóng góp bởi Terry J. Sậy trong bpo-37765. )
quan sát¶
Hàm
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
37 hiện có thể tìm chuỗi tài liệu cho
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
38 nếu thuộc tính đó là
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
12 trong đó các giá trị là chuỗi tài liệu. Điều này cung cấp các tùy chọn tài liệu tương tự như những gì chúng tôi đã có cho
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
40,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
41 và
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
48 để phân tích mọi dòng đầu vào thành một đối tượng JSON riêng biệt. (Đóng góp bởi Weipeng Hong trong bpo-31553. )
khai thác gỗ¶
Đã thêm một đối số từ khóa bắt buộc vào
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
49 Khi được đặt thành đúng, mọi trình xử lý hiện có được đính kèm với bộ ghi gốc sẽ bị xóa và đóng trước khi thực hiện cấu hình được chỉ định bởi các đối số khác
Điều này giải quyết một vấn đề lâu dài. Khi một trình ghi nhật ký hoặc basicConfig() đã được gọi, các lệnh gọi tiếp theo tới basicConfig() sẽ bị bỏ qua một cách âm thầm. Điều này gây khó khăn cho việc cập nhật, thử nghiệm hoặc hướng dẫn các tùy chọn cấu hình ghi nhật ký khác nhau bằng lời nhắc tương tác hoặc sổ ghi chép Jupyter
(Được đề xuất bởi Raymond Hettinger, được thực hiện bởi Dong-hee Na và được Vinay Sajip xem xét trong bpo-33897. )
môn Toán¶
Đã thêm chức năng mới
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
50 để tính toán khoảng cách Euclide giữa hai điểm. (Đóng góp bởi Raymond Hettinger trong bpo-33089. )
Đã mở rộng chức năng
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
51 để xử lý nhiều thứ nguyên. Trước đây, nó chỉ hỗ trợ trường hợp 2-D. (Đóng góp bởi Raymond Hettinger trong bpo-33089. )
Đã thêm chức năng mới,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
52, làm chức năng tương tự cho
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
53 trả về tích của giá trị 'bắt đầu' (mặc định. 1) lần lặp lại các số
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
59 không còn chấp nhận các đối số không giống kiểu int. (Đóng góp bởi Pablo Galindo trong bpo-33083. )
mmap¶
Lớp
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
60 hiện có phương thức
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
61 để truy cập lệnh gọi hệ thống
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
61. (Đóng góp bởi Zackery Spytz trong bpo-32941. )
đa xử lý¶
Đã thêm mô-đun
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
63 mới. (Đóng góp bởi Davin Potts trong bpo-35813. )
Trên macOS, phương thức bắt đầu sinh sản hiện được sử dụng theo mặc định. (Đóng góp bởi Victor Stinner trong bpo-33725. )
os¶
Đã thêm chức năng mới
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
23 trên Windows để cung cấp các đường dẫn tìm kiếm bổ sung cho các phần phụ thuộc gốc khi nhập các mô-đun mở rộng hoặc tải DLL bằng cách sử dụng
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
65. (Đóng góp bởi Steve Dower trong bpo-36085. )
Một chức năng
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
66 mới đã được thêm vào để bọc toà nhà tòa nhà
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
67. (Đóng góp bởi Zackery Spytz và Christian Heimes trong bpo-26836. )
Trên Windows, phần lớn logic thủ công để xử lý các điểm phân tích lại (bao gồm các liên kết tượng trưng và các đường nối thư mục) đã được ủy quyền cho hệ điều hành. Cụ thể, giờ đây,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
68 sẽ duyệt qua mọi thứ được hệ điều hành hỗ trợ, trong khi đó,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
69 sẽ chỉ mở các điểm phân tích lại được xác định là “tên thay thế” trong khi các điểm khác được mở như đối với
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
68. Trong mọi trường hợp,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
71 sẽ chỉ có
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
72 được đặt cho các liên kết tượng trưng chứ không phải các loại điểm lặp lại khác. Để xác định các loại điểm phân tích cú pháp khác, hãy kiểm tra thuộc tính
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
73 mới
Trên Windows,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
74 hiện có thể đọc các liên kết thư mục. Lưu ý rằng
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
75 sẽ trả về
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
76 cho các liên kết thư mục và do đó, mã kiểm tra
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
77 trước tiên sẽ tiếp tục coi các liên kết là thư mục, trong khi mã xử lý lỗi từ
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
74 hiện có thể coi các liên kết là liên kết
(Đóng góp bởi Steve Dower trong bpo-37834. )
hệ điều hành. con đường¶
Các hàm
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
79 trả về kết quả boolean như
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
80,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
81,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
82,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
83,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
75 và
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
85 hiện trả về
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
76 thay vì tăng
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
87 hoặc các lớp con của nó
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
88 và
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
89 cho các đường dẫn chứa các ký tự hoặc byte không thể biểu diễn ở cấp độ hệ điều hành. (Đóng góp bởi Serhiy Storchaka trong bpo-33721. )
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
90 trên Windows hiện ưu tiên biến môi trường
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
91 và không sử dụng
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
92, thường không được đặt cho tài khoản người dùng thông thường. (Đóng góp bởi Anthony Sottile trong bpo-36264. )
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
82 trên Windows không còn trả về
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
94 cho một liên kết đến một thư mục không tồn tại
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
95 trên Windows hiện giải quyết các điểm phân tích lại, bao gồm các liên kết tượng trưng và các đường nối thư mục
(Đóng góp bởi Steve Dower trong bpo-37834. )
pathlib¶
Các phương thức
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
96 trả về kết quả boolean như
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
80,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
98,
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
14 đã thêm tham số sort_dicts vào một số chức năng. Theo mặc định, các chức năng đó tiếp tục sắp xếp từ điển trước khi hiển thị hoặc in. Tuy nhiên, nếu sort_dicts được đặt thành false, từ điển sẽ giữ nguyên thứ tự các phím được chèn. Điều này có thể hữu ích để so sánh với các đầu vào JSON trong quá trình gỡ lỗi
23 hiện mặc định là pax hiện đại (POSIX. 1-2001) cho các kho lưu trữ mới để cải thiện tính di động và tuân thủ tiêu chuẩn, kế thừa từ thay đổi tương ứng đối với mô-đun
27 để tự động hóa các tác vụ cần thiết thường liên quan khi tạo ổ cắm máy chủ, bao gồm chấp nhận cả kết nối IPv4 và IPv6 trên cùng một ổ cắm. (Đóng góp bởi Giampaolo Rodolà trong bpo-17561. )
37 phân chia dữ liệu hoặc phân phối thành các khoảng có thể trang bị được (e. g. phần tư, deciles hoặc phần trăm). (Đóng góp bởi Raymond Hettinger trong bpo-36546. )
39 mới có thể được ghi đè để kiểm soát cách xử lý "ngoại lệ không thể chấp nhận được". Nó được gọi khi một ngoại lệ xảy ra nhưng không có cách nào để Python xử lý nó. Ví dụ: khi một hàm hủy đưa ra một ngoại lệ hoặc trong quá trình thu gom rác (
24 hiện mặc định là pax hiện đại (POSIX. 1-2001) cho các kho lưu trữ mới, thay vì định dạng dành riêng cho GNU trước đó. Điều này cải thiện tính di động đa nền tảng với mã hóa nhất quán (UTF-8) ở định dạng chuẩn hóa và có thể mở rộng, đồng thời mang lại một số lợi ích khác. (Đóng góp bởi C. A. M. Gerlach trong bpo-36268. )
50 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. )
75 có thể được sử dụng để xác minh một chuỗi ở dạng bình thường cụ thể, thường nhanh hơn nhiều so với việc chuẩn hóa chuỗi thực sự. (Được đóng góp bởi Max Belanger, David Euresti và Greg Price trong bpo-32285 và bpo-37966)
00 có thể được định cấu hình để xử lý các sự kiện về nhận xét và hướng dẫn xử lý để đưa chúng vào cây được tạo. (Đóng góp bởi Stefan Behnel trong bpo-36676 và bpo-36673. )
xmlrpc¶
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
01 hiện hỗ trợ đối số từ khóa tiêu đề tùy chọn cho chuỗi tiêu đề HTTP được gửi với mỗi yêu cầu. Trong số những thứ khác, điều này cho phép nâng cấp từ xác thực cơ bản mặc định lên xác thực phiên nhanh hơn. (Đóng góp bởi Cédric Krier trong bpo-35153. )
Tối ưu hóa¶
Mô-đun
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
02 hiện có thể sử dụng chức năng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
03 trong một số trường hợp để có hiệu suất tốt hơn. Hiện tại, nó chỉ được sử dụng trên macOS và Linux (dùng glibc 2. 24 hoặc mới hơn) nếu tất cả các điều kiện này được đáp ứng
close_fds là sai;
tham số preexec_fn, pass_fds, cwd và start_new_session không được thiết lập;
đường dẫn thực thi chứa một thư mục
(Đóng góp bởi Joannah Nanjekye và Victor Stinner trong bpo-35537. )
08 sử dụng lệnh gọi tòa nhà “sao chép nhanh” dành riêng cho nền tảng trên Linux và macOS để sao chép tệp hiệu quả hơn. “sao chép nhanh” có nghĩa là hoạt động sao chép xảy ra trong nhân, tránh việc sử dụng bộ đệm không gian người dùng trong Python như trong “_______009”. Trên Windows,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
04 sử dụng kích thước bộ đệm mặc định lớn hơn (1 MiB thay vì 16 KiB) và một biến thể dựa trên
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
11 của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
12 được sử dụng. Tốc độ sao chép tệp 512 MiB trong cùng một phân vùng là khoảng +26% trên Linux, +50% trên macOS và +40% trên Windows. Ngoài ra, tiêu thụ ít chu kỳ CPU hơn nhiều. Xem phần Hoạt động sao chép hiệu quả phụ thuộc vào nền tảng . (Đóng góp bởi Giampaolo Rodolà trong bpo-33671. )
14 và tất cả các chức năng sao chép tùy thuộc vào nó sử dụng các giá trị
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
68 được lưu trong bộ nhớ cache. Tốc độ sao chép một thư mục có 8000 tệp là khoảng +9% trên Linux, +20% trên Windows và +30% trên chia sẻ Windows SMB. Ngoài ra, số lượng cuộc gọi tòa nhà của
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
24 hiện là Giao thức 4, được giới thiệu lần đầu trong Python 3. 4. Nó cung cấp hiệu suất tốt hơn và kích thước nhỏ hơn so với Giao thức 3 có sẵn kể từ Python 3. 0
Removed one
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
19 member from
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
20. Tất cả các đối tượng được theo dõi bởi GC (e. g. kích thước tuple, list, dict) giảm 4 hoặc 8 byte. (Contributed by Inada Naoki in bpo-33597. )
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
21 hiện sử dụng
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
38 để giảm dung lượng bộ nhớ của nó. (Đóng góp bởi Wouter Bolsterlee và Tal Einat trong bpo-30977)
Cải thiện hiệu suất của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
23 thêm 33%. Xử lý đối số được tối ưu hóa và thêm một đường dẫn nhanh cho trường hợp phổ biến của một chỉ mục số nguyên không âm duy nhất vào một bộ (là trường hợp sử dụng điển hình trong thư viện chuẩn). (Đóng góp bởi Raymond Hettinger trong bpo-35664. )
Tra cứu trường tăng tốc trong
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
11. Bây giờ chúng nhanh hơn gấp hai lần, khiến chúng trở thành dạng tra cứu biến thể hiện nhanh nhất trong Python. (Được đóng góp bởi Raymond Hettinger, Pablo Galindo, và Joe Jevnik, Serhiy Storchaka trong bpo-32492. )
Hàm tạo
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
25 không phân bổ tổng thể bộ đệm mục bên trong nếu đầu vào có thể lặp lại có độ dài đã biết (đầu vào thực hiện
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
26). Điều này làm cho danh sách được tạo trung bình nhỏ hơn 12%. (Đóng góp bởi Raymond Hettinger và Pablo Galindo trong bpo-33234. )
Nhân đôi tốc độ ghi biến lớp. Khi một thuộc tính non-dunder được cập nhật, sẽ có một cuộc gọi không cần thiết để cập nhật các vị trí. (Được đóng góp bởi Stefan Behnel, Pablo Galindo Salgado, Raymond Hettinger, Neil Schemenauer và Serhiy Storchaka trong bpo-36012. )
Giảm chi phí chuyển đổi đối số được truyền cho nhiều hàm và phương thức dựng sẵn. This sped up calling some simple builtin functions and methods up to 20–50%. (Contributed by Serhiy Storchaka in bpo-23867, bpo-35582 and bpo-36127. )
Hướng dẫn
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
27 hiện sử dụng cơ chế “bộ nhớ cache trên mỗi opcode” mới. Bây giờ nhanh hơn khoảng 40%. (Đóng góp bởi Yury Selivanov và Inada Naoki trong bpo-26219. )
Thay đổi về API Build và C¶
Mặc định
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
28 trở thành một chuỗi rỗng. cờ
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
29 cho pymalloc trở nên vô dụng (các bản dựng có và không có pymalloc đều tương thích với ABI) và do đó đã bị xóa. (Đóng góp bởi Victor Stinner trong bpo-36707. )
Example of changes
Chỉ chương trình
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
30 được cài đặt, chương trình
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
31 đã biến mất
Chỉ có tập lệnh
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
32 được cài đặt, tập lệnh
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
33 đã biến mất
Cờ
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
29 đã bị xóa khỏi hậu tố của tên tệp thư viện động. các mô-đun mở rộng trong thư viện tiêu chuẩn cũng như các mô-đun được sản xuất và cài đặt bởi các gói của bên thứ ba, chẳng hạn như các mô-đun được tải xuống từ PyPI. Ví dụ, trên Linux, Python 3. 7 hậu tố
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
35 trở thành
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
36 trong Python 3. 8
Các tệp tiêu đề đã được sắp xếp lại để phân tách tốt hơn các loại API khác nhau
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
37 phải là API C ổn định công cộng di động
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
38 phải là API C không ổn định dành riêng cho CPython;
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
41 is the private internal C API very specific to CPython. API này không đi kèm với bảo hành tương thích ngược và không được sử dụng bên ngoài CPython. Nó chỉ được hiển thị cho các nhu cầu rất cụ thể như trình gỡ lỗi và cấu hình phải truy cập vào các phần bên trong CPython mà không cần gọi các chức năng. API này hiện được cài đặt bởi
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
42
(Đóng góp bởi Victor Stinner trong bpo-35134 và bpo-35081, công việc do Eric Snow khởi xướng trong Python 3. 7. )
Some macros have been converted to static inline functions. các loại tham số và loại trả về được xác định rõ ràng, chúng không có vấn đề cụ thể đối với macro, các biến có phạm vi cục bộ. ví dụ
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
43,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
44
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
45,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
46
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
47,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
48
chức năng riêng tư.
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
49,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
50,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
51
(Đóng góp bởi Victor Stinner trong bpo-35059. )
Hàm
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
52 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
53 đã bị xóa. Họ không làm gì kể từ Python 2. 7. 4 và Trăn 3. 2. 0, were excluded from the limited API (stable ABI), and were not documented. (Đóng góp bởi Victor Stinner trong bpo-35713. )
Kết quả của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
54 bây giờ là loại
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
55 thay vì
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
56. (Đóng góp bởi Serhiy Storchaka trong bpo-33818. )
Tính hai mặt của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
57 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
58 đã bị loại bỏ. Trước đây, khi cập nhật cây nguồn CPython, người ta phải sao chép thủ công
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
57 (bên trong cây nguồn) sang
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
58 (bên trong cây xây dựng) để phản ánh mọi thay đổi ngược dòng. Đây là một lợi ích nhỏ đối với các nhà đóng gói nhưng lại gây khó chịu thường xuyên cho các nhà phát triển sau quá trình phát triển CPython, vì việc quên sao chép tệp có thể gây ra lỗi xây dựng
Bây giờ hệ thống xây dựng luôn đọc từ
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
58 bên trong cây nguồn. Những người muốn tùy chỉnh tệp đó được khuyến khích duy trì các thay đổi của họ trong git fork của CPython hoặc dưới dạng tệp vá, như họ sẽ làm đối với bất kỳ thay đổi nào khác đối với cây nguồn
(Đóng góp bởi Antoine Pitrou trong bpo-32430. )
Các hàm chuyển đổi số Python thành số nguyên C như
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
62 và các hàm phân tích cú pháp đối số như
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
63 với các đơn vị định dạng chuyển đổi số nguyên như
38 nếu có. (Đóng góp bởi Serhiy Storchaka trong bpo-36048 và bpo-20092. )
Các đối tượng loại được cấp phát heap giờ đây sẽ tăng số lượng tham chiếu của chúng trong
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
78 (và macro song song của nó là
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
79) thay vì trong
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
80. Các loại sửa đổi phân bổ cá thể hoặc phân bổ có thể cần phải được điều chỉnh. (Đóng góp bởi Eddie Elizondo trong bpo-35810. )
Hàm mới
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
81 cho phép tạo các đối tượng mã như
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
82, nhưng có thêm tham số posonlyargcount để chỉ ra số lượng đối số chỉ vị trí. (Đóng góp bởi Pablo Galindo trong bpo-37221. )
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
83 hiện đặt
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
84 thành đường dẫn đầy đủ của chương trình (
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
85) thay vì tên chương trình (
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
86). (Đóng góp bởi Victor Stinner trong bpo-38234. )
Không dùng nữa¶
Lệnh distutils
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
87 hiện không được dùng nữa, thay vào đó hãy sử dụng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
88 (gói bánh xe). (Đóng góp bởi Victor Stinner trong bpo-37481. )
Các phương pháp không dùng nữa
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
89 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
90 trong mô-đun
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
91 hiện phát ra một
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
92 thay vì
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
93. Chúng sẽ bị xóa trong Python 3. 9. (Đóng góp bởi Serhiy Storchaka trong bpo-29209. )
Việc chuyển một đối tượng không phải là phiên bản của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
94 sang
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
95 không được chấp nhận và sẽ bị cấm trong Python 3. 9. (Đóng góp bởi Elvis Pranskevichus trong bpo-34075. )
Các phương pháp
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
96 của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
97,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
98 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
99 đã không còn được dùng nữa
Việc triển khai các phương thức này đã bỏ qua tham số chỉ mục của chúng và thay vào đó trả về mục tiếp theo. (Đóng góp bởi Berker Peksag trong bpo-9372. )
Lớp
f(10,20,30,d=40,e=50,f=60)
00 đã loại bỏ thuộc tính
f(10,20,30,d=40,e=50,f=60)
01 bằng thuộc tính
f(10,20,30,d=40,e=50,f=60)
02 có cùng thông tin. (Đóng góp bởi Raymond Hettinger trong bpo-36320. )
Các lớp
f(10,20,30,d=40,e=50,f=60)
03
f(10,20,30,d=40,e=50,f=60)
04,
f(10,20,30,d=40,e=50,f=60)
05,
f(10,20,30,d=40,e=50,f=60)
06,
f(10,20,30,d=40,e=50,f=60)
07 và
f(10,20,30,d=40,e=50,f=60)
08 được coi là không dùng nữa và sẽ bị xóa trong các phiên bản Python trong tương lai.
f(10,20,30,d=40,e=50,f=60)
09 nên được sử dụng thay thế. (Đóng góp bởi Serhiy Storchaka trong bpo-32892. )
Các phương thức
f(10,20,30,d=40,e=50,f=60)
10
f(10,20,30,d=40,e=50,f=60)
11,
f(10,20,30,d=40,e=50,f=60)
12,
f(10,20,30,d=40,e=50,f=60)
13,
f(10,20,30,d=40,e=50,f=60)
14 và
f(10,20,30,d=40,e=50,f=60)
15 hiện không được dùng nữa và sẽ không được gọi trong các phiên bản Python trong tương lai. Thêm phương thức
f(10,20,30,d=40,e=50,f=60)
16 để xử lý tất cả các nút không đổi. (Đóng góp bởi Serhiy Storchaka trong bpo-36917. )
Trình trang trí
f(10,20,30,d=40,e=50,f=60)
17 decorator không được dùng nữa và sẽ bị xóa trong phiên bản 3. 10. Thay vì
f(10,20,30,d=40,e=50,f=60)
18, hãy sử dụng
f(10,20,30,d=40,e=50,f=60)
19. (Đóng góp bởi Andrew Svetlov trong bpo-36921. )
Trong
f(10,20,30,d=40,e=50,f=60)
20, việc truyền rõ ràng đối số vòng lặp không được dùng nữa và sẽ bị xóa trong phiên bản 3. 10 cho những điều sau đây.
f(10,20,30,d=40,e=50,f=60)
21,
f(10,20,30,d=40,e=50,f=60)
22,
f(10,20,30,d=40,e=50,f=60)
23,
f(10,20,30,d=40,e=50,f=60)
24,
f(10,20,30,d=40,e=50,f=60)
25,
f(10,20,30,d=40,e=50,f=60)
26,
f(10,20,30,d=40,e=50,f=60)
28,
f(10,20,30,d=40,e=50,f=60)
29,
f(10,20,30,d=40,e=50,f=60)
30,
f(10,20,30,d=40,e=50,f=60)
31,
f(10,20,30,d=40,e=50,f=60)
32,
f(10,20,30,d=40,e=50,f=60)
33,
f(10,20,30,d=40,e=50,f=60)
34, và
f(10,20,30,d=40,e=50,f=60)
35
Việc chuyển rõ ràng các đối tượng coroutine sang
f(10,20,30,d=40,e=50,f=60)
25 không được dùng nữa và sẽ bị xóa trong phiên bản 3. 11. (Đóng góp bởi Yury Selivanov trong bpo-34790. )
Các hàm và phương thức sau không được dùng trong mô-đun
f(10,20,30,d=40,e=50,f=60)
37.
f(10,20,30,d=40,e=50,f=60)
38,
f(10,20,30,d=40,e=50,f=60)
39,
f(10,20,30,d=40,e=50,f=60)
40 và
f(10,20,30,d=40,e=50,f=60)
41. Chúng trả về các byte được mã hóa và có thể bạn sẽ nhận được các ngoại lệ không mong muốn liên quan đến Unicode nếu có vấn đề về mã hóa với các chuỗi đã dịch. Sẽ tốt hơn nhiều nếu sử dụng các giải pháp thay thế trả về chuỗi Unicode trong Python 3. Các chức năng này đã bị hỏng trong một thời gian dài
Hàm
f(10,20,30,d=40,e=50,f=60)
42, các phương thức
f(10,20,30,d=40,e=50,f=60)
43 và
f(10,20,30,d=40,e=50,f=60)
44 và tham số bộ mã của các hàm
f(10,20,30,d=40,e=50,f=60)
45 và
f(10,20,30,d=40,e=50,f=60)
46 cũng không được dùng nữa vì chúng chỉ được sử dụng cho các hàm
f(10,20,30,d=40,e=50,f=60)
47. (Đóng góp bởi Serhiy Storchaka trong bpo-33710. )
24. Nó không được ghi lại và không dùng nữa kể từ Python 3. 3
Constructor
f(10,20,30,d=40,e=50,f=60)
91 không còn chấp nhận đối số html. Nó không bao giờ có tác dụng và không được dùng nữa trong Python 3. 4. Tất cả các tham số khác hiện tại chỉ từ khóa . (Đóng góp bởi Serhiy Storchaka trong bpo-29209. )
Đã xóa phương pháp
f(10,20,30,d=40,e=50,f=60)
92 của
f(10,20,30,d=40,e=50,f=60)
91. (Contributed by Serhiy Storchaka in bpo-29209. )
bộ giải mã "unicode_internal" đã bị xóa. (Contributed by Inada Naoki in bpo-36297. )
Các đối tượng
f(10,20,30,d=40,e=50,f=60)
94 và
f(10,20,30,d=40,e=50,f=60)
95 của mô-đun
f(10,20,30,d=40,e=50,f=60)
96 không được hiển thị cho người dùng. (Contributed by Aviv Palivoda in bpo-30262. )
Đối số từ khóa
f(10,20,30,d=40,e=50,f=60)
97 của
f(10,20,30,d=40,e=50,f=60)
98 và
f(10,20,30,d=40,e=50,f=60)
99 đã bị bỏ qua và không dùng nữa kể từ Python 3. 6 đã được gỡ bỏ. bpo-36952 (Đóng góp bởi Matthias Bussonnier. )
Các hàm
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
000 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
001 không dùng nữa trong Python 3. 7 đã được gỡ bỏ; . )
Chuyển sang Python 3. số 8¶
This section lists previously described changes and other bugfixes that may require changes to your code
007) được sử dụng với một số loại chữ nhất định (e. g. chuỗi, số). These can often work by accident in CPython, but are not guaranteed by the language spec. Cảnh báo khuyên người dùng nên sử dụng các bài kiểm tra đẳng thức (
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
008 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
009) để thay thế. (Đóng góp bởi Serhiy Storchaka trong bpo-34850. )
Trình thông dịch CPython có thể nuốt ngoại lệ trong một số trường hợp. In Python 3. 8 this happens in fewer cases. Đặc biệt, các ngoại lệ được nêu ra khi lấy thuộc tính từ từ điển loại không còn bị bỏ qua. (Đóng góp bởi Serhiy Storchaka trong bpo-35459. )
37 và một số lớp khỏi thư viện chuẩn. Bây giờ họ kế thừa
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
015 từ
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
016. Kết quả là, việc định nghĩa phương thức
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
017 trong lớp con của các lớp này sẽ ảnh hưởng đến biểu diễn chuỗi của chúng. (Đóng góp bởi Serhiy Storchaka trong bpo-36793. )
Trên AIX,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
018 không chứa phiên bản chính nữa. Nó luôn là
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
019, thay vì
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
020.
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
021. Vì các phiên bản Python cũ hơn bao gồm số phiên bản, do đó, bạn nên luôn sử dụng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
022. (Contributed by M. Cảm thấy trong bpo-36588. )
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
023 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
024 hiện kết thúc luồng hiện tại nếu được gọi trong khi trình thông dịch đang hoàn thiện, làm cho chúng nhất quán với
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
025,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
026 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
027. If this behavior is not desired, guard the call by checking
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
028 or
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
029. (Đóng góp bởi Joannah Nanjekye trong bpo-36475. )
Các thay đổi trong API Python¶
Hàm
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
030 hiện sử dụng mã hóa UTF-8 trên Windows, thay vì trang mã ANSI. xem PEP 529 để biết lý do. Chức năng này không còn được dùng nữa trên Windows. (Đóng góp bởi Victor Stinner trong bpo-37412. )
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
031 hiện có thể sử dụng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
03 trong một số trường hợp để có hiệu suất tốt hơn. Trên Hệ thống con Windows dành cho Linux và Mô phỏng người dùng QEMU, hàm tạo
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
033 sử dụng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
03 không còn đưa ra ngoại lệ đối với các lỗi như “chương trình bị thiếu”. Thay vào đó, tiến trình con không thành công với giá trị khác 0
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
035. (Đóng góp bởi Joannah Nanjekye và Victor Stinner trong bpo-35537. )
The preexec_fn argument of *
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
031 is no longer compatible with subinterpreters. The use of the parameter in a subinterpreter now raises
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
037. (Đóng góp bởi Eric Snow trong bpo-34651, được Christian Heimes sửa đổi trong bpo-37951. )
The
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
038 method no longer silently ignores arbitrary exceptions. (Đóng góp bởi Victor Stinner trong bpo-36348. )
Hàm
f(10,20,30,d=40,e=50,f=60)
75 đã bị xóa, sau khi không được dùng nữa kể từ Python 3. 3. sử dụng
f(10,20,30,d=40,e=50,f=60)
76 thay thế. (Contributed by Victor Stinner in bpo-35345. )
Hàm
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
041 không còn đưa ra ngoại lệ khi được cung cấp dữ liệu đa phương thức. Thay vào đó, nó trả về chế độ đầu tiên gặp phải trong dữ liệu đầu vào. (Contributed by Raymond Hettinger in bpo-35892. )
Phương thức
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
042 của lớp
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
043 không còn nhận đối số. Sử dụng nó với các đối số để thay đổi lựa chọn không được dùng trong Python 3. 6. Sử dụng các phương pháp chuyên dụng như
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
044 để thay đổi lựa chọn. (Contributed by Serhiy Storchaka in bpo-31508. )
08 sử dụng lệnh gọi tòa nhà “sao chép nhanh” dành riêng cho nền tảng (xem Hoạt động sao chép hiệu quả phụ thuộc vào nền tảng .
Kích thước bộ đệm mặc định của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
04 trên Windows đã được thay đổi từ 16 KiB thành 1 MiB
Cấu trúc
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
20 đã thay đổi hoàn toàn. Tất cả mã đã chạm vào thành viên cấu trúc phải được viết lại. (See bpo-33597. )
Cấu trúc
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
073 đã được chuyển vào các tệp tiêu đề “nội bộ” (cụ thể là Bao gồm/nội bộ/pycore_pystate. h). Một
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
073 không rõ ràng vẫn có sẵn như một phần của API công khai (và ABI ổn định). Các tài liệu chỉ ra rằng không có trường nào của cấu trúc là công khai, vì vậy chúng tôi hy vọng không có ai sử dụng chúng. Tuy nhiên, nếu bạn dựa vào một hoặc nhiều trường riêng tư đó và không có lựa chọn nào khác thì vui lòng mở vấn đề BPO. We’ll work on helping you adjust (possibly including adding accessor functions to the public API). (Xem bpo-35886. )
The
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
075 method now returns
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
02 on success and raises an exception on error under all platforms. Trước đây, hành vi của nó phụ thuộc vào nền tảng. một giá trị khác không được trả về khi thành công; . Giá trị 0 được trả về khi thành công; . (Đóng góp bởi Berker Peksag trong bpo-2122. )
94. Trước đây, khi hết thời gian chờ, nó đã bị hủy và ngay lập tức được trả lại. (Đóng góp bởi Elvis Pranskevichus trong bpo-32751. )
Hàm
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
204 hiện trả về một đối tượng ổ cắm an toàn để sử dụng khi 'ổ cắm' được chuyển đến tham số tên. (Đóng góp bởi Yury Selivanov trong bpo-37027. )
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
205 đã chuyển sang API ổn định
Phụ thuộc DLL cho các mô-đun mở rộng và DLL được tải bằng
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
65 trên Windows hiện đã được giải quyết an toàn hơn. Chỉ các đường dẫn hệ thống, thư mục chứa tệp DLL hoặc PYD và các thư mục được thêm bằng
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
23 mới được tìm kiếm phụ thuộc thời gian tải. Specifically,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
208 and the current working directory are no longer used, and modifications to these will no longer have any effect on normal DLL resolution. Nếu ứng dụng của bạn dựa vào các cơ chế này, bạn nên kiểm tra
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
23 và nếu nó tồn tại, hãy sử dụng nó để thêm thư mục DLL của bạn trong khi tải thư viện của bạn. Lưu ý rằng người dùng Windows 7 sẽ cần đảm bảo rằng Windows Update KB2533623 đã được cài đặt (điều này cũng được trình cài đặt xác minh). (Đóng góp bởi Steve Dower trong bpo-36085. )
Các tệp tiêu đề và chức năng liên quan đến pgen đã bị xóa sau khi thay thế nó bằng triển khai Python thuần túy. (Đóng góp bởi Pablo Galindo trong bpo-36623. )
57 has a new parameter in the second position of the constructor (posonlyargcount) to support positional-only arguments defined in PEP 570. Đối số đầu tiên (argcount) hiện đại diện cho tổng số đối số vị trí (bao gồm cả đối số chỉ vị trí). Phương pháp
57 có thể được sử dụng để làm cho mã trở thành bằng chứng trong tương lai
The parameter
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
213 for
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
214 no longer uses the MD5 digest by default
Changes in the C API¶
Cấu trúc
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
215 có trường cf_feature_version mới. Nó nên được khởi tạo thành
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
216. Trường bị bỏ qua theo mặc định và được sử dụng khi và chỉ khi cờ
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
217 được đặt trong cf_flags. (Contributed by Guido van Rossum in bpo-35766. )
Hàm
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
218 đã bị xóa khỏi API C. Nó không nên được gọi một cách rõ ràng. sử dụng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
219 thay thế. (Đóng góp bởi Victor Stinner trong bpo-36728. )
Trên Unix, các tiện ích mở rộng của C không còn được liên kết với libpython ngoại trừ trên Android và Cygwin. Khi Python được nhúng, không được tải
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
220 cùng với
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
221 mà thay vào đó là
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
222. Trước đây, khi sử dụng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
221, không thể tải các tiện ích mở rộng C không được liên kết với
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
220, giống như các tiện ích mở rộng C của thư viện chuẩn được xây dựng bởi phần
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
225 của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
58. (Contributed by Victor Stinner in bpo-21536. )
Sử dụng các biến thể của định dạng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
227 trong phân tích cú pháp hoặc xây dựng giá trị (e. g.
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
63,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
229,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
230, v.v. ) không có
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
231 được xác định tăng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
92 ngay bây giờ. It will be removed in 3. 10 hoặc 4. 0. Đọc Phân tích đối số và xây dựng giá trị để biết chi tiết. (Đóng góp bởi Inada Naoki trong bpo-36381. )
Các thể hiện của các loại được phân bổ trong đống (chẳng hạn như các loại được tạo bằng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
233) giữ một tham chiếu đến đối tượng loại của chúng. Việc tăng số lượng tham chiếu của các đối tượng loại này đã được chuyển từ
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
80 sang các hàm cấp thấp hơn,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
78 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
47. Điều này làm cho các loại được tạo thông qua
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
233 hoạt động giống như các lớp khác trong mã được quản lý
Các loại được phân bổ tĩnh không bị ảnh hưởng.
For the vast majority of cases, there should be no side effect. Tuy nhiên, các loại tăng số lượng tham chiếu theo cách thủ công sau khi phân bổ một phiên bản (có lẽ để khắc phục lỗi) giờ đây có thể trở thành bất tử. Để tránh điều này, các lớp này cần gọi Py_DECREF trên đối tượng loại trong khi phân bổ cá thể
Để chuyển chính xác các loại này thành 3. 8, vui lòng áp dụng các thay đổi sau
Xóa
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
238 trên đối tượng loại sau khi phân bổ một thể hiện - nếu có. Điều này có thể xảy ra sau khi gọi
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
239,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
240,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
241,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
242 hoặc bất kỳ trình phân bổ tùy chỉnh nào khác sử dụng
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
78 hoặc
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
47
Ví dụ
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
1
Đảm bảo rằng tất cả các hàm
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
245 tùy chỉnh của các loại được phân bổ theo đống sẽ giảm số lượng tham chiếu của loại
Ví dụ
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
2
(Đóng góp bởi Eddie Elizondo trong bpo-35810. )
The
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
246 macro has been implemented for MSVC. Macro bây giờ phải được đặt trước tên biểu tượng
Ví dụ
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
3
(Đóng góp bởi Zackery Spytz trong bpo-33407. )
The interpreter does not pretend to support binary compatibility of extension types across feature releases, anymore. Một
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
247 được xuất bởi mô-đun mở rộng của bên thứ ba được cho là có tất cả các vị trí dự kiến trong phiên bản Python hiện tại, bao gồm cả
254 để cho phép các công cụ MinGW liên kết trực tiếp với
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
255 không còn được bao gồm trong bản phân phối Windows thông thường. If you require this file, it may be generated with the
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
256 and
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
257 tools, which are part of the MinGW binutils package
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
4
Vị trí của một
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
258 được cài đặt sẽ phụ thuộc vào các tùy chọn cài đặt cũng như phiên bản và ngôn ngữ của Windows. Xem Sử dụng Python trên Windows để biết thêm thông tin. Thư viện kết quả phải được đặt trong cùng thư mục với
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
259, thường là thư mục
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
260 trong bản cài đặt Python của bạn.
(Đóng góp bởi Steve Dower trong bpo-37351. )
CPython bytecode changes¶
Vòng lặp thông dịch đã được đơn giản hóa bằng cách di chuyển logic hủy kiểm soát chồng khối vào trình biên dịch. Trình biên dịch hiện phát ra các hướng dẫn rõ ràng để điều chỉnh ngăn xếp giá trị và gọi mã dọn dẹp cho
(Đóng góp bởi Mark Shannon, Antoine Pitrou và Serhiy Storchaka trong bpo-17611. )
Added new opcode
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
274 for handling exceptions raised when awaiting a next item in an
# Loop over fixed length blockswhile(block:=f.read(256))!='':process(block)
07 loop. (Đóng góp bởi Serhiy Storchaka trong bpo-33041. )
Hiện tại,
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
276 mong muốn giá trị là phần tử đầu tiên trong ngăn xếp và khóa là phần tử thứ hai. Thay đổi này được thực hiện để khóa luôn được đánh giá trước giá trị trong cách hiểu từ điển, theo đề xuất của PEP 572. (Đóng góp bởi Jörn Heissler trong bpo-35224. )
Trình diễn và Công cụ¶
Đã thêm một tập lệnh điểm chuẩn để định thời gian theo nhiều cách khác nhau để truy cập các biến.
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
277. (Contributed by Raymond Hettinger in bpo-35884. )
Dưới đây là tóm tắt về các cải tiến hiệu suất kể từ Python 3. 3
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
5
Điểm chuẩn được đo trên bộ xử lý Intel® Core™ i7-4960HQ chạy bản dựng macOS 64-bit có tại python. tổ chức. The benchmark script displays timings in nanoseconds
Notable changes in Python 3. 8. 1¶
Do những lo ngại đáng kể về bảo mật, thông sốuse_address của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
278 không còn được hỗ trợ. Điều này là do hành vi của tùy chọn ổ cắm
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
279 trong UDP. Để biết thêm chi tiết, hãy xem tài liệu về
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
280. (Đóng góp bởi Kyle Stanley, Antoine Pitrou, và Yury Selivanov trong bpo-37228. )
Những thay đổi đáng chú ý trong Python 3. 8. số 8¶
Các phiên bản Python trước đó cho phép sử dụng cả
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
281 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
282 làm dấu tách tham số truy vấn trong
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
283 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
284. 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 _____1282 làm mặc định. Thay đổi này cũng ảnh hưởng đến
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
286 và
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
287 khi họ sử dụng các chức năng bị ảnh hưởng trong nội bộ. For more details, please see their respective documentation. (Đóng góp bởi Adam Goldschmidt, Senthil Kumaran và Ken Jin trong bpo-42967. )
Notable changes in Python 3. 8. 12¶
Bắt đầu với Python 3. 8. 12 mô-đun
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
288 không còn chấp nhận bất kỳ số 0 đứng đầu nào trong chuỗi địa chỉ IPv4. Các số 0 ở đầu không rõ ràng và được một số thư viện hiểu là ký hiệu bát phân. For example the legacy function
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
289 treats leading zeros as octal notation. triển khai glibc của
deff(a,b,/,c,d,*,e,f):print(a,b,c,d,e,f)
290 hiện đại không chấp nhận bất kỳ số 0 đứng đầu nào
Việc sử dụng toán tử '%' trong Python là gì?
Ký hiệu % trong Python được gọi là Toán tử Modulo. Nó trả về phần còn lại của phép chia toán hạng bên trái cho toán hạng bên phải .
What are the 7 operators in Python?
Python Operators .
Arithmetic operators
Toán tử gán
Toán tử so sánh
Toán tử logic
Toán tử nhận dạng
nhà khai thác thành viên
Bitwise operators
%= có phải là toán tử trong Python không?
Here, = is an assignment operator that assigns 5 to x . Đây là danh sách các toán tử gán khác nhau có sẵn trong Python.
. 2. Toán tử gán trong Python
3 toán tử logic trong Python là gì?
Python offers three logical or boolean operators, "and", "or" and "not" operators . These work on one or more operands, and depending on their values, evaluate to True or False.