Gỡ cài đặt python-certifi-win32

Bài viết này giải thích các tính năng mới trong Python 3. 2 as compared to 3. 1. Trăn 3. 2 was released on February 20, 2011. It focuses on a few highlights and gives a few examples. For full details, see the Misc/NEWS file

See also

PEP 392 - Python 3. 2 Release Schedule

PEP 384. Xác định ABI ổn định¶

Trước đây, các mô-đun mở rộng được xây dựng cho một phiên bản Python thường không sử dụng được với các phiên bản Python khác. Riêng trên Windows, mọi bản phát hành tính năng của Python đều yêu cầu xây dựng lại tất cả các mô-đun mở rộng mà người dùng muốn sử dụng. Yêu cầu này là kết quả của quyền truy cập miễn phí vào nội bộ trình thông dịch Python mà các mô-đun mở rộng có thể sử dụng

Với Python3. 2, một phương pháp thay thế có sẵn. các mô-đun mở rộng tự giới hạn ở một API giới hạn (bằng cách xác định Py_LIMITED_API) không thể sử dụng nhiều phần bên trong, nhưng bị hạn chế đối với một tập hợp các chức năng API được hứa hẹn là ổn định cho một số bản phát hành. Kết quả là, các mô-đun mở rộng được xây dựng cho 3. 2 trong chế độ đó cũng sẽ hoạt động với 3. 3, 3. 4, v.v. Các mô-đun mở rộng sử dụng các chi tiết của cấu trúc bộ nhớ vẫn có thể được xây dựng nhưng sẽ cần được biên dịch lại cho mỗi lần phát hành tính năng

See also

PEP 384 - Xác định ABI ổn định

PEP được viết bởi Martin von Löwis

PEP 389. Mô-đun phân tích cú pháp dòng lệnh Argparse¶

Một mô-đun mới để phân tích cú pháp dòng lệnh, >>> import imp >>> imp.get_tag() 'cpython-32' 0, đã được giới thiệu để khắc phục những hạn chế của >>> import imp >>> imp.get_tag() 'cpython-32' 1 không cung cấp hỗ trợ cho các đối số vị trí (không chỉ tùy chọn), lệnh con, tùy chọn bắt buộc và các mẫu tùy chọn chỉ định và xác thực phổ biến khác

Mô-đun này đã đạt được thành công rộng rãi trong cộng đồng với tư cách là mô-đun của bên thứ ba. Đầy đủ tính năng hơn so với người tiền nhiệm của nó, mô-đun >>> import imp >>> imp.get_tag() 'cpython-32' 0 hiện là mô-đun ưa thích để xử lý dòng lệnh. Mô-đun cũ hơn vẫn đang được duy trì do có một lượng đáng kể mã kế thừa phụ thuộc vào mô-đun đó

Đây là một trình phân tích cú pháp mẫu có chú thích hiển thị các tính năng như giới hạn kết quả cho một tập hợp các lựa chọn, chỉ định một metavar trong màn hình trợ giúp, xác thực rằng có một hoặc nhiều đối số vị trí và đưa ra một tùy chọn bắt buộc

import argparse parser = argparse.ArgumentParser( description = 'Manage servers', # main description for help epilog = 'Tested on Solaris and Linux') # displayed after help parser.add_argument('action', # argument name choices = ['deploy', 'start', 'stop'], # three allowed values help = 'action on each target') # help msg parser.add_argument('targets', metavar = 'HOSTNAME', # var name used in help msg nargs = '+', # require one or more targets help = 'url for target machines') # help msg explanation parser.add_argument('-u', '--user', # -u or --user option required = True, # make it a required argument help = 'login as user')

Ví dụ gọi trình phân tích cú pháp trên chuỗi lệnh

>>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain'

Ví dụ về trợ giúp được tạo tự động của trình phân tích cú pháp

>>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux

Một tính năng đặc biệt hay của >>> import imp >>> imp.get_tag() 'cpython-32' 0 là khả năng xác định các bộ phân tích con, mỗi bộ có các mẫu đối số riêng và hiển thị trợ giúp

import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0)

________số 8

See also

PEP 389 - Mô-đun phân tích cú pháp dòng lệnh mới

PEP được viết bởi Steven Bethard

Nâng cấp mã optparse để biết chi tiết về sự khác biệt so với >>> import imp >>> imp.get_tag() 'cpython-32' 1.

PEP 391. Cấu hình dựa trên từ điển để ghi nhật ký¶

Mô-đun >>> import imp >>> imp.get_tag() 'cpython-32' 5 cung cấp hai loại cấu hình, một kiểu có lệnh gọi hàm cho mỗi tùy chọn hoặc kiểu khác được điều khiển bởi một tệp bên ngoài được lưu ở định dạng >>> import imp >>> imp.get_tag() 'cpython-32' 6. Các tùy chọn đó không cung cấp tính linh hoạt để tạo cấu hình từ các tệp JSON hoặc YAML, cũng như không hỗ trợ cấu hình gia tăng, cần thiết để chỉ định các tùy chọn trình ghi nhật ký từ một dòng lệnh

Để hỗ trợ kiểu linh hoạt hơn, mô-đun hiện cung cấp >>> import imp >>> imp.get_tag() 'cpython-32' 7 để chỉ định cấu hình ghi nhật ký bằng từ điển Python đơn giản. Các tùy chọn cấu hình bao gồm trình định dạng, trình xử lý, bộ lọc và trình ghi nhật ký. Đây là một ví dụ hoạt động của một từ điển cấu hình

>>> import imp >>> imp.get_tag() 'cpython-32' 3

Nếu từ điển đó được lưu trữ trong một tệp có tên là >>> import imp >>> imp.get_tag() 'cpython-32' 8, nó có thể được tải và gọi bằng mã như thế này

>>> import imp >>> imp.get_tag() 'cpython-32' 5

See also

PEP 391 - Cấu hình dựa trên từ điển để ghi nhật ký

PEP được viết bởi Vinay Sajip

PEP 3148. Mô-đun >>> import imp >>> imp.get_tag() 'cpython-32'

Mã để tạo và quản lý đồng thời đang được thu thập trong một không gian tên cấp cao nhất mới, đồng thời. Thành viên đầu tiên của nó là gói tương lai cung cấp giao diện cấp cao thống nhất để quản lý các luồng và quy trình

Thiết kế cho >>> import imp >>> imp.get_tag() 'cpython-32' 9 được lấy cảm hứng từ java. sử dụng. gói đồng thời. Trong mô hình đó, một lệnh gọi đang chạy và kết quả của nó được biểu thị bằng một đối tượng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 01 tóm tắt các tính năng phổ biến đối với các luồng, quy trình và các lệnh gọi thủ tục từ xa. Đối tượng đó hỗ trợ kiểm tra trạng thái (đang chạy hoặc hoàn thành), hết thời gian chờ, hủy, thêm lệnh gọi lại và quyền truy cập vào kết quả hoặc ngoại lệ

Ưu đãi chính của mô-đun mới là một cặp lớp thực thi để khởi chạy và quản lý các cuộc gọi. Mục tiêu của những người thực thi là làm cho việc sử dụng các công cụ hiện có dễ dàng hơn để thực hiện các cuộc gọi song song. Chúng tiết kiệm công sức cần thiết để thiết lập nhóm tài nguyên, khởi chạy lệnh gọi, tạo hàng đợi kết quả, thêm xử lý hết thời gian chờ và giới hạn tổng số luồng, quy trình hoặc lệnh gọi thủ tục từ xa

Lý tưởng nhất là mỗi ứng dụng nên chia sẻ một trình thực thi duy nhất trên nhiều thành phần để có thể quản lý tập trung các giới hạn của quy trình và luồng. Điều này giải quyết thách thức thiết kế phát sinh khi mỗi thành phần có chiến lược cạnh tranh riêng để quản lý tài nguyên

Cả hai lớp chia sẻ một giao diện chung với ba phương thức. >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 02 để lên lịch một đối tượng có thể gọi và trả về một đối tượng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 01; . Lớp này là một trình quản lý bối cảnh và có thể được sử dụng trong câu lệnh >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 06 để đảm bảo rằng các tài nguyên sẽ tự động được giải phóng khi thực hiện xong các hợp đồng tương lai đang chờ xử lý.

Một ví dụ đơn giản về >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 07 là khởi chạy bốn luồng song song để sao chép tệp

>>> import imp >>> imp.get_tag() 'cpython-32' 5

See also

PEP 3148 - Futures – Thực hiện tính toán không đồng bộ

PEP được viết bởi Brian Quinlan

Mã để đọc URL song song theo luồng , một ví dụ sử dụng các luồng để tìm nạp nhiều trang web song song.

Mã để tính toán các số nguyên tố song song , một ví dụ minh họa >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 08.

PEP 3147. Thư mục kho lưu trữ PYC¶

Lược đồ của Python để lưu mã byte vào bộ nhớ đệm trong. các tệp pyc không hoạt động tốt trong môi trường có nhiều trình thông dịch Python. Nếu một trình thông dịch gặp một tệp được lưu trong bộ nhớ cache được tạo bởi một trình thông dịch khác, nó sẽ biên dịch lại nguồn và ghi đè lên tệp được lưu trong bộ nhớ cache, do đó làm mất đi lợi ích của bộ nhớ đệm

Vấn đề “chiến đấu với pyc” đã trở nên rõ ràng hơn khi các bản phân phối Linux đi kèm với nhiều phiên bản Python đã trở nên phổ biến. Những xung đột này cũng phát sinh với các lựa chọn thay thế CPython như Unladen Swallow

Để giải quyết vấn đề này, bộ máy nhập của Python đã được mở rộng để sử dụng các tên tệp riêng biệt cho mỗi trình thông dịch. Thay vì Python 3. 2 và Trăn 3. 3 và Unladen Swallow mỗi người tranh giành một tệp có tên “mymodule. pyc”, bây giờ họ sẽ tìm kiếm “mymodule. cpython-32. pyc”, “mô-đun của tôi. cpython-33. pyc” và “mymodule. không tải10. pyc”. Và để ngăn tất cả các tệp mới này làm lộn xộn các thư mục nguồn, các tệp pyc hiện được thu thập trong thư mục “__pycache__” được lưu trữ trong thư mục gói

Ngoài tên tệp và thư mục đích, sơ đồ mới có một số khía cạnh mà người lập trình có thể nhìn thấy

  • Các mô-đun đã nhập hiện có thuộc tính >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 09 lưu trữ tên của tệp thực đã được nhập

    >>> import imp >>> imp.get_tag() 'cpython-32' 8

  • Thẻ duy nhất cho mỗi trình thông dịch có thể truy cập được từ mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 10

    >>> import imp >>> imp.get_tag() 'cpython-32'

  • Các tập lệnh cố gắng suy ra tên tệp nguồn từ tệp đã nhập giờ đây cần phải thông minh hơn. It is no longer sufficient to simply strip the “c” from a “. tên tệp pyc”. Thay vào đó, hãy sử dụng các chức năng mới trong mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 10

    >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 0

  • Các mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 12 và >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 13 đã được cập nhật để phản ánh quy ước đặt tên và thư mục đích mới. Lời gọi dòng lệnh của compileall có các tùy chọn mới. >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 14 để chỉ định danh sách các tệp và thư mục cần biên dịch và >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 15 khiến các tệp mã byte được ghi vào vị trí kế thừa của chúng thay vì __pycache__

  • Mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 16 đã được cập nhật với các lớp cơ sở trừu tượng mới để tải các tệp mã byte. Các ABC lỗi thời, >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 17 và >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 18, không được dùng nữa (hướng dẫn cách duy trì Python 3. 1 tương thích được bao gồm trong tài liệu).

See also

PEP 3147 - Thư mục kho lưu trữ PYC

PEP được viết bởi Barry Warsaw

PEP 3149. Phiên bản ABI được gắn thẻ. vì vậy Tệp¶

Thư mục kho lưu trữ PYC cho phép nhiều tệp bộ đệm mã byte được đặt cùng vị trí. PEP này thực hiện một cơ chế tương tự cho các tệp đối tượng được chia sẻ bằng cách cung cấp cho chúng một thư mục chung và các tên riêng biệt cho từng phiên bản

Thư mục chung là “pyshared” và tên tệp được phân biệt bằng cách xác định triển khai Python (chẳng hạn như CPython, PyPy, Jython, v.v. ), số phiên bản chính và phụ cũng như các cờ bản dựng tùy chọn (chẳng hạn như “d” để gỡ lỗi, “m” cho pymalloc, “u” cho wide-unicode). Đối với gói tùy ý “foo”, bạn có thể thấy các tệp này khi gói phân phối được cài đặt

>>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 1

Trong chính Python, các thẻ có thể truy cập được từ các chức năng trong mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 19

>>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 2

See also

PEP 3149 - Phiên bản ABI được gắn thẻ. vì vậy tập tin

PEP được viết bởi Barry Warsaw

PEP 3333. Giao diện cổng máy chủ web Python v1. 0. 1¶

PEP thông tin này làm rõ cách giao thức WSGI xử lý các vấn đề về byte/văn bản. Thách thức là việc xử lý chuỗi trong Python 3 được xử lý thuận tiện nhất với loại >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 20 mặc dù bản thân giao thức HTTP được định hướng theo byte

PEP phân biệt cái gọi là chuỗi gốc được sử dụng cho tiêu đề yêu cầu/phản hồi và siêu dữ liệu so với chuỗi byte được sử dụng cho phần thân của yêu cầu và phản hồi

Các chuỗi gốc luôn thuộc loại >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 20 nhưng bị giới hạn ở các điểm mã từ U+0000 đến U+00FF có thể dịch thành byte bằng cách sử dụng mã hóa Latin-1. Các chuỗi này được sử dụng cho các khóa và giá trị trong từ điển môi trường cũng như cho các tiêu đề và trạng thái phản hồi trong hàm >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 22. Họ phải tuân theo RFC 2616 đối với mã hóa. Nghĩa là, chúng phải là ký tự ISO-8859-1 hoặc sử dụng mã hóa MIME RFC 2047

Đối với các nhà phát triển chuyển các ứng dụng WSGI từ Python 2, đây là những điểm nổi bật

  • Nếu ứng dụng đã sử dụng chuỗi cho tiêu đề trong Python 2 thì không cần thay đổi

  • Nếu thay vào đó, các tiêu đề đầu ra được mã hóa của ứng dụng hoặc các tiêu đề đầu vào đã giải mã, thì các tiêu đề đó sẽ cần được mã hóa lại thành Latin-1. Ví dụ: tiêu đề đầu ra được mã hóa bằng utf-8 đang sử dụng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 23 giờ cần chuyển đổi từ byte thành chuỗi gốc bằng cách sử dụng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 24

  • Các giá trị do ứng dụng tạo ra hoặc được gửi bằng phương thức >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 25 phải là chuỗi byte. Hàm và môi trường >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 22 phải sử dụng chuỗi gốc. Cả hai không thể trộn lẫn

Đối với những người triển khai máy chủ viết các đường dẫn CGI-to-WSGI hoặc các giao thức kiểu CGI khác, người dùng phải có khả năng truy cập vào môi trường bằng các chuỗi gốc mặc dù nền tảng cơ bản có thể có một quy ước khác. Để thu hẹp khoảng cách này, mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 27 có một chức năng mới, >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 28 để chuyển mã các biến CGI từ >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 29 thành các chuỗi gốc và trả về một từ điển mới

See also

PEP 3333 - Giao diện cổng máy chủ web Python v1. 0. 1

PEP được viết bởi Phillip Eby

Thay đổi ngôn ngữ khác¶

Một số thay đổi nhỏ hơn được thực hiện đối với ngôn ngữ Python cốt lõi là

  • Định dạng chuỗi cho >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 30 và >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 31 đã đạt được các khả năng mới cho ký tự định dạng #. Trước đây, đối với các số nguyên ở dạng nhị phân, bát phân hoặc thập lục phân, nó khiến đầu ra có tiền tố tương ứng là '0b', '0o' hoặc '0x'. Giờ đây, nó cũng có thể xử lý số float, số phức và Số thập phân, khiến đầu ra luôn có dấu thập phân ngay cả khi không có chữ số nào theo sau nó

    >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 3

    (Được gợi ý bởi Mark Dickinson và được thực hiện bởi Eric Smith trong bpo-7094. )

  • Cũng có một phương thức >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 32 mới giúp mở rộng khả năng của phương thức >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 31 hiện có bằng cách chấp nhận các đối tượng ánh xạ tùy ý. Phương thức mới này cho phép sử dụng định dạng chuỗi với bất kỳ đối tượng giống như từ điển nào của Python, chẳng hạn như >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 34, >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 35, >>> import imp >>> imp.get_tag() 'cpython-32' 6 hoặc >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 37. Nó cũng hữu ích với các lớp con >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 38 tùy chỉnh chuẩn hóa các khóa trước khi tra cứu hoặc cung cấp phương thức >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 39 cho các khóa không xác định.

    >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 4

(Được đề xuất bởi Raymond Hettinger và được triển khai bởi Eric Smith trong bpo-6081. )

  • Trình thông dịch hiện có thể được bắt đầu với một tùy chọn yên tĩnh, >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 40, để ngăn thông tin bản quyền và phiên bản hiển thị trong chế độ tương tác. Tùy chọn có thể được hướng nội bằng cách sử dụng thuộc tính >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 41

    >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 5

    (Đóng góp bởi Marcin Wojdyr trong bpo-1772833)

  • Hàm >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 42 hoạt động bằng cách gọi >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 43 và phát hiện xem có ngoại lệ nào được đưa ra hay không. Kỹ thuật này cho phép nó phát hiện các phương thức được tạo động bởi >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 44 hoặc >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 45 mà nếu không sẽ không có trong từ điển lớp. Trước đây, hasattr sẽ bắt bất kỳ ngoại lệ nào, có thể che giấu các lỗi chính hãng. Bây giờ, hasattr đã được thắt chặt để chỉ bắt >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 46 và để các ngoại lệ khác đi qua

    >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 6

    (Được phát hiện bởi Yury Selivanov và được sửa bởi Benjamin Peterson; bpo-9666. )

  • >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 47 của một số thực hoặc số phức bây giờ giống như >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 48 của nó. Trước đây, biểu mẫu >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 47 ngắn hơn nhưng điều đó chỉ gây nhầm lẫn và bây giờ không còn cần thiết nữa vì >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 48 ngắn nhất có thể được hiển thị theo mặc định

    >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 7

    (Đề xuất và thực hiện bởi Mark Dickinson; bpo-9337. )

  • Các đối tượng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 51 hiện có phương thức >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 52 và giờ đây chúng cũng hỗ trợ giao thức quản lý ngữ cảnh. Điều này cho phép giải phóng kịp thời bất kỳ tài nguyên nào đã có được khi yêu cầu bộ đệm từ đối tượng ban đầu

    >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 8

    (Được thêm bởi Antoine Pitrou; bpo-9757. )

  • Trước đây, việc xóa một tên khỏi không gian tên cục bộ là bất hợp pháp nếu nó xuất hiện dưới dạng một biến tự do trong một khối lồng nhau

    >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 9

    Điều này hiện được cho phép. Hãy nhớ rằng mục tiêu của mệnh đề >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 53 đã bị xóa, vì vậy mã này đã từng hoạt động với Python 2. 6, đã tăng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 54 với Python 3. 1 và bây giờ hoạt động trở lại

    >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 0

    (Xem bpo-4617. )

  • Công cụ >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 55 nội bộ hiện tạo các lớp con của bộ. Điều này có nghĩa là các cấu trúc C giống như cấu trúc được trả về bởi >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 56, >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 57 và >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 58 hiện hoạt động giống như một bộ có tên và hiện hoạt động với các hàm và phương thức cần một bộ . Đây là một bước tiến lớn trong việc làm cho các cấu trúc C linh hoạt như các cấu trúc Python thuần túy của chúng.

    >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 1

    (Được đề xuất bởi Arfrever Frehtes Taifersar Arahesis và được thực hiện bởi Benjamin Peterson trong bpo-8413. )

  • Các cảnh báo hiện dễ kiểm soát hơn bằng cách sử dụng biến môi trường >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 59 thay thế cho việc sử dụng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 60 tại dòng lệnh

    >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 2

    (Được đề xuất bởi Barry Warsaw và được thực hiện bởi Philip Jenvey trong bpo-7301. )

  • Một danh mục cảnh báo mới, >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 61, đã được thêm vào. Nó được phát ra khi các vấn đề tiềm ẩn về tiêu thụ tài nguyên hoặc dọn dẹp được phát hiện. Nó được tắt tiếng theo mặc định trong các bản phát hành thông thường nhưng có thể được kích hoạt thông qua các phương tiện được cung cấp bởi mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 62 hoặc trên dòng lệnh

    Một >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 61 được cấp khi tắt trình thông dịch nếu danh sách >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 64 không trống và nếu >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 65 được đặt, tất cả các đối tượng không thể thu thập được sẽ được in. Điều này nhằm làm cho lập trình viên biết rằng mã của họ chứa các vấn đề về hoàn thiện đối tượng

    A >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 61 cũng được phát ra khi một đối tượng tệp bị hủy mà không được đóng rõ ràng. Mặc dù bộ giải mã cho đối tượng như vậy đảm bảo nó đóng tài nguyên hệ điều hành cơ bản (thường là bộ mô tả tệp), sự chậm trễ trong việc giải phóng đối tượng có thể tạo ra nhiều vấn đề khác nhau, đặc biệt là trong Windows. Dưới đây là một ví dụ về việc kích hoạt cảnh báo từ dòng lệnh.

    >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 3

    (Được thêm bởi Antoine Pitrou và Georg Brandl trong bpo-10093 và bpo-477863. )

  • >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 67 đối tượng hiện hỗ trợ các phương thức đếm và lập chỉ mục. Đây là một phần trong nỗ lực làm cho nhiều đối tượng thực hiện đầy đủ hơn lớp cơ sở trừu tượng của >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 68 abstract base class . Kết quả là ngôn ngữ sẽ có API thống nhất hơn. Ngoài ra, các đối tượng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 67 hiện hỗ trợ các chỉ số cắt và chỉ số âm, ngay cả với các giá trị lớn hơn >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 70. Điều này làm cho phạm vi tương tác nhiều hơn với danh sách.

    >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 4

    (Đóng góp bởi Daniel Stutzbach trong bpo-9213, bởi Alexander Belopolsky trong bpo-2690, và bởi Nick Coghlan trong bpo-10889. )

  • Hàm dựng sẵn >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 71 từ Py2. x đã hồi sinh. Nó cung cấp một giải pháp thay thế ngắn gọn, dễ đọc cho việc sử dụng lớp cơ sở trừu tượng trong một biểu thức như >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 72.

    >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 5

    (Xem bpo-10518. )

  • Cơ chế nhập của Python hiện có thể tải các mô-đun được cài đặt trong các thư mục có ký tự không phải ASCII trong tên đường dẫn. Điều này đã giải quyết vấn đề trầm trọng hơn với các thư mục chính dành cho người dùng có ký tự không phải ASCII trong tên người dùng của họ

(Yêu cầu công việc mở rộng của Victor Stinner trong bpo-9425. )

Các mô-đun mới, cải tiến và không dùng nữa¶

Thư viện chuẩn của Python đã trải qua những nỗ lực bảo trì và cải thiện chất lượng đáng kể

Tin tức lớn nhất cho Python 3. Thứ 2 là gói >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 73, mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 74 và mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 75 hiện hoạt động chính xác với mô hình byte/văn bản trong Python 3. Lần đầu tiên, có cách xử lý chính xác các tin nhắn có mã hóa hỗn hợp

Trong toàn bộ thư viện tiêu chuẩn, đã có sự chú ý cẩn thận hơn đến các vấn đề về mã hóa và văn bản so với byte. Cụ thể, các tương tác với hệ điều hành giờ đây có thể trao đổi dữ liệu không phải ASCII tốt hơn bằng cách sử dụng mã hóa Windows MBCS, mã hóa nhận biết ngôn ngữ hoặc UTF-8

Một chiến thắng quan trọng khác là việc bổ sung hỗ trợ tốt hơn đáng kể cho các kết nối SSL và chứng chỉ bảo mật

Ngoài ra, nhiều lớp hiện triển khai trình quản lý ngữ cảnh để hỗ trợ dọn dẹp tài nguyên thuận tiện và đáng tin cậy bằng cách sử dụng câu lệnh >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 06.

e-mail¶

Khả năng sử dụng của gói >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 73 trong Python 3 hầu hết đã được khắc phục bằng những nỗ lực sâu rộng của R. David Murray. Vấn đề là các email thường được đọc và lưu trữ ở dạng văn bản >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 78 thay vì văn bản >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 20 và chúng có thể chứa nhiều mã hóa trong một email. Vì vậy, gói email phải được mở rộng để phân tích cú pháp và tạo email ở định dạng byte

  • Các chức năng mới >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 80 và >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 81, và các lớp mới >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 82 và >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 83 cho phép dữ liệu thông báo nhị phân được phân tích thành các đối tượng mô hình

  • Các byte đầu vào được cung cấp cho mô hình, theo mặc định, >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 84 sẽ giải mã nội dung thư có Mã hóa truyền nội dung 8 bit bằng cách sử dụng bộ ký tự được chỉ định trong tiêu đề MIME và trả về chuỗi kết quả

  • Đã cho đầu vào byte cho mô hình, >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 85 sẽ chuyển đổi các nội dung thư có Mã hóa truyền nội dung 8 bit thành Mã hóa truyền nội dung 7 bit thay vào đó

    Các tiêu đề có byte không phải ASCII chưa được mã hóa được coi là được mã hóa RFC 2047 bằng cách sử dụng bộ ký tự 8 bit không xác định

  • Một lớp mới >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 86 tạo ra các byte dưới dạng đầu ra, giữ nguyên mọi dữ liệu không phải ASCII không thay đổi có trong đầu vào được sử dụng để xây dựng mô hình, bao gồm các nội dung thư có Mã hóa truyền nội dung là 8 bit

  • Lớp >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 87 >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 88 hiện chấp nhận một chuỗi byte cho đối số msg cho phương thức >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 89 và một phương thức mới, >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 90 chấp nhận một đối tượng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 91 và có thể tùy chọn lấy địa chỉ from_addr và to_addrs trực tiếp từ đối tượng

(Đề xuất và thực hiện bởi R. David Murray, bpo-4661 và bpo-10321. )

cây nguyên tố¶

Gói >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 92 và đối tác >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 93 của nó đã được cập nhật lên phiên bản 1. 3

Một số chức năng và phương pháp mới và hữu ích đã được thêm vào

  • >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 94 xây dựng một tài liệu XML từ một chuỗi các đoạn

  • >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 95 để đăng ký tiền tố không gian tên chung

  • >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 96 để biểu diễn chuỗi bao gồm tất cả các danh sách con

  • >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 97 để nối thêm một chuỗi không có hoặc nhiều phần tử

  • >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 98 tìm kiếm một phần tử và các phần tử phụ

  • >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 99 tạo một trình lặp văn bản trên một phần tử và các phần tử con của nó

  • >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 00 đóng phần tử hiện tại

  • >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 01 xử lý khai báo loại tài liệu

Hai phương pháp không được chấp nhận

  • >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 02 sử dụng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 03 thay thế

  • >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 04 sử dụng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 05 thay thế

Để biết chi tiết về bản cập nhật, hãy xem Giới thiệu ElementTree trên trang web của Fredrik Lundh

(Đóng góp bởi Florent Xicluna và Fredrik Lundh, bpo-6472. )

công cụ chức năng¶

  • Mô-đun >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 06 bao gồm một trình trang trí mới cho các cuộc gọi chức năng lưu trữ. >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 07 có thể lưu các truy vấn lặp lại vào tài nguyên bên ngoài bất cứ khi nào kết quả được mong đợi giống nhau

    Ví dụ: thêm bộ đệm trang trí vào chức năng truy vấn cơ sở dữ liệu có thể lưu quyền truy cập cơ sở dữ liệu cho các tìm kiếm phổ biến

    >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 6

    >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 7

    Để giúp chọn kích thước bộ đệm hiệu quả, chức năng được bao bọc được cung cấp để theo dõi số liệu thống kê bộ đệm

    >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 8

    Nếu bảng danh sách điện thoại được cập nhật, nội dung lỗi thời của bộ đệm có thể bị xóa bằng

    >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 9

    (Được đóng góp bởi Raymond Hettinger và kết hợp các ý tưởng thiết kế từ Jim Baker, Miki Tebeka và Nick Coghlan; xem công thức 498245, công thức 577479, bpo-10586 và bpo-10593. )

  • Trình trang trí >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 08 hiện thêm thuộc tính >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 09 trỏ đến chức năng có thể gọi ban đầu. Điều này cho phép các chức năng được bao bọc được hướng nội. Nó cũng sao chép >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 10 nếu được định nghĩa. Và bây giờ, nó cũng bỏ qua một cách duyên dáng các thuộc tính bị thiếu, chẳng hạn như >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 11 có thể không được xác định cho gói có thể gọi được

    Trong ví dụ trên, bộ đệm có thể được xóa bằng cách khôi phục chức năng ban đầu

    import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 0

    (Bởi Nick Coghlan và Terrence Cole; bpo-9567, bpo-3445, và bpo-8814. )

  • Để giúp viết các lớp có các phương thức so sánh phong phú, một trình trang trí mới >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 12 sẽ sử dụng các phương thức đẳng thức và bất đẳng thức hiện có để điền vào các phương thức còn lại

    Ví dụ: cung cấp __eq__ và __lt__ sẽ cho phép >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 13 điền vào __le__, __gt__ và __ge__

    import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 1

    Với trình trang trí total_ordering, các phương thức so sánh còn lại được điền tự động

    (Đóng góp bởi Raymond Hettinger. )

  • Để hỗ trợ chuyển các chương trình từ Python 2, hàm >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 14 chuyển đổi hàm so sánh kiểu cũ thành hàm khóa hiện đại.

    import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 2

    Để biết các ví dụ sắp xếp và hướng dẫn sắp xếp ngắn gọn, hãy xem hướng dẫn Cách sắp xếp

    (Đóng góp bởi Raymond Hettinger. )

itertools¶

  • Mô-đun >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 15 có chức năng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 16 mới được mô hình hóa trên toán tử quét của APL và chức năng tích lũy của Numpy

    import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 3

    import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 4

    Để biết ví dụ sử dụng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 16, hãy xem ví dụ về mô-đun ngẫu nhiên .

    (Được đóng góp bởi Raymond Hettinger và kết hợp các đề xuất thiết kế từ Mark Dickinson. )

bộ sưu tập¶

  • Lớp >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 18 hiện có hai dạng phép trừ tại chỗ, toán tử -= hiện có cho phép trừ bão hòa và phương thức >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 19 mới cho phép trừ thông thường. Cái trước phù hợp với nhiều bộ chỉ có số dương và cái sau phù hợp hơn với các trường hợp sử dụng cho phép số âm

    import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 5

    import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 6

    (Đóng góp bởi Raymond Hettinger. )

  • Lớp >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 20 có một phương thức mới >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 21 lấy một khóa hiện có và di chuyển nó đến vị trí đầu tiên hoặc cuối cùng trong chuỗi được sắp xếp

    Mặc định là di chuyển một mục đến vị trí cuối cùng. Điều này tương đương với việc gia hạn một mục nhập với >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 22

    Thao tác di chuyển nhanh đến đầu cuối rất hữu ích cho việc sắp xếp lại các mục nhập. Ví dụ: một từ điển được sắp xếp có thể được sử dụng để theo dõi thứ tự truy cập theo các mục cũ từ mục cũ nhất đến mục được truy cập gần đây nhất

    import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 7

    (Đóng góp bởi Raymond Hettinger. )

  • Lớp >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 23 đã phát triển hai phương thức mới >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 24 và >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 25 khiến chúng có thể thay thế nhiều hơn cho các đối tượng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 26

    import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 8

    (Đóng góp bởi Raymond Hettinger. )

luồng¶

Mô-đun >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 27 có lớp đồng bộ hóa >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 28 mới để tạo nhiều luồng chờ cho đến khi tất cả chúng đạt đến một điểm rào cản chung. Các rào cản hữu ích để đảm bảo rằng một tác vụ có nhiều điều kiện tiên quyết không chạy cho đến khi tất cả các tác vụ tiền nhiệm hoàn thành

Các rào cản có thể hoạt động với số lượng chủ đề tùy ý. Đây là sự khái quát hóa của Rendezvous chỉ được xác định cho hai luồng

Được triển khai dưới dạng hàng rào tuần hoàn hai pha, các đối tượng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 28 phù hợp để sử dụng trong các vòng lặp. Các giai đoạn làm đầy và xả riêng biệt đảm bảo rằng tất cả các luồng được giải phóng (thoát nước) trước khi bất kỳ luồng nào trong số chúng có thể quay lại và nhập lại rào cản. Rào cản hoàn toàn thiết lập lại sau mỗi chu kỳ

Ví dụ về việc sử dụng rào cản

import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 9

Trong ví dụ này, hàng rào thực thi quy tắc không thể đếm phiếu bầu tại bất kỳ địa điểm bỏ phiếu nào cho đến khi tất cả các phòng phiếu đóng cửa. Lưu ý cách giải pháp có rào cản tương tự như giải pháp có >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 30, nhưng các chuỗi vẫn tồn tại và tiếp tục thực hiện công việc (tóm tắt các phiếu bầu) sau khi vượt qua điểm rào cản

Nếu bất kỳ tác vụ tiền nhiệm nào có thể bị treo hoặc bị trì hoãn, một rào cản có thể được tạo bằng tham số thời gian chờ tùy chọn. Sau đó, nếu khoảng thời gian chờ trôi qua trước khi tất cả các tác vụ tiền nhiệm đạt đến điểm rào cản, thì tất cả các luồng đang chờ sẽ được giải phóng và một ngoại lệ >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 31 được đưa ra

$ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 0

Trong ví dụ này, hàng rào thực thi một quy tắc mạnh mẽ hơn. Nếu một số địa điểm bầu cử không kết thúc trước nửa đêm, hàng rào sẽ hết thời gian chờ và các lá phiếu sẽ được niêm phong và xếp vào hàng đợi để xử lý sau

Xem Các mẫu đồng bộ hóa rào cản để biết thêm ví dụ về cách sử dụng các rào cản trong điện toán song song. Ngoài ra, có một lời giải thích đơn giản nhưng thấu đáo về các rào cản trong The Little Book of Semaphores, phần 3. 6

(Được đóng góp bởi Kristján Valur Jónsson với đánh giá API của Jeffrey Yasskin trong bpo-8777. )

ngày giờ và thời gian¶

  • Mô-đun >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 32 có loại >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 33 mới triển khai giao diện >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 34 bằng cách trả về tên múi giờ và giá trị bù UTC cố định. Điều này giúp tạo các đối tượng datetime nhận biết múi giờ dễ dàng hơn

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 1

  • Ngoài ra, các đối tượng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 35 hiện có thể được nhân với >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 36 và chia cho các đối tượng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 36 và >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 38. Và các đối tượng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 35 hiện có thể phân chia lẫn nhau

  • Phương pháp >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 40 không còn bị giới hạn trong các năm sau năm 1900. Phạm vi năm được hỗ trợ mới bao gồm từ 1000 đến 9999

  • Bất cứ khi nào một năm có hai chữ số được sử dụng trong một bộ thời gian, việc giải thích đã được điều chỉnh bởi >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 41. Giá trị mặc định là >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 42 có nghĩa là đối với năm có hai chữ số, thế kỷ được đoán theo các quy tắc POSIX chi phối định dạng strptime của >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 43

    Bắt đầu với Py3. 2, sử dụng heuristic đoán thế kỷ sẽ phát ra một >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 44. Thay vào đó, nên đặt >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 41 thành >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 46 để có thể sử dụng phạm vi ngày lớn mà không cần phỏng đoán

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 2

    Một số hàm hiện có phạm vi ngày được mở rộng đáng kể. Khi >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 41 là false, hàm >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 48 sẽ chấp nhận bất kỳ năm nào phù hợp với một int C, trong khi các hàm >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 49 và >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 50 sẽ chấp nhận phạm vi đầy đủ được hỗ trợ bởi các hàm của hệ điều hành tương ứng

(Được đóng góp bởi Alexander Belopolsky và Victor Stinner trong bpo-1289118, bpo-5094, bpo-6641, bpo-2706, bpo-1777412, bpo-8013 và bpo-10827. )

môn Toán¶

Mô-đun >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 51 đã được cập nhật với sáu chức năng mới lấy cảm hứng từ tiêu chuẩn C99

Hàm >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 52 cung cấp một cách nhanh chóng và đáng tin cậy để phát hiện các giá trị đặc biệt. Nó trả về >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 42 cho các số thông thường và >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 46 cho Nan hoặc Infinity

$ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 3

Hàm >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 55 tính toán >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 56 cho các giá trị nhỏ của x mà không làm giảm độ chính xác thường đi kèm với phép trừ các đại lượng gần bằng nhau

$ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 4

Hàm >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 57 tính toán tích phân xác suất hoặc hàm lỗi Gaussian. Hàm lỗi bổ sung, >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 58, là >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 59

$ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 5

Hàm >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 60 là một phần mở rộng liên tục của hàm giai thừa. Xem https. // vi. wikipedia. org/wiki/Gamma_function để biết chi tiết. Bởi vì hàm này liên quan đến giai thừa, nên nó phát triển lớn ngay cả đối với các giá trị nhỏ của x, do đó, cũng có một hàm >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 61 để tính logarit tự nhiên của hàm gamma

$ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 6

(Đóng góp bởi Mark Dickinson. )

abc¶

Mô-đun >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 62 hiện hỗ trợ >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 63 và >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 64

Những công cụ này cho phép xác định một lớp cơ sở trừu tượng yêu cầu triển khai một >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 65 hoặc >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 66 cụ thể.

$ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 7

(Bản vá do Daniel Urban gửi; bpo-5867. )

io¶

>>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 67 có một phương thức mới, >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 68, cung cấp chức năng tương tự như >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 69. Nó tạo ra một dạng xem dữ liệu có thể chỉnh sửa mà không cần tạo một bản sao. Khả năng truy cập ngẫu nhiên của bộ đệm và hỗ trợ ký hiệu lát rất phù hợp để chỉnh sửa tại chỗ

$ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 8

(Đóng góp bởi Antoine Pitrou trong bpo-5506. )

reprlib¶

Khi viết một phương thức >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 70 cho một vùng chứa tùy chỉnh, rất dễ quên xử lý trường hợp một thành viên tham chiếu lại chính vùng chứa đó. Các đối tượng dựng sẵn của Python như >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 26 và >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 72 xử lý tự tham chiếu bằng cách hiển thị “…” trong phần đệ quy của chuỗi biểu diễn

Để giúp viết các phương thức >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 70 như vậy, mô-đun >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 74 có một trình trang trí mới, >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 75, để phát hiện các lệnh gọi đệ quy tới >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 70 và thay vào đó là một chuỗi giữ chỗ

$ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 9

(Đóng góp bởi Raymond Hettinger trong bpo-9826 và bpo-9840. )

khai thác gỗ¶

Ngoài cấu hình dựa trên từ điển được mô tả ở trên, gói >>> import imp >>> imp.get_tag() 'cpython-32' 5 còn có nhiều cải tiến khác

Tài liệu ghi nhật ký đã được tăng cường bởi một hướng dẫn cơ bản , một hướng dẫn nâng cao, and a cookbook of logging recipes. These documents are the fastest way to learn about logging.

Hàm thiết lập >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 78 đã nhận được đối số kiểu để hỗ trợ ba kiểu định dạng chuỗi khác nhau. Nó mặc định là “%” cho định dạng % truyền thống, có thể được đặt thành “{” cho kiểu >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 31 mới hoặc có thể được đặt thành “$” cho định dạng kiểu shell được cung cấp bởi >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 80. Ba cấu hình sau là tương đương

>>> import imp >>> imp.get_tag() 'cpython-32' 30

Nếu không có cấu hình nào được thiết lập trước khi xảy ra sự kiện ghi nhật ký, thì hiện có cấu hình mặc định sử dụng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 81 hướng đến >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 82 cho các sự kiện ở cấp độ >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 83 trở lên. Trước đây, một sự kiện xảy ra trước khi cấu hình được thiết lập sẽ đưa ra một ngoại lệ hoặc âm thầm loại bỏ sự kiện tùy thuộc vào giá trị của >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 84. Trình xử lý mặc định mới được lưu trữ trong >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 85

Việc sử dụng các bộ lọc đã được đơn giản hóa. Thay vì tạo một đối tượng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 86, vị từ có thể là bất kỳ Python nào có thể gọi được trả về >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 42 hoặc >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 46

Có một số cải tiến khác giúp tăng tính linh hoạt và đơn giản hóa cấu hình. Xem tài liệu mô-đun để biết danh sách đầy đủ các thay đổi trong Python 3. 2

csv¶

Mô-đun >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 89 hiện hỗ trợ một phương ngữ mới, >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 90, áp dụng trích dẫn cho tất cả các trường và kiểu Unix truyền thống với >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 91 là dấu kết thúc dòng. Tên phương ngữ đã đăng ký là >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 92

>>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 93 có một phương pháp mới, >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 94 để viết ra một hàng đầu tiên để ghi lại các tên trường

>>> import imp >>> imp.get_tag() 'cpython-32' 31

(Phương ngữ mới do Jay Talbot đề xuất trong bpo-5975 và phương pháp mới do Ed Abraham đề xuất trong bpo-1537721. )

contextlib¶

Có một công cụ mới và hơi gây chú ý >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 95 hữu ích cho việc tạo trình quản lý ngữ cảnh thực hiện hai nhiệm vụ như một công cụ trang trí chức năng.

Để thuận tiện, chức năng mới này được sử dụng bởi >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 96 để không cần nỗ lực thêm để hỗ trợ cả hai vai trò

Ý tưởng cơ bản là cả trình quản lý bối cảnh và trình trang trí chức năng đều có thể được sử dụng cho trình bao bọc trước và sau hành động. Trình quản lý ngữ cảnh bao bọc một nhóm câu lệnh bằng cách sử dụng câu lệnh >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 06 và trình trang trí chức năng bao bọc một nhóm câu lệnh được bao hàm trong một hàm. Vì vậy, đôi khi cần phải viết trình bao bọc trước hoặc sau hành động có thể được sử dụng trong cả hai vai trò

Ví dụ: đôi khi rất hữu ích khi bọc các hàm hoặc nhóm câu lệnh bằng một trình ghi nhật ký có thể theo dõi thời gian vào và thời điểm thoát. Thay vì viết cả trình trang trí hàm và trình quản lý ngữ cảnh cho tác vụ, >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 96 cung cấp cả hai khả năng trong một định nghĩa duy nhất

>>> import imp >>> imp.get_tag() 'cpython-32' 32

Trước đây, điều này chỉ có thể được sử dụng như một trình quản lý bối cảnh

>>> import imp >>> imp.get_tag() 'cpython-32' 33

Bây giờ, nó cũng có thể được sử dụng như một vật trang trí

>>> import imp >>> imp.get_tag() 'cpython-32' 34

Cố gắng hoàn thành hai vai trò cùng một lúc đặt ra một số hạn chế đối với kỹ thuật. Các trình quản lý bối cảnh thường có thể linh hoạt trả về một đối số có thể sử dụng được bằng câu lệnh >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 06, nhưng không có sự song song nào đối với các trình trang trí chức năng

Trong ví dụ trên, không có cách nào rõ ràng để trình quản lý ngữ cảnh track_entry_and_exit trả về một phiên bản ghi nhật ký để sử dụng trong phần nội dung của các câu lệnh kèm theo

(Đóng góp bởi Michael Foord trong bpo-9110. )

số thập phân và phân số¶

Mark Dickinson đã tạo ra một lược đồ tinh tế và hiệu quả để đảm bảo rằng các kiểu dữ liệu số khác nhau sẽ có cùng giá trị băm bất cứ khi nào giá trị thực của chúng bằng nhau (bpo-8188)

>>> import imp >>> imp.get_tag() 'cpython-32' 35

Một số chi tiết băm được hiển thị thông qua thuộc tính mới, import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 00, mô tả độ rộng bit của giá trị băm, mô đun nguyên tố, giá trị băm cho vô cực và nan và hệ số nhân được sử dụng cho phần ảo của một số

>>> import imp >>> imp.get_tag() 'cpython-32' 36

Một quyết định ban đầu để hạn chế khả năng tương tác của các loại số khác nhau đã được nới lỏng. Vẫn chưa được hỗ trợ (và không được khuyến khích) để trộn ngầm trong các biểu thức số học như import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 01 vì biểu thức sau làm mất thông tin trong quá trình xây dựng số float nhị phân. Tuy nhiên, vì giá trị dấu phẩy động hiện có có thể được chuyển đổi dễ dàng thành biểu diễn thập phân hoặc hợp lý, nên thêm chúng vào hàm tạo và hỗ trợ so sánh kiểu hỗn hợp

  • Hàm tạo import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 02 hiện chấp nhận trực tiếp các đối tượng >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 36 nên không còn cần sử dụng phương thức import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 04 (bpo-8257)

  • So sánh loại hỗn hợp hiện được hỗ trợ đầy đủ để các đối tượng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 05 có thể được so sánh trực tiếp với >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 36 và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 07 (bpo-2531 và bpo-8188)

Những thay đổi tương tự đã được thực hiện đối với import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 07 để các phương pháp import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 04 và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 10 không còn cần thiết nữa (bpo-8294)

>>> import imp >>> imp.get_tag() 'cpython-32' 37

Một thay đổi hữu ích khác cho mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 11 là thuộc tính import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 12 hiện được công khai. Điều này hữu ích trong việc tạo ngữ cảnh tương ứng với các định dạng trao đổi thập phân được chỉ định trong IEEE 754 (xem bpo-8540)

(Đóng góp bởi Mark Dickinson và Raymond Hettinger. )

ftp¶

Lớp import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 13 hiện hỗ trợ giao thức quản lý ngữ cảnh để tiêu thụ vô điều kiện các ngoại lệ của import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 14 và đóng kết nối FTP khi hoàn tất

>>> import imp >>> imp.get_tag() 'cpython-32' 38

Các đối tượng giống như tệp khác như import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 15 và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 16 cũng phát triển các trình quản lý bối cảnh tự động đóng

>>> import imp >>> imp.get_tag() 'cpython-32' 39

(Đóng góp bởi Tarek Ziadé và Giampaolo Rodolà trong bpo-4972, và bởi Georg Brandl trong bpo-8046 và bpo-1286. )

Lớp import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 17 hiện chấp nhận tham số ngữ cảnh, là đối tượng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 18 cho phép gói các tùy chọn cấu hình SSL, chứng chỉ và khóa riêng vào một cấu trúc duy nhất (có khả năng tồn tại lâu dài)

(Đóng góp bởi Giampaolo Rodolà; bpo-8806. )

giáo hoàng¶

Các hàm import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 19 và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 20 hiện hỗ trợ các câu lệnh >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 06 để tự động đóng các bộ mô tả tệp

(Đóng góp bởi Antoine Pitrou và Brian Curtin trong bpo-7461 và bpo-10554. )

lựa chọn¶

Mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 22 hiện hiển thị một thuộc tính không đổi mới, import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 23, cung cấp số byte tối thiểu được đảm bảo không bị chặn khi import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 24 cho biết một đường ống đã sẵn sàng để ghi

>>> import imp >>> imp.get_tag() 'cpython-32' 50

(Có sẵn trên hệ thống Unix. Bản vá của Sébastien Sablé trong bpo-9862)

gzip và zipfile¶

import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 25 hiện triển khai lớp cơ sở trừu tượng của import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 26 abstract base class (ngoại trừ import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 27). Nó cũng có phương thức import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 28 và hỗ trợ các đối tượng tệp không đệm cũng như không thể tìm thấy.

Mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 29 cũng có các chức năng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 30 và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 31 để nén và giải nén trong bộ nhớ dễ dàng hơn. Hãy nhớ rằng văn bản cần được mã hóa thành >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 78 trước khi nén và giải nén

>>> import imp >>> imp.get_tag() 'cpython-32' 51

(Đóng góp bởi Anand B. Pillai trong bpo-3488; . )

Ngoài ra, lớp import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 33 đã được làm lại bên trong để thể hiện các tệp được lưu trữ bên trong kho lưu trữ. Việc triển khai mới nhanh hơn đáng kể và có thể được gói trong một đối tượng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 34 để tăng tốc hơn. Nó cũng giải quyết vấn đề trong đó các cuộc gọi xen kẽ để đọc và đọc dòng cho kết quả sai

(Bản vá được gửi bởi Nir Aides trong bpo-7610. )

tarfile¶

Lớp import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 35 hiện có thể được sử dụng làm trình quản lý bối cảnh. Ngoài ra, phương thức import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 36 của nó có một tùy chọn mới, bộ lọc, kiểm soát tệp nào được thêm vào kho lưu trữ và cho phép chỉnh sửa siêu dữ liệu tệp

Tùy chọn bộ lọc mới thay thế thông số loại trừ cũ hơn, kém linh hoạt hơn hiện không được dùng nữa. Nếu được chỉ định, tham số bộ lọc tùy chọn cần phải là một đối số từ khóa . Hàm bộ lọc do người dùng cung cấp chấp nhận một đối tượng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 37 và trả về một đối tượng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 37 đã cập nhật hoặc nếu muốn loại trừ tệp, hàm có thể trả về import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 39.

>>> import imp >>> imp.get_tag() 'cpython-32' 52

(Đề xuất bởi Tarek Ziadé và được triển khai bởi Lars Gustäbel trong bpo-6856. )

hashlib¶

Mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 40 có hai thuộc tính hằng số mới liệt kê các thuật toán băm được đảm bảo có mặt trong tất cả các triển khai và những thuật toán khả dụng trong triển khai hiện tại

>>> import imp >>> imp.get_tag() 'cpython-32' 53

(Được gợi ý bởi Carl Chenet trong bpo-7418. )

ast¶

Mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 41 có một công cụ đa năng tuyệt vời để đánh giá các chuỗi biểu thức một cách an toàn bằng cách sử dụng cú pháp chữ Python. Hàm import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 42 đóng vai trò là một giải pháp thay thế an toàn cho hàm import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 43 dựng sẵn dễ bị lạm dụng. Trăn 3. 2 thêm >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 78 và >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 72 chữ vào danh sách các loại được hỗ trợ. chuỗi, byte, số, bộ dữ liệu, danh sách, ký tự, bộ, booleans và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 39

>>> import imp >>> imp.get_tag() 'cpython-32' 54

(Thực hiện bởi Benjamin Peterson và Georg Brandl. )

os¶

Các hệ điều hành khác nhau sử dụng các mã hóa khác nhau cho tên tệp và biến môi trường. Mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 47 cung cấp hai chức năng mới, import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 48 và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 49, để mã hóa và giải mã tên tệp

>>> import imp >>> imp.get_tag() 'cpython-32' 55

Một số hệ điều hành cho phép truy cập trực tiếp vào các byte được mã hóa trong môi trường. Nếu vậy, hằng số import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 50 sẽ đúng

Để truy cập trực tiếp vào các biến môi trường được mã hóa (nếu có), hãy sử dụng hàm import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 51 mới hoặc sử dụng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 52 là phiên bản byte của >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 29

(Đóng góp bởi Victor Stinner. )

đóng cửa¶

Chức năng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 54 có hai tùy chọn mới

  • bỏ qua_dangling_symlinks. khi import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 55 để chức năng sao chép một tệp được chỉ ra bởi một liên kết tượng trưng, ​​​​chứ không phải chính liên kết tượng trưng đó. Tùy chọn này sẽ làm im lặng lỗi phát sinh nếu tệp không tồn tại

  • copy_function. là một cuộc gọi sẽ được sử dụng để sao chép các tập tin. import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 56 được sử dụng theo mặc định

(Đóng góp bởi Tarek Ziadé. )

Ngoài ra, mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 57 hiện hỗ trợ hoạt động lưu trữ cho tệp zip, tệp tar không nén, tệp tar được nén và tệp tar được nén. Và có các chức năng đăng ký định dạng tệp lưu trữ bổ sung (chẳng hạn như tarfile nén xz hoặc định dạng tùy chỉnh).

Các chức năng chính là import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 58 và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 59. Theo mặc định, cả hai đều hoạt động trên thư mục hiện tại (có thể được đặt bởi import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 60) và trên bất kỳ thư mục con nào. Tên tệp lưu trữ cần được chỉ định với tên đường dẫn đầy đủ. Bước lưu trữ không phá hủy (các tệp gốc không thay đổi)

>>> import imp >>> imp.get_tag() 'cpython-32' 56

(Đóng góp bởi Tarek Ziadé. )

sqlite3¶

Mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 61 đã được cập nhật lên phiên bản pysqlite 2. 6. 0. Nó có hai khả năng mới

  • Thuộc tính import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 62 là đúng nếu có một giao dịch đang hoạt động cho các thay đổi chưa được cam kết

  • Các phương thức import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 63 và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 64 cho phép bạn tải các phần mở rộng SQLite từ “. các tập tin như vậy. Một phần mở rộng nổi tiếng là phần mở rộng tìm kiếm toàn văn được phân phối với SQLite

(Đóng góp bởi R. David Murray và Shaswat Anand; . )

html¶

Mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 65 mới được giới thiệu chỉ với một chức năng duy nhất, import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 66, được sử dụng để thoát các ký tự dành riêng khỏi đánh dấu HTML

>>> import imp >>> imp.get_tag() 'cpython-32' 57

ổ cắm¶

Mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 67 có hai cải tiến mới

  • Các đối tượng ổ cắm hiện có phương thức import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 68 đặt ổ cắm ở trạng thái đóng mà không thực sự đóng bộ mô tả tệp bên dưới. Cái sau có thể được tái sử dụng cho các mục đích khác. (Được thêm bởi Antoine Pitrou; bpo-8524. )

  • import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 69 hiện hỗ trợ giao thức quản lý bối cảnh để tiêu thụ vô điều kiện các ngoại lệ của import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 14 và đóng ổ cắm khi hoàn tất. (Đóng góp bởi Giampaolo Rodolà; bpo-9794. )

ssl¶

Mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 71 đã thêm một số tính năng để đáp ứng các yêu cầu chung về kết nối internet an toàn (được mã hóa, xác thực)

  • Một lớp mới, import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 72, đóng vai trò là vùng chứa dữ liệu SSL liên tục, chẳng hạn như cài đặt giao thức, chứng chỉ, khóa riêng và nhiều tùy chọn khác. Nó bao gồm một import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 73 để tạo một ổ cắm SSL từ bối cảnh SSL

  • Một chức năng mới, import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 74, hỗ trợ xác minh danh tính máy chủ cho các giao thức cấp cao hơn bằng cách triển khai các quy tắc của HTTPS (từ RFC 2818) cũng phù hợp với các giao thức khác

  • Hàm xây dựng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 75 hiện có một đối số mật mã. Chuỗi mật mã liệt kê các thuật toán mã hóa được phép sử dụng định dạng được mô tả trong tài liệu OpenSSL

  • Khi được liên kết với các phiên bản OpenSSL gần đây, mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 71 hiện hỗ trợ tiện ích mở rộng Chỉ định tên máy chủ cho giao thức TLS, cho phép nhiều “máy chủ ảo” sử dụng các chứng chỉ khác nhau trên một cổng IP. Tiện ích mở rộng này chỉ được hỗ trợ ở chế độ máy khách và được kích hoạt bằng cách chuyển đối số server_hostname tới import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 77

  • Nhiều tùy chọn khác nhau đã được thêm vào mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 71, chẳng hạn như import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 79 vô hiệu hóa giao thức SSLv2 không an toàn và lỗi thời

  • Tiện ích mở rộng hiện tải tất cả các thuật toán mã hóa và mã hóa OpenSSL. Nếu một số chứng chỉ SSL không thể được xác minh, chúng sẽ được báo cáo là lỗi "thuật toán không xác định"

  • Phiên bản OpenSSL đang được sử dụng hiện có thể truy cập bằng các thuộc tính mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 80 (một chuỗi), import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 81 (5-tuple) và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 82 (một số nguyên)

(Đóng góp bởi Antoine Pitrou trong bpo-8850, bpo-1589, bpo-8322, bpo-5639, bpo-4870, bpo-8484 và bpo-8321. )

nntp¶

Mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 75 có triển khai được tân trang lại với các byte và ngữ nghĩa văn bản tốt hơn cũng như các API thực tế hơn. Những cải tiến này phá vỡ khả năng tương thích với phiên bản nntplib trong Python 3. 1, bản thân nó đã bị rối loạn chức năng một phần

Hỗ trợ cho các kết nối an toàn thông qua cả TLS ẩn (sử dụng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 84) và rõ ràng (sử dụng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 85) cũng đã được thêm vào

(Đóng góp bởi Antoine Pitrou trong bpo-9360 và Andrew Vant trong bpo-1926. )

chứng chỉ¶

import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 86, import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 87 và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 88 hiện có các đối số tùy chọn để cho phép kiểm tra chứng chỉ máy chủ dựa trên một nhóm Tổ chức phát hành chứng chỉ, như được đề xuất trong sử dụng HTTPS công khai

(Được thêm bởi Antoine Pitrou, bpo-9003. )

imaplib¶

Hỗ trợ cho TLS rõ ràng trên các kết nối IMAP4 tiêu chuẩn đã được thêm thông qua phương thức import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 89 mới

(Đóng góp bởi Lorenzo M. Catucci và Antoine Pitrou, bpo-4471. )

http. khách hàng¶

Có một số cải tiến API nhỏ trong mô-đun import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 90. HTTP 0 kiểu cũ. 9 phản hồi đơn giản không còn được hỗ trợ và tham số nghiêm ngặt không được dùng trong tất cả các lớp

Các lớp import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 91 và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 92 hiện có tham số source_address cho bộ (máy chủ, cổng) cho biết kết nối HTTP được tạo từ đâu

Hỗ trợ kiểm tra chứng chỉ và máy chủ ảo HTTPS đã được thêm vào import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 92

Phương thức import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 94 trên các đối tượng kết nối cho phép một đối số phần thân tùy chọn để đối tượng tệp có thể được sử dụng để cung cấp nội dung của yêu cầu. Thuận tiện, đối số body giờ đây cũng chấp nhận một đối tượng có thể lặp lại miễn là nó bao gồm tiêu đề import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 95 rõ ràng. Giao diện mở rộng này linh hoạt hơn nhiều so với trước đây.

Để thiết lập kết nối HTTPS thông qua máy chủ proxy, có một phương pháp import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 96 mới đặt máy chủ và cổng cho đường hầm HTTP Connect

Để phù hợp với hành vi của import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 97, thư viện máy khách HTTP hiện cũng mã hóa các tiêu đề bằng mã hóa ISO-8859-1 (Latin-1). Nó đã làm điều đó cho các tiêu đề đến, vì vậy bây giờ hành vi nhất quán cho cả lưu lượng truy cập đến và đi. (Xem tác phẩm của Armin Ronacher trong bpo-10980. )

đơn vị nhất¶

Mô-đun unittest có một số cải tiến hỗ trợ khám phá thử nghiệm cho các gói, thử nghiệm dễ dàng hơn tại dấu nhắc tương tác, phương pháp trường hợp thử nghiệm mới, thông báo chẩn đoán được cải thiện cho lỗi thử nghiệm và tên phương thức tốt hơn

  • Lệnh gọi dòng lệnh import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 98 hiện có thể chấp nhận đường dẫn tệp thay vì tên mô-đun để chạy thử nghiệm cụ thể (bpo-10620). Khám phá thử nghiệm mới có thể tìm thấy các thử nghiệm trong các gói, định vị bất kỳ thử nghiệm nào có thể nhập được từ thư mục cấp cao nhất. Thư mục cấp cao nhất có thể được chỉ định với tùy chọn import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 99, một mẫu để khớp các tệp với $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 00 và một thư mục để bắt đầu khám phá với $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 01

    >>> import imp >>> imp.get_tag() 'cpython-32' 58

    (Đóng góp bởi Michael Foord. )

  • Thử nghiệm tại dấu nhắc tương tác giờ đây dễ dàng hơn vì lớp $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 02 hiện có thể được khởi tạo mà không cần đối số

    >>> import imp >>> imp.get_tag() 'cpython-32' 59

    (Đóng góp bởi Michael Foord. )

  • Mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 03 có hai phương thức mới, $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 04 và $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 05 để xác minh rằng một loại cảnh báo nhất định được kích hoạt bởi mã đang kiểm tra

    >>> import imp >>> imp.get_tag() 'cpython-32' 50

    (Đóng góp bởi Antoine Pitrou, bpo-9754. )

    Một phương pháp mới khác, $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 06 được sử dụng để so sánh hai lần lặp để xác định xem số lượng phần tử của chúng có bằng nhau hay không (liệu các phần tử giống nhau có xuất hiện với cùng số lần xuất hiện bất kể thứ tự hay không)

    >>> import imp >>> imp.get_tag() 'cpython-32' 51

    (Đóng góp bởi Raymond Hettinger. )

  • Một tính năng chính của mô-đun unittest là nỗ lực tạo ra các chẩn đoán có ý nghĩa khi thử nghiệm thất bại. Khi có thể, lỗi được ghi lại cùng với sự khác biệt của đầu ra. Điều này đặc biệt hữu ích để phân tích tệp nhật ký của các lần chạy thử không thành công. Tuy nhiên, vì các khác biệt đôi khi có thể rất lớn, nên có một thuộc tính $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 07 mới đặt độ dài tối đa của các khác biệt được hiển thị

  • Ngoài ra, các tên phương thức trong mô-đun đã trải qua một số lần dọn dẹp

    Ví dụ: $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 08 là tên mới của $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 09 đã bị đặt tên sai vì bài kiểm tra sử dụng $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 10, không phải $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 11. Các phương thức khác sử dụng biểu thức chính quy hiện được đặt tên bằng cách sử dụng dạng viết tắt “Regex” thay vì “Regexp” – tên này khớp với tên được sử dụng trong các triển khai kém nhất khác, khớp với tên cũ của Python cho mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 12 và nó có vỏ lạc đà rõ ràng

    (Do Raymond Hettinger đóng góp và Ezio Melotti thực hiện. )

  • Để cải thiện tính nhất quán, một số bí danh phương pháp lâu đời không được dùng nữa để thay thế cho các tên ưa thích

    Tên Cu

    Tên ưa thích

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 13

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 14

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 15

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 16

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 17

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 18

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 19

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 20

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 21

    $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 22

    Tương tự như vậy, các phương thức $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 23 không được dùng trong Python 3. 1 dự kiến ​​​​sẽ bị xóa trong Python 3. 3. Ngoài ra, hãy xem phần Bí danh không dùng nữa trong tài liệu $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 03.

    (Đóng góp bởi Ezio Melotti; bpo-9424. )

  • Phương thức $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 25 không được dùng nữa vì nó được triển khai sai với các đối số theo thứ tự sai. Điều này tạo ra những ảo ảnh quang học khó gỡ lỗi trong đó các thử nghiệm như $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 26 sẽ thất bại

    (Đóng góp bởi Raymond Hettinger. )

ngẫu nhiên¶

Các phương thức số nguyên trong mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 27 hiện thực hiện tốt hơn việc tạo ra các bản phân phối thống nhất. Trước đây, họ đã tính toán các lựa chọn với $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 28 có độ lệch nhỏ bất cứ khi nào n không phải là lũy thừa của hai. Bây giờ, nhiều lựa chọn được thực hiện từ một phạm vi cho đến lũy thừa tiếp theo của hai và một lựa chọn chỉ được giữ khi nó nằm trong phạm vi $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 29. Các chức năng và phương pháp bị ảnh hưởng là ________ 830, ________ 831, ________ 832, ________ 833 và $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 34

(Đóng góp bởi Raymond Hettinger; bpo-9025. )

poplib¶

Lớp $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 35 hiện chấp nhận tham số ngữ cảnh, là đối tượng import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 18 cho phép kết hợp các tùy chọn cấu hình SSL, chứng chỉ và khóa riêng vào một cấu trúc duy nhất (có khả năng tồn tại lâu dài)

(Đóng góp bởi Giampaolo Rodolà; bpo-8807. )

không đồng bộ¶

$ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 37 hiện cung cấp một phương thức $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 38 trả về một cặp $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 39 được gọi khi kết nối thực sự được thiết lập với một điểm cuối từ xa mới. Điều này được cho là được sử dụng để thay thế cho $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 40 cũ và tránh người dùng gọi trực tiếp cho $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 41

(Đóng góp bởi Giampaolo Rodolà; bpo-6706. )

tệp tạm thời¶

Mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 42 có trình quản lý bối cảnh mới, $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 43 cung cấp khả năng dọn dẹp dễ dàng các thư mục tạm thời

>>> import imp >>> imp.get_tag() 'cpython-32' 52

(Đóng góp bởi Neil Schemenauer và Nick Coghlan; bpo-5178. )

quan sát¶

  • Mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 44 có chức năng mới $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 45 để dễ dàng xác định trạng thái hiện tại của bộ tạo-bộ lặp

    >>> import imp >>> imp.get_tag() 'cpython-32' 53

    (Đóng góp bởi Rodolpho Eckhardt và Nick Coghlan, bpo-10220. )

  • Để hỗ trợ tra cứu mà không có khả năng kích hoạt thuộc tính động, mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 44 có chức năng mới, $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 47. Không giống như >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 42, đây là tìm kiếm chỉ đọc thực sự, đảm bảo không thay đổi trạng thái trong khi tìm kiếm

    >>> import imp >>> imp.get_tag() 'cpython-32' 54

(Đóng góp bởi Michael Foord. )

pydoc¶

Mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 49 hiện cung cấp giao diện máy chủ web được cải thiện nhiều, cũng như tùy chọn dòng lệnh mới >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 15 để tự động mở cửa sổ trình duyệt để hiển thị máy chủ đó

>>> import imp >>> imp.get_tag() 'cpython-32' 55

(Đóng góp bởi Ron Adam; bpo-2001. )

dis¶

Mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 51 có thêm hai chức năng mới để kiểm tra mã, $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 52 và $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 53. Cả hai đều cung cấp thông tin đối tượng mã chi tiết cho hàm, phương thức, chuỗi mã nguồn hoặc đối tượng mã được cung cấp. Cái trước trả về một chuỗi và cái sau in nó

>>> import imp >>> imp.get_tag() 'cpython-32' 56

Ngoài ra, hàm $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 54 hiện chấp nhận các đối số chuỗi để thành ngữ chung $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 55 có thể được rút ngắn thành $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 56

>>> import imp >>> imp.get_tag() 'cpython-32' 57

Kết hợp lại với nhau, những cải tiến này giúp bạn khám phá cách CPython được triển khai dễ dàng hơn và tự mình xem cú pháp ngôn ngữ thực hiện chức năng gì

(Nick Coghlan đóng góp trong bpo-9147. )

dbm¶

Tất cả các mô-đun cơ sở dữ liệu hiện hỗ trợ các phương thức $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 57 và $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 58

(Được đề xuất bởi Ray Allen trong bpo-9523. )

ctypes¶

Một loại mới, $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 59 đại diện cho kiểu dữ liệu C $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 60

Địa điểm¶

Mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 61 có ba chức năng mới hữu ích để báo cáo chi tiết về cài đặt Python nhất định

  • $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 62 liệt kê tất cả các thư mục gói trang web toàn cầu

  • $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 63 báo cáo về thư mục cơ sở của người dùng nơi dữ liệu có thể được lưu trữ

  • $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 64 tiết lộ đường dẫn thư mục gói trang web dành riêng cho người dùng

>>> import imp >>> imp.get_tag() 'cpython-32' 58

Thuận tiện, một số chức năng của trang web có thể truy cập trực tiếp từ dòng lệnh

>>> import imp >>> imp.get_tag() 'cpython-32' 59

(Đóng góp bởi Tarek Ziadé trong bpo-6693. )

sysconfig¶

Mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 19 mới giúp dễ dàng khám phá các đường dẫn cài đặt và các biến cấu hình khác nhau giữa các nền tảng và cài đặt

Mô-đun cung cấp quyền truy cập các chức năng truy cập đơn giản cho thông tin nền tảng và phiên bản

  • $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 66 trả về các giá trị như linux-i586 hoặc macosx-10. 6-ppc

  • $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 67 trả về một chuỗi phiên bản Python chẳng hạn như “3. 2”

Nó cũng cung cấp quyền truy cập vào các đường dẫn và biến tương ứng với một trong bảy lược đồ được đặt tên được sử dụng bởi $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 68. Chúng bao gồm posix_prefix, posix_home, posix_user, nt, nt_user, os2, os2_home

  • $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 69 tạo một từ điển chứa các đường dẫn cài đặt cho sơ đồ cài đặt hiện tại

  • $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 70 trả về một từ điển các biến cụ thể của nền tảng

Ngoài ra còn có một giao diện dòng lệnh thuận tiện

>>> import imp >>> imp.get_tag() 'cpython-32' 80

(Chuyển ra khỏi Distutils bởi Tarek Ziadé. )

pdb¶

Mô-đun trình gỡ lỗi $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 71 đã đạt được một số cải tiến về khả năng sử dụng

  • $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 72 hiện có tùy chọn $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 73 thực thi các lệnh như được cung cấp trong tệp script $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 74

  • Tệp tập lệnh $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 74 có thể chứa các lệnh $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 76 và $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 77 tiếp tục gỡ lỗi

  • Hàm tạo của lớp $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 78 hiện chấp nhận đối số nosigint

  • Lệnh mới. $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 79, $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 80 và $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 81 để liệt kê mã nguồn

  • Lệnh mới. $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 82 và $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 83 để hiển thị hoặc ẩn giá trị của một biểu thức nếu nó đã thay đổi

  • Lệnh mới. $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 84 để bắt đầu trình thông dịch tương tác chứa tên toàn cục và cục bộ được tìm thấy trong phạm vi hiện tại

  • Điểm dừng có thể bị xóa bằng số điểm dừng

(Đóng góp bởi Georg Brandl, Antonio Cuni và Ilya Sandler. )

configparser¶

Mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 85 đã được sửa đổi để cải thiện khả năng sử dụng và khả năng dự đoán của trình phân tích cú pháp mặc định và cú pháp INI được hỗ trợ của nó. Lớp >>> import imp >>> imp.get_tag() 'cpython-32' 6 cũ đã bị xóa để thay thế cho lớp $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 87 đã được đổi tên thành lớp >>> import imp >>> imp.get_tag() 'cpython-32' 6. Hỗ trợ cho các nhận xét nội tuyến hiện bị tắt theo mặc định và các phần hoặc tùy chọn trùng lặp không được phép trong một nguồn cấu hình

Trình phân tích cú pháp cấu hình đã nhận được API mới dựa trên giao thức ánh xạ

>>> import imp >>> imp.get_tag() 'cpython-32' 81

API mới được triển khai trên API cổ điển, do đó, các lớp con của trình phân tích cú pháp tùy chỉnh sẽ có thể sử dụng nó mà không cần sửa đổi

Cấu trúc tệp INI được chấp nhận bởi trình phân tích cú pháp cấu hình hiện có thể được tùy chỉnh. Người dùng có thể chỉ định các dấu phân cách tùy chọn/giá trị thay thế và tiền tố nhận xét, thay đổi tên của phần MẶC ĐỊNH hoặc chuyển đổi cú pháp nội suy

Có hỗ trợ cho phép nội suy có thể cắm bao gồm một trình xử lý nội suy bổ sung $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 89

>>> import imp >>> imp.get_tag() 'cpython-32' 82

Một số tính năng nhỏ hơn cũng được giới thiệu, như hỗ trợ chỉ định mã hóa trong thao tác đọc, chỉ định giá trị dự phòng cho hàm nhận hoặc đọc trực tiếp từ từ điển và chuỗi

(Mọi thay đổi do Łukasz Langa đóng góp. )

urllib. phân tích cú pháp¶

Một số cải tiến về khả năng sử dụng đã được thực hiện cho mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 90

Hàm $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 91 hiện hỗ trợ các địa chỉ IPv6 như được mô tả trong RFC 2732

>>> import imp >>> imp.get_tag() 'cpython-32' 83

Hàm $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 92 hiện trả về một bộ có tên .

>>> import imp >>> imp.get_tag() 'cpython-32' 84

Và, hàm $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 93 giờ linh hoạt hơn nhiều, chấp nhận kiểu chuỗi hoặc kiểu byte cho đối số truy vấn. Nếu đó là một chuỗi, thì các tham số an toàn, mã hóa và lỗi sẽ được gửi tới $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 94 để mã hóa

>>> import imp >>> imp.get_tag() 'cpython-32' 85

Như được trình bày chi tiết trong Phân tích cú pháp các byte được mã hóa ASCII , tất cả các hàm $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 90 hiện chấp nhận các chuỗi byte được mã hóa ASCII làm đầu vào, miễn là chúng . Nếu các chuỗi byte được mã hóa ASCII được cung cấp làm tham số, thì các kiểu trả về cũng sẽ là một chuỗi byte được mã hóa ASCII.

>>> import imp >>> imp.get_tag() 'cpython-32' 86

(Công trình của Nick Coghlan, Dan Mahn và Senthil Kumaran trong bpo-2987, bpo-5468 và bpo-9873. )

hộp thư¶

Nhờ nỗ lực phối hợp của R. David Murray, mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 74 đã được sửa cho Python 3. 2. Thách thức là hộp thư ban đầu được thiết kế với giao diện văn bản, nhưng email được thể hiện tốt nhất bằng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 78 vì các phần khác nhau của thư có thể có các mã hóa khác nhau

Giải pháp khai thác hỗ trợ nhị phân của gói >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 73 để phân tích cú pháp email tùy ý. Ngoài ra, giải pháp yêu cầu một số thay đổi API

Đúng như mong đợi, phương thức import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 36 cho đối tượng >>> import imp >>> imp.get_tag() 'cpython-32' 300 hiện chấp nhận đầu vào nhị phân

>>> import imp >>> imp.get_tag() 'cpython-32' 301 và đầu vào tệp văn bản không được dùng nữa. Ngoài ra, đầu vào chuỗi sẽ không thành công sớm nếu sử dụng các ký tự không phải ASCII. Trước đây, nó sẽ không thành công khi email được xử lý ở bước sau

Ngoài ra còn có hỗ trợ cho đầu ra nhị phân. Phương thức >>> import imp >>> imp.get_tag() 'cpython-32' 302 hiện trả về một tệp ở chế độ nhị phân (nơi nó được sử dụng để đặt tệp thành chế độ văn bản không chính xác). Ngoài ra còn có một phương thức >>> import imp >>> imp.get_tag() 'cpython-32' 303 mới trả về một đại diện >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 78 của một thông báo tương ứng với một khóa đã cho

Vẫn có thể nhận được đầu ra không nhị phân bằng phương pháp cũ của API >>> import imp >>> imp.get_tag() 'cpython-32' 305, nhưng cách tiếp cận đó không hữu ích lắm. Thay vào đó, cách tốt nhất là trích xuất thông báo từ đối tượng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 91 hoặc tải chúng từ đầu vào nhị phân

(Đóng góp bởi R. David Murray, với nỗ lực của Steffen Daode Nurpmeso và bản vá ban đầu của Victor Stinner trong bpo-9124. )

rùademo¶

Mã trình diễn cho mô-đun >>> import imp >>> imp.get_tag() 'cpython-32' 307 đã được chuyển từ thư mục Demo sang thư viện chính. Nó bao gồm hơn một chục tập lệnh mẫu với màn hình sống động. Đang ở trên >>> import imp >>> imp.get_tag() 'cpython-32' 308, giờ đây nó có thể được chạy trực tiếp từ dòng lệnh

>>> import imp >>> imp.get_tag() 'cpython-32' 87

(Được chuyển từ thư mục Demo của Alexander Belopolsky trong bpo-10199. )

Đa luồng¶

  • Cơ chế thực thi tuần tự hóa các chuỗi Python chạy đồng thời (thường được gọi là GIL hoặc Khóa phiên dịch toàn cầu) đã được viết lại. Trong số các mục tiêu là khoảng thời gian chuyển đổi có thể dự đoán được nhiều hơn và giảm chi phí hoạt động do tranh chấp khóa và số lượng cuộc gọi hệ thống tiếp theo. Khái niệm về “khoảng thời gian kiểm tra” để cho phép chuyển đổi luồng đã bị loại bỏ và được thay thế bằng khoảng thời gian tuyệt đối được biểu thị bằng giây. Tham số này có thể điều chỉnh thông qua >>> import imp >>> imp.get_tag() 'cpython-32' 309. Nó hiện đang mặc định là 5 mili giây.

    Chi tiết bổ sung về việc triển khai có thể được đọc từ thư trong danh sách gửi thư của python-dev (tuy nhiên, "các yêu cầu ưu tiên" như được hiển thị trong thư này không được lưu giữ để đưa vào)

    (Đóng góp bởi Antoine Pitrou. )

  • Khóa thông thường và khóa đệ quy hiện chấp nhận đối số thời gian chờ tùy chọn cho phương thức >>> import imp >>> imp.get_tag() 'cpython-32' 310 của chúng. (Đóng góp bởi Antoine Pitrou; bpo-7316. )

  • Tương tự, >>> import imp >>> imp.get_tag() 'cpython-32' 311 cũng đạt được đối số hết thời gian chờ. (Đóng góp bởi Torsten Landschoff; bpo-850728. )

  • Việc mua lại khóa thông thường và đệ quy hiện có thể bị gián đoạn bởi các tín hiệu trên nền tảng sử dụng Pthreads. Điều này có nghĩa là các chương trình Python bế tắc trong khi lấy khóa có thể bị tiêu diệt thành công bằng cách liên tục gửi SIGINT tới quy trình (bằng cách nhấn Ctrl+C trong hầu hết các trình bao). (Đóng góp bởi Reid Kleckner; bpo-8844. )

Tối ưu hóa¶

Một số cải tiến hiệu suất nhỏ đã được thêm vào

  • Trình tối ưu hóa lỗ nhìn trộm của Python hiện nhận dạng các mẫu như >>> import imp >>> imp.get_tag() 'cpython-32' 312 như là một bài kiểm tra tư cách thành viên trong một tập hợp các hằng số. Trình tối ưu hóa chuyển đổi lại >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 72 dưới dạng >>> import imp >>> imp.get_tag() 'cpython-32' 314 và lưu trữ hằng số dựng sẵn

    Bây giờ hình phạt về tốc độ không còn nữa, thực tế là bắt đầu viết các bài kiểm tra tư cách thành viên bằng cách sử dụng ký hiệu tập hợp. Phong cách này vừa rõ ràng về mặt ngữ nghĩa vừa hoạt động nhanh

    >>> import imp >>> imp.get_tag() 'cpython-32' 88

    (Bản vá lỗi và các thử nghiệm bổ sung do Dave Malcolm đóng góp; bpo-6690)

  • Tuần tự hóa và hủy tuần tự hóa dữ liệu bằng mô-đun >>> import imp >>> imp.get_tag() 'cpython-32' 315 hiện nhanh hơn nhiều lần

    (Đóng góp bởi Alexandre Vassalotti, Antoine Pitrou và nhóm Unladen Swallow trong bpo-9410 và bpo-3873. )

  • Thuật toán Timsort được sử dụng trong >>> import imp >>> imp.get_tag() 'cpython-32' 316 và >>> import imp >>> imp.get_tag() 'cpython-32' 317 hiện chạy nhanh hơn và sử dụng ít bộ nhớ hơn khi được gọi bằng hàm phím . Trước đây, mọi phần tử của danh sách được bao bọc bởi một đối tượng tạm thời ghi nhớ giá trị khóa được liên kết với từng phần tử. Bây giờ, hai mảng khóa và giá trị được sắp xếp song song. Điều này giúp tiết kiệm bộ nhớ được tiêu thụ bởi các trình bao bọc sắp xếp và nó tiết kiệm thời gian bị mất khi so sánh ủy quyền.

    (Bản vá của Daniel Stutzbach trong bpo-9915. )

  • Hiệu suất giải mã JSON được cải thiện và mức tiêu thụ bộ nhớ giảm bất cứ khi nào cùng một chuỗi được lặp lại cho nhiều khóa. Ngoài ra, mã hóa JSON hiện sử dụng tốc độ C khi đối số >>> import imp >>> imp.get_tag() 'cpython-32' 318 là đúng

    (Được đóng góp bởi Antoine Pitrou trong bpo-7451 và bởi Raymond Hettinger và Antoine Pitrou trong bpo-10314. )

  • Các khóa đệ quy (được tạo bằng API >>> import imp >>> imp.get_tag() 'cpython-32' 319) hiện được hưởng lợi từ việc triển khai C giúp chúng nhanh như các khóa thông thường và nhanh hơn từ 10 đến 15 lần so với triển khai Python thuần túy trước đây của chúng

    (Đóng góp bởi Antoine Pitrou; bpo-3001. )

  • Thuật toán tìm kiếm nhanh trong stringlib hiện được sử dụng bởi các phương thức >>> import imp >>> imp.get_tag() 'cpython-32' 320, >>> import imp >>> imp.get_tag() 'cpython-32' 321, >>> import imp >>> imp.get_tag() 'cpython-32' 322 và >>> import imp >>> imp.get_tag() 'cpython-32' 323 trên các đối tượng >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 78, >>> import imp >>> imp.get_tag() 'cpython-32' 325 và >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 20. Tương tự như vậy, thuật toán cũng được sử dụng bởi >>> import imp >>> imp.get_tag() 'cpython-32' 327, >>> import imp >>> imp.get_tag() 'cpython-32' 328, >>> import imp >>> imp.get_tag() 'cpython-32' 321 và >>> import imp >>> imp.get_tag() 'cpython-32' 330

    (Bản vá của Florent Xicluna trong bpo-7622 và bpo-7462. )

  • Chuyển đổi số nguyên sang chuỗi hiện hoạt động hai "chữ số" cùng một lúc, giảm số lượng phép chia và phép toán modulo

    (bpo-6713 của Gawain Bolton, Mark Dickinson, và Victor Stinner. )

Có một số tối ưu hóa nhỏ khác. Đặt khác biệt hiện chạy nhanh hơn khi một toán hạng lớn hơn nhiều so với toán hạng kia (bản vá của Andress Bennetts trong bpo-8685). Phương pháp >>> import imp >>> imp.get_tag() 'cpython-32' 331 có triển khai nhanh hơn (bpo-1569291 của Alexander Belopolsky). >>> import imp >>> imp.get_tag() 'cpython-32' 332 có bộ đệm hiệu quả hơn (bpo-3709 của Andrew Schaaf). Chức năng >>> import imp >>> imp.get_tag() 'cpython-32' 333 đã được tăng tốc (bpo-10160 bởi Christos Georgiou). Và >>> import imp >>> imp.get_tag() 'cpython-32' 6 tải các đối số nhiều dòng nhanh hơn một chút (bpo-7113 của Łukasz Langa)

Unicode¶

Python đã được cập nhật lên Unicode 6. 0. 0. Bản cập nhật cho tiêu chuẩn bổ sung hơn 2.000 ký tự mới bao gồm các biểu tượng cảm xúc quan trọng đối với điện thoại di động

Ngoài ra, tiêu chuẩn cập nhật đã thay đổi thuộc tính ký tự cho hai ký tự tiếng Kannada (U+0CF1, U+0CF2) và một ký tự số New Tai Lue (U+19DA), khiến ký tự cũ đủ điều kiện để sử dụng trong số nhận dạng trong khi loại bỏ tiêu chuẩn sau. Để biết thêm thông tin, hãy xem Thay đổi cơ sở dữ liệu ký tự Unicode

Codec¶

Đã thêm hỗ trợ cho mã hóa DOS tiếng Ả Rập cp720 (bpo-1616979)

Mã hóa MBCS không còn bỏ qua đối số trình xử lý lỗi. Ở chế độ nghiêm ngặt mặc định, nó sẽ tăng >>> import imp >>> imp.get_tag() 'cpython-32' 335 khi gặp chuỗi byte không thể giải mã được và >>> import imp >>> imp.get_tag() 'cpython-32' 336 cho ký tự không thể mã hóa

Bộ giải mã MBCS hỗ trợ trình xử lý lỗi >>> import imp >>> imp.get_tag() 'cpython-32' 337 và >>> import imp >>> imp.get_tag() 'cpython-32' 338 để giải mã và >>> import imp >>> imp.get_tag() 'cpython-32' 337 và >>> import imp >>> imp.get_tag() 'cpython-32' 340 để mã hóa

Để mô phỏng Python3. 1 mã hóa MBCS, chọn trình xử lý >>> import imp >>> imp.get_tag() 'cpython-32' 338 để giải mã và trình xử lý >>> import imp >>> imp.get_tag() 'cpython-32' 340 để mã hóa

Trên Mac OS X, Python giải mã các đối số dòng lệnh bằng >>> import imp >>> imp.get_tag() 'cpython-32' 343 thay vì mã hóa ngôn ngữ

Theo mặc định, >>> import imp >>> imp.get_tag() 'cpython-32' 344 sử dụng mã hóa >>> import imp >>> imp.get_tag() 'cpython-32' 343 trên Windows (thay vì >>> import imp >>> imp.get_tag() 'cpython-32' 346) và trình xử lý lỗi >>> import imp >>> imp.get_tag() 'cpython-32' 347 trên tất cả các hệ điều hành

Tài liệu¶

Các tài liệu tiếp tục được cải thiện

  • Một bảng liên kết nhanh đã được thêm vào đầu các phần dài như Các chức năng tích hợp sẵn . Trong trường hợp của >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 15, các liên kết được kèm theo các bảng tóm tắt kiểu trang phục để cung cấp cái nhìn tổng quan và chạy bộ nhớ mà không cần phải đọc tất cả các tài liệu.

  • Trong một số trường hợp, mã nguồn Python thuần túy có thể là phần bổ trợ hữu ích cho tài liệu, vì vậy hiện nay nhiều mô-đun có các liên kết nhanh đến phiên bản mới nhất của mã nguồn. Ví dụ: tài liệu mô-đun >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 06 có một liên kết nhanh ở trên cùng có nhãn

    Mã nguồn Lib/funcools. py

    (Đóng góp bởi Raymond Hettinger; xem lý do. )

  • Các tài liệu hiện chứa nhiều ví dụ và công thức nấu ăn hơn. Đặc biệt, mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 12 có một phần mở rộng, Ví dụ về biểu thức chính quy . Tương tự như vậy, mô-đun >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 15 tiếp tục được cập nhật với Công thức Itertools mới.

  • Mô-đun >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 32 hiện có triển khai phụ trợ bằng Python thuần túy. Không có chức năng đã được thay đổi. Điều này chỉ cung cấp một triển khai thay thế dễ đọc hơn

    (Đóng góp bởi Alexander Belopolsky trong bpo-9528. )

  • Thư mục >>> import imp >>> imp.get_tag() 'cpython-32' 353 không rõ ràng đã bị xóa. Một số bản trình diễn đã được tích hợp vào tài liệu, một số đã được chuyển đến thư mục >>> import imp >>> imp.get_tag() 'cpython-32' 354 và một số khác đã bị xóa hoàn toàn

    (Được đóng góp bởi Georg Brandl trong bpo-7962. )

nhàn rỗi¶

  • Menu định dạng hiện có tùy chọn xóa các tệp nguồn bằng cách loại bỏ khoảng trắng ở cuối

    (Đóng góp bởi Raymond Hettinger; bpo-5150. )

  • IDLE trên Mac OS X hiện hoạt động với cả Carbon AquaTk và Cocoa AquaTk

    (Đóng góp bởi Kevin Walzer, Ned Deily và Ronald Oussoren; bpo-6075. )

Kho mã¶

Ngoài kho lưu trữ mã Subversion hiện có tại https. //svn. con trăn. org hiện đã có kho lưu trữ Mercurial tại https. //hg. con trăn. tổ chức/

Sau 3. 2, có kế hoạch chuyển sang Mercurial làm kho lưu trữ chính. Hệ thống kiểm soát phiên bản phân tán này sẽ giúp các thành viên của cộng đồng tạo và chia sẻ các bộ thay đổi bên ngoài dễ dàng hơn. Xem PEP 385 để biết chi tiết

Để tìm hiểu cách sử dụng hệ thống kiểm soát phiên bản mới, hãy xem Bắt đầu nhanh hoặc Hướng dẫn về quy trình làm việc của Mercurial

Thay đổi về API Build và C¶

Các thay đổi đối với quy trình xây dựng của Python và API C bao gồm

  • Các tập lệnh nhàn rỗi, pydoc và 2to3 hiện đã được cài đặt với hậu tố dành riêng cho phiên bản trên >>> import imp >>> imp.get_tag() 'cpython-32' 355 (bpo-10679)

  • Các hàm C truy cập Cơ sở dữ liệu Unicode hiện chấp nhận và trả về các ký tự từ phạm vi Unicode đầy đủ, ngay cả trên các bản dựng unicode hẹp (Py_UNICODE_TOLOWER, Py_UNICODE_ISDECIMAL, v.v.). Một sự khác biệt có thể nhìn thấy trong Python là giờ đây, >>> import imp >>> imp.get_tag() 'cpython-32' 356 trả về giá trị chính xác cho các điểm mã lớn và >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 48 có thể coi nhiều ký tự hơn là có thể in được

    (Báo cáo bởi Bupjoe Lee và sửa lỗi bởi Amaury Forgeot D’Arc; bpo-5127. )

  • Gotos được tính toán hiện được bật theo mặc định trên các trình biên dịch được hỗ trợ (được phát hiện bởi tập lệnh cấu hình). Chúng vẫn có thể bị vô hiệu hóa có chọn lọc bằng cách chỉ định >>> import imp >>> imp.get_tag() 'cpython-32' 358

    (Đóng góp bởi Antoine Pitrou; bpo-9203. )

  • Tùy chọn >>> import imp >>> imp.get_tag() 'cpython-32' 359 đã bị xóa. Cơ sở dữ liệu unicode tích hợp hiện được sử dụng cho tất cả các chức năng

    (Đóng góp bởi Amaury Forgeot D'Arc; bpo-9210. )

  • Giá trị băm bây giờ là giá trị của một loại mới, >>> import imp >>> imp.get_tag() 'cpython-32' 360, được định nghĩa là có cùng kích thước với một con trỏ. Trước đây chúng thuộc loại dài, trên một số hệ điều hành 64 bit vẫn chỉ dài 32 bit. Kết quả của bản sửa lỗi này là >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 72 và >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 38 hiện có thể chứa nhiều hơn >>> import imp >>> imp.get_tag() 'cpython-32' 363 mục nhập trên các bản dựng có con trỏ 64 bit (trước đây, chúng có thể phát triển đến kích thước đó nhưng hiệu suất của chúng bị giảm sút nghiêm trọng)

    (Được đề xuất bởi Raymond Hettinger và được thực hiện bởi Benjamin Peterson; bpo-9778. )

  • Macro mới >>> import imp >>> imp.get_tag() 'cpython-32' 364 sao chép trạng thái của danh sách đối số biến. Nó tương đương với C99 va_copy nhưng có sẵn trên mọi nền tảng Python (bpo-2443)

  • Hàm API C mới >>> import imp >>> imp.get_tag() 'cpython-32' 365 cho phép trình thông dịch nhúng đặt >>> import imp >>> imp.get_tag() 'cpython-32' 366 mà không cần sửa đổi >>> import imp >>> imp.get_tag() 'cpython-32' 308 (bpo-5753)

  • >>> import imp >>> imp.get_tag() 'cpython-32' 368 hiện chỉ khả dụng ở dạng macro. Khai báo hàm, được giữ vì lý do tương thích ngược, hiện đã bị xóa – macro được giới thiệu vào năm 1997 (bpo-8276)

  • Có một chức năng mới >>> import imp >>> imp.get_tag() 'cpython-32' 369 tương tự như >>> import imp >>> imp.get_tag() 'cpython-32' 370. Cả hai đều phục vụ để chuyển đổi Python >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 38 thành loại có độ rộng cố định gốc đồng thời cung cấp khả năng phát hiện các trường hợp chuyển đổi không phù hợp (bpo-7767)

  • Hàm ________ 1372 hiện trả về giá trị không bằng nếu chuỗi Python bị kết thúc NULL

  • Có một chức năng mới >>> import imp >>> imp.get_tag() 'cpython-32' 373 giống như >>> import imp >>> imp.get_tag() 'cpython-32' 374 nhưng cho phép chỉ định một chuỗi tài liệu. Điều này cho phép các ngoại lệ C có khả năng tự tạo tài liệu giống như các đối tác Python thuần túy của chúng (bpo-7033)

  • Khi được biên dịch với tùy chọn >>> import imp >>> imp.get_tag() 'cpython-32' 375, bộ cấp phát pymalloc sẽ tự động bị tắt khi chạy trong Valgrind. Điều này giúp cải thiện khả năng phát hiện rò rỉ bộ nhớ khi chạy trong Valgrind, đồng thời tận dụng lợi thế của pymalloc vào những thời điểm khác (bpo-2422)

  • Đã xóa định dạng >>> import imp >>> imp.get_tag() 'cpython-32' 376 khỏi các hàm PyArg_Parse. Định dạng này không còn được sử dụng và nó chưa bao giờ được ghi lại (bpo-8837)

Có một số thay đổi nhỏ khác đối với C-API. Xem tệp Misc/TIN TỨC để biết danh sách đầy đủ

Ngoài ra, có một số bản cập nhật cho bản dựng Mac OS X, xem Mac/BuildScript/README. txt để biết chi tiết. Đối với người dùng đang chạy bản dựng 32/64 bit, đã xảy ra sự cố đã biết với Tcl/Tk mặc định trên Mac OS X 10. 6. Theo đó, chúng tôi khuyên bạn nên cài đặt một bản cập nhật thay thế như ActiveState Tcl/Tk 8. 5. 9. Xem https. //www. con trăn. org/download/mac/tcltk/ để biết thêm chi tiết

Chuyển sang Python 3. 2¶

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

  • Mô-đun $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 85 có một số lần dọn dẹp. Thay đổi chính là thay thế lớp >>> import imp >>> imp.get_tag() 'cpython-32' 6 cũ bằng lớp thay thế ưu tiên lâu đời $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 87. Ngoài ra còn một số điểm không tương thích nhỏ hơn

    • Cú pháp nội suy hiện được xác thực trên các hoạt động của $ ./helm.py --help # top level help (launch and move) $ ./helm.py launch --help # help for launch options $ ./helm.py launch --missiles # set missiles=True and torpedos=False $ ./helm.py steer --course 180 --speed 5 # set movement parameters 57 và >>> import imp >>> imp.get_tag() 'cpython-32' 381. Trong lược đồ nội suy mặc định, chỉ có hai mã thông báo có dấu phần trăm là hợp lệ. >>> import imp >>> imp.get_tag() 'cpython-32' 382 và >>> import imp >>> imp.get_tag() 'cpython-32' 383, cái sau là dấu phần trăm thoát

    • Các phương thức >>> import imp >>> imp.get_tag() 'cpython-32' 381 và >>> import imp >>> imp.get_tag() 'cpython-32' 385 hiện xác minh rằng các giá trị là chuỗi thực. Trước đây, các loại không được hỗ trợ có thể vô tình được đưa vào

    • Các phần hoặc tùy chọn trùng lặp từ một nguồn duy nhất hiện tăng >>> import imp >>> imp.get_tag() 'cpython-32' 386 hoặc >>> import imp >>> imp.get_tag() 'cpython-32' 387. Trước đây, các bản sao sẽ âm thầm ghi đè lên một mục trước đó

    • Nhận xét nội tuyến hiện bị tắt theo mặc định, vì vậy bây giờ ;

    • Nhận xét bây giờ có thể được thụt lề. Do đó, đối với ; . Điều này giữ cho các ký tự tiền tố nhận xét trong các giá trị không bị nhầm thành nhận xét

    • >>> import imp >>> imp.get_tag() 'cpython-32' 388 hiện là một giá trị hợp lệ và không còn được tự động chuyển đổi thành chuỗi rỗng nữa. Đối với các chuỗi trống, hãy sử dụng >>> import imp >>> imp.get_tag() 'cpython-32' 389 trong một dòng

  • Mô-đun >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 75 đã được làm lại rộng rãi, có nghĩa là các API của nó thường không tương thích với 3. 1 APIs

  • >>> import imp >>> imp.get_tag() 'cpython-32' 325 objects can no longer be used as filenames; instead, they should be converted to >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 78

  • The >>> import imp >>> imp.get_tag() 'cpython-32' 393 and >>> import imp >>> imp.get_tag() 'cpython-32' 394 have been renamed to >>> import imp >>> imp.get_tag() 'cpython-32' 395 and >>> import imp >>> imp.get_tag() 'cpython-32' 396 for clarity. The old names have been deprecated. (See bpo-8990. )

  • >>> import imp >>> imp.get_tag() 'cpython-32' 397 functions

    • “t#” format has been removed. use “s#” or “s*” instead

    • Định dạng “w” và “w#” đã bị xóa. use “w*” instead

  • The >>> import imp >>> imp.get_tag() 'cpython-32' 398 type, deprecated in 3. 1, has been removed. To wrap opaque C pointers in Python objects, the >>> import imp >>> imp.get_tag() 'cpython-32' 399 API should be used instead; the new type has a well-defined interface for passing typing safety information and a less complicated signature for calling a destructor

  • The >>> import imp >>> imp.get_tag() 'cpython-32' 500 function was removed because it had a flawed design

  • The >>> import imp >>> imp.get_tag() 'cpython-32' 501 function and method now salt string seeds with an sha512 hash function. To access the previous version of seed in order to reproduce Python 3. 1 sequences, set the version argument to 1, >>> import imp >>> imp.get_tag() 'cpython-32' 502

  • The previously deprecated >>> import imp >>> imp.get_tag() 'cpython-32' 503 function has been removed in favor of the static methods >>> import imp >>> imp.get_tag() 'cpython-32' 504 and >>> import imp >>> imp.get_tag() 'cpython-32' 505. This change solves the confusion around which types were supported by the >>> import imp >>> imp.get_tag() 'cpython-32' 506 module. Now, >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 20, >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 78, and >>> import imp >>> imp.get_tag() 'cpython-32' 325 each have their own maketrans and translate methods with intermediate translation tables of the appropriate type

    (Contributed by Georg Brandl; bpo-5675. )

  • The previously deprecated >>> import imp >>> imp.get_tag() 'cpython-32' 510 function has been removed in favor of a plain >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 06 statement which can accept multiple context managers. The latter technique is faster (because it is built-in), and it does a better job finalizing multiple context managers when one of them raises an exception

    >>> import imp >>> imp.get_tag() 'cpython-32' 89

    (Đóng góp bởi Georg Brandl và Mattias Brändström; số phát hành appspot 53094. )

  • >>> import imp >>> imp.get_tag() 'cpython-32' 512 now only allows bytes for the >>> import imp >>> imp.get_tag() 'cpython-32' 513 string pack code. Trước đây, nó sẽ chấp nhận các đối số văn bản và ngầm mã hóa chúng thành byte bằng UTF-8. This was problematic because it made assumptions about the correct encoding and because a variable-length encoding can fail when writing to fixed length segment of a structure

    Code such as >>> import imp >>> imp.get_tag() 'cpython-32' 514 should be rewritten with to use bytes instead of text, >>> import imp >>> imp.get_tag() 'cpython-32' 515

    (Discovered by David Beazley and fixed by Victor Stinner; bpo-10783. )

  • The >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 92 class now raises an >>> import imp >>> imp.get_tag() 'cpython-32' 517 when a parse fails. Trước đây nó đã tăng một >>> import imp >>> imp.get_tag() 'cpython-32' 518

  • The new, longer >>> cmd = 'deploy sneezy.example.com sleepy.example.com -u skycaptain' >>> result = parser.parse_args(cmd.split()) >>> result.action 'deploy' >>> result.targets ['sneezy.example.com', 'sleepy.example.com'] >>> result.user 'skycaptain' 47 value on floats may break doctests which rely on the old output format

  • In >>> import imp >>> imp.get_tag() 'cpython-32' 520, the default value for close_fds is now >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 42 under Unix; under Windows, it is >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 42 if the three standard streams are set to import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 39, >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 46 otherwise. Previously, close_fds was always >>> parser.parse_args('-h'.split()) usage: manage_cloud.py [-h] -u USER {deploy,start,stop} HOSTNAME [HOSTNAME ...] Manage servers positional arguments: {deploy,start,stop} action on each target HOSTNAME url for target machines optional arguments: -h, --help show this help message and exit -u USER, --user USER login as user Tested on Solaris and Linux 46 by default, which produced difficult to solve bugs or race conditions when open file descriptors would leak into the child process

  • Support for legacy HTTP 0. 9 đã bị xóa khỏi >>> import imp >>> imp.get_tag() 'cpython-32' 526 và import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 90. Such support is still present on the server side (in import argparse parser = argparse.ArgumentParser(prog='HELM') subparsers = parser.add_subparsers() parser_l = subparsers.add_parser('launch', help='Launch Control') # first subgroup parser_l.add_argument('-m', '--missiles', action='store_true') parser_l.add_argument('-t', '--torpedos', action='store_true') parser_m = subparsers.add_parser('move', help='Move Vessel', # second subgroup aliases=('steer', 'turn')) # equivalent names parser_m.add_argument('-c', '--course', type=int, required=True) parser_m.add_argument('-s', '--speed', type=int, default=0) 97)

    (Contributed by Antoine Pitrou, bpo-10711. )

  • SSL sockets in timeout mode now raise >>> import imp >>> imp.get_tag() 'cpython-32' 529 when a timeout occurs, rather than a generic >>> import imp >>> imp.get_tag() 'cpython-32' 530

    (Contributed by Antoine Pitrou, bpo-10272. )

  • The misleading functions >>> import imp >>> imp.get_tag() 'cpython-32' 531 and >>> import imp >>> imp.get_tag() 'cpython-32' 532 have been officially deprecated. The thread-state aware APIs (such as >>> import imp >>> imp.get_tag() 'cpython-32' 533 and >>> import imp >>> imp.get_tag() 'cpython-32' 534) should be used instead

  • Due to security risks, >>> import imp >>> imp.get_tag() 'cpython-32' 535 has been deprecated, and a new function, >>> import imp >>> imp.get_tag() 'cpython-32' 536, was added to replace it

Chủ đề