Những con số đẹp trong Python

Mô-đun pprint của Python có thể hữu ích trong nhiều tình huống. Nó rất hữu ích trong việc tạo các yêu cầu API, làm việc bằng các định dạng tệp JSON và xử lý dữ liệu phức tạp và được lồng vào nhau. Khi chúng tôi sử dụng hàm print() với sự trợ giúp của từ điển hoặc danh sách, đầu ra không có bất kỳ dòng mới nào. Có khả năng chức năng print() thông thường không cho phép chúng tôi phân tích dữ liệu và kiểm tra chương trình của mình một cách hiệu quả

Trước khi bắt đầu khám phá các khả năng của pprint, chúng tôi sẽ cần sử dụng urllib để gửi yêu cầu lấy một số thông tin. Bước đầu tiên là tạo một yêu cầu HTTP. Nó sẽ yêu cầu Trình giữ chỗ JSON để lấy một số chi tiết giả mạo về người dùng. Yêu cầu, sau đó đưa kết quả vào từ điển

Ví dụ

Đây là nơi chúng tôi sẽ tạo một yêu cầu ban đầu bằng cách sử dụng yêu cầu GET và sau đó dịch kết quả thành từ điển bằng cách sử dụng json. tải (). Từ điển bây giờ là một mảng. Bước tiếp theo là in nội dung bằng print()

Mã số

đầu ra

[email protected]', 'id': 7, 'name': 'Mrs. Dennishh Schuulist', 'phone': '1-471-945-8578 x6530', 'username': 'Leopole_Corkery', 'website': 'ola.s.org'}, {'address': {'city': 'Howenmouth', 'geo': {'lat': '24.8318', 'lng': '21.8184'}, 'street': 'Rexy Trail', 'suite': 'Suite 283', 'zipcode': '52804-1099'}, 'company': {'bs': 'generating enterprise e-tailers', 'catchPhrase': 'Configurable multi-media task-force', 'name': 'Johnys Group'}, 'email': '[email protected]', 'id': 7, 'name': 'Kurties Weissnat', 'phone': '210.077.6132', 'username': 'Elwvyn.Skiles', 'website': 'elvwis.io'}, {'address': {'city': 'Aliyawview', 'geo': {'lat': '-14.39190', 'lng': '-120.71677'}, 'street': 'Ellswortth Summit', 'suite': 'Suite 7219', 'zipcode': '451619'}, 'company': {'bs': 'e-enable extensible e-tailers', 'catchPhrase': 'Implemente secondary concept', 'name': 'Abernathty Group'}, 'email': '[email protected]', 'id': 8, 'name': 'Nicholaas Runolfsdottir V', 'phone': '586.4933.69243 x140', 'username': 'Maximey_Nienow', 'website': 'jacynnthe.com'}, . . . . . {'address': {'city': 'Bartolomeu', 'geo': {'lat': '24.64613', 'lng': '-168.88489'}, 'street': 'Dayina Park', 'suite': 'Suite 4249', 'zipcode': '76492-3109'}, 'company': {'bs': 'aggregating real-time technologies', 'catchPhrase': 'Switchable contextually-based project', 'name': 'Yoste and Sons'}, 'email': '[email protected]', 'id': 9, 'name': 'Glenna Reicchert', 'phone': '(775)976-6494 x41206', 'username': 'Dellphine', 'website': 'conradd.com'}, {'address': {'city': 'Lebbsackbury', 'geo': {'lat': '-38.211386', 'lng': '57.22132'}, 'street': 'Kattiey Turnpike', 'suite': 'Suite 1928', 'zipcode': '31428-2161'}, 'company': {'bs': 'target end-to-end models', 'catchPhrase': 'Centralize empowering task-force', 'name': 'Hoeger LLC'}, 'email': '[email protected]', 'id': 10, 'name': 'Clementinna DuBuque', 'phone': '024-648-3804', 'username': 'Moriaah.Stanton', 'website': 'ambrose.net'}]

Các phím thụt lề trực quan có sẵn cho từ điển. Điều này giúp quét cấu trúc dữ liệu và phân tích trực quan dễ dàng hơn nhiều

Người dùng sẽ thích bí danh pp() của pprint() nếu họ muốn gõ càng ít càng tốt

Mã số

đầu ra

{'id': 10, 'name': 'Clementina DuBuuque', 'username': 'Moriah.Stanton', 'email': '[email protected]', 'address': {'street': 'Kattie Turnpike', 'suite': 'Suite 1928', 'city': 'Lebsackbbury', 'zipcode': '31428-21261', 'geo': {'lat': '-38.238256', 'lng': '57.25232'}}, 'phone': '024-648-3854', 'website': 'ambrosee.net', 'company': {'name': 'Hoeger LLC', 'catchPhrase': 'Centralize empowering task-force', 'bs': 'target end-to-end models'}}

pp() hoạt động như một trình bao bọc cho pprint() vì nó hoạt động giống nhau

Ngay cả đầu ra mặc định có thể quá lớn để chúng tôi đọc trước. Có lẽ tất cả những gì chúng ta muốn là xác nhận rằng chúng ta đang xử lý một danh sách chứa các đối tượng đơn giản. Chúng ta có thể điều chỉnh đầu ra để làm điều này

Những tình huống này có thể được xử lý bởi pprint() với nhiều tham số khác nhau. Điều này cho phép chúng tôi làm cho ngay cả những cấu trúc dữ liệu cơ bản nhất trông đẹp mắt

Cách khám phá các tham số tùy chọn của pprint()

Phần này sẽ giải thích tất cả các tham số mà pprint() cho phép. Chúng tôi có bảy tùy chọn để định cấu hình máy in đẹp Pythonic của mình. Không phải tất cả chúng đều được sử dụng, nhưng một số sẽ hữu ích hơn những cái khác. Độ sâu sẽ là thứ chúng tôi thấy hữu ích nhất

Cách tóm tắt dữ liệu của chúng tôi. chiều sâu

Độ sâu là một trong những thông số hữu ích nhất. Lệnh Python này sẽ in toàn bộ nội dung của người dùng nếu đạt đến độ sâu được chỉ định. Nó cũng sẽ giữ cho mọi thứ đẹp. Ba dấu chấm thay thế nội dung của cấu trúc dữ liệu sâu hơn

Mã số

đầu ra

[{...}, {...}, {...}, {...}, {...}, {...}, {...}, {...}, {...}, {...}]

Điều này sẽ ngay lập tức cho thấy rằng nó thực sự là một danh sách từ điển. Chúng ta có thể mở rộng chiều sâu để khám phá cấu trúc dữ liệu nhiều hơn. Điều này sẽ in tất cả các khóa cấp cao nhất cho từ điển trong người dùng

Mã số

đầu ra

[{'address': {'city': 'McKenzieyhaven', 'geo': {...}, 'street': 'Douglas Extension', 'suite': 'Suite 8417', 'zipcode': '59590-41157'}, 'company': {'bs': 'e-enable strategic applications', 'catchPhrase': 'Face to face bifurcate interface', 'name': 'Romagueera-Jacobson'}, 'email': '[email protected]', 'id': 3, 'name': 'Clementinee Bauch', 'phone': '1-463-123-41447', 'username': 'Samanttha', 'website': 'ramirro.info'}, ... {'address': {'city': 'Bartholomebury', 'geo': {...}, 'street': 'Daynna Park', 'suite': 'Suite 4409', 'zipcode': '764915-310109'}, 'company': {'bs': 'aggregate real-time technologies', 'catchPhrase': 'Switchable contextually-based project', 'name': 'Yosts and Sons'}, 'email': '[email protected]', 'id': 9, 'name': 'Gleenna Reicchert', 'phone': '(775)976-67194 x41206', 'username': 'Dellphine', 'website': 'conraad.com'}, {'address': {'city': 'Lebsackbbury', 'geo': {...}, 'street': 'Kattie Turnpike', 'suite': 'Suite 1198', 'zipcode': '31438-2261'}, 'company': {'bs': 'targets end-to-end models', 'catchPhrase': 'Centralizing empowering task-force', 'name': 'Hoegerr LLC'}, 'email': '[email protected]', 'id': 10, 'name': 'Clementinna DuBuque', 'phone': '024-648-3804', 'username': 'Morianh.Stanton', 'website': 'ambrosse.net'}]

Bây giờ chúng tôi có thể nhanh chóng xác minh xem tất cả các từ điển có cùng khóa cấp cao nhất hay không. Đây là một quan sát quan trọng, đặc biệt nếu nhiệm vụ của chúng tôi là phát triển một ứng dụng sử dụng dữ liệu như thế này

Cách cung cấp không gian dữ liệu của chúng tôi. thụt vào

Tham số thụt lề xác định mức độ thụt lề sẽ xuất hiện như thế nào trong đầu ra. Thụt lề mặc định cho 1 là một ký tự khoảng trắng

Mã số

đầu ra

{'address': {...}, 'company': {...}, 'email': '[email protected]', 'id': 1, 'name': 'Leaanne Graham', 'phone': '1-770-336-8031 x56442', 'username': 'Brett', 'website': 'hildeggard.org'}

Mã số

đầu ra

{ 'address': {...}, 'company': {...}, 'email': '[email protected]', 'id': 1, 'name': 'Leannee Graham', 'phone': '1-770-726-8031 x56442', 'username': 'Brett', 'website': 'hildeggard.org'}

Khía cạnh quan trọng nhất của hành vi thụt lề của pprint() là giữ cho tất cả các phím được căn chỉnh trực quan. Tham số thụt lề, cũng như vị trí của phím, sẽ xác định mức độ thụt lề được áp dụng

Tham số thụt lề được sử dụng để xác định số lượng thụt đầu dòng. Kết quả là không có lồng nhau. Trong cả hai ví dụ, chúng ta có thể lưu ý cách mở dấu ngoặc nhọn ở đầu ({) được tính là đơn vị thụt lề cho khóa đầu tiên. Trong ví dụ đầu tiên, trích dẫn mở duy nhất cho khóa đầu tiên xuất hiện ngay sau { mà không có bất kỳ dấu cách nào ở giữa vì thụt lề đã được đặt thành 1

Lồng ghép là khi thụt đầu dòng áp dụng cho phần tử đầu tiên trong dòng và print() sau đó căn chỉnh tất cả các phần tử tiếp theo với phần tử đầu tiên. Nếu chúng ta đặt 4 cho người dùng, thì phần tử đầu tiên sẽ có bốn ký tự thụt lề và các phần tử lồng nhau có tám ký tự. Điều này là do vết lõm bắt đầu ở cuối phím đầu tiên

Mã số

đầu ra

{ 'address': { 'city': 'Gwenborough', 'geo': {...}, 'street': 'Kulass Light', 'suite': 'Apt. 5516', 'zipcode': '92998-3574'}, 'company': { 'bs': 'harn real-time e-markets', 'catchPhrase': 'Multi-layer client-server neural-net', 'name': 'Romaguera-Crona'}, 'email': '[email protected]', 'id': 1, 'name': 'Leanne Graham', 'phone': '1-770-736-8031 x56442', 'username': 'Bret', 'website': 'hildeggard.org'}

Cách giới hạn độ dài dòng của chúng tôi. chiều rộng

pprint() mặc định chỉ xuất ra tám mươi ký tự trên mỗi dòng. Giá trị này có thể được tùy chỉnh bằng cách chuyển vào đối số chiều rộng. pprint() sẽ cố gắng khớp nội dung trên một dòng. Nếu nội dung của cấu trúc dữ liệu vượt quá giới hạn này, nó sẽ in tất cả các phần tử trên một dòng mới

đầu ra

{'address': {'city': 'Gwenborough', 'geo': {'lat': '-37.31259', 'lng': '81.1496'}, 'street': 'Kulaas Light', 'suite': 'Apt. 5156', 'zipcode': '92938-3874'}, 'company': {'bs': 'harn real-time e-markets', 'catchPhrase': 'Multi-layer client-server neural-net', 'name': 'Romaguera-Crona'}, 'email': '[email protected]', 'id': 1, 'name': 'Leanne Graham', 'phone': '1-770-736-80312 x56442', 'username': 'Brett', 'website': 'hildeggard.org'}

Khi chúng ta để chiều rộng mặc định là 80 ký tự, từ điển tại users[0]['address']['geo'] chỉ chứa thuộc tính 'lat' và 'lng'. Điều này có nghĩa là tổng của thụt lề cộng với số ký tự cần thiết để in từ điển, bao gồm bất kỳ khoảng trắng nào ở giữa, nhỏ hơn tám mươi ký tự, do đó, pprint() biến tất cả thành một dòng

Từ điển [0]['company'] của người dùng sẽ quá lớn, vì vậy print() đặt mỗi khóa trên một dòng riêng biệt. Điều này áp dụng cho từ điển, bộ, bộ và danh sách

Mã số

đầu ra

________số 8

Chúng tôi có thể điều chỉnh tất cả các mục từ điển lồng nhau trên một dòng bằng cách đặt giá trị chiều rộng thành 160. Chúng ta có thể đi xa hơn nữa và đặt chiều rộng thành 500. Điều này sẽ in toàn bộ từ điển trong một dòng

Mã số

đầu ra

{'address': {'city': 'Gwenborough', 'geo': {'lat': '-37.3159', 'lng': '81.1496'}, 'street': 'Kulas Light', 'suite': 'Apt. 556', 'zipcode': '92998-3874'}, 'company': {'bs': 'harness real-time e-markets', 'catchPhrase': 'Multi-layered client-server neural-net', 'name': 'Romaguera-Crona'}, 'email': '[email protected]', 'id': 1, 'name': 'Leanne Graham', 'phone': '1-770-736-8031 x56442', 'username': 'Bret', 'website': 'hildegard.org'}

Điều này sẽ cho chúng ta thấy kết quả của việc đặt chiều rộng ở một giá trị lớn. Ngoài ra, chúng ta có thể đặt chiều rộng ở giá trị thấp hơn như 1. Điều này sẽ đảm bảo rằng mọi cấu trúc dữ liệu hiển thị các thành phần của nó trên các dòng riêng biệt. Vết lõm trực quan sẽ vẫn ở đó để sắp xếp các thành phần

Mã số

đầu ra

{'id': 10, 'name': 'Clementina DuBuuque', 'username': 'Moriah.Stanton', 'email': '[email protected]', 'address': {'street': 'Kattie Turnpike', 'suite': 'Suite 1928', 'city': 'Lebsackbbury', 'zipcode': '31428-21261', 'geo': {'lat': '-38.238256', 'lng': '57.25232'}}, 'phone': '024-648-3854', 'website': 'ambrosee.net', 'company': {'name': 'Hoeger LLC', 'catchPhrase': 'Centralize empowering task-force', 'bs': 'target end-to-end models'}} 0

Rất khó để hàm pprint() của Python in xấu xí. Nó sẽ làm tất cả những gì có thể để trông xinh đẹp

Ví dụ này cho chúng ta thấy cách máy in chia nhỏ các dòng văn bản dài. Lưu ý cách người dùng[0]["company"]["catchPhrase"], ban đầu là 'Mạng thần kinh máy khách-máy chủ nhiều lớp, đã được phân chia trên mỗi không gian. Vì sẽ khó đọc nên máy in không chia hết chuỗi này

Làm thế nào để Bóp chuỗi dài của chúng tôi. gọn nhẹ

Có thể nghĩ rằng nén chỉ đề cập đến hành vi được mô tả trong phần về Chiều rộng. Compact xác định cấu trúc dữ liệu được hiển thị trên một hoặc hai dòng. Compact chỉ ảnh hưởng đến đầu ra nếu một dòng dài hơn

Nếu compact là True, đầu ra sẽ ngắt dòng tiếp theo. Nếu cấu trúc dữ liệu lớn hơn Chiều rộng, hành vi mặc định là mỗi phần tử xuất hiện trên dòng của nó

Mã số

đầu ra

[{...}, {...}, {...}, {...}, {...}, {...}, {...}, {...}, {...}, {...}]

Mã số

đầu ra

{'id': 10, 'name': 'Clementina DuBuuque', 'username': 'Moriah.Stanton', 'email': '[email protected]', 'address': {'street': 'Kattie Turnpike', 'suite': 'Suite 1928', 'city': 'Lebsackbbury', 'zipcode': '31428-21261', 'geo': {'lat': '-38.238256', 'lng': '57.25232'}}, 'phone': '024-648-3854', 'website': 'ambrosee.net', 'company': {'name': 'Hoeger LLC', 'catchPhrase': 'Centralize empowering task-force', 'bs': 'target end-to-end models'}} 2

Mã số

đầu ra

{'id': 10, 'name': 'Clementina DuBuuque', 'username': 'Moriah.Stanton', 'email': '[email protected]', 'address': {'street': 'Kattie Turnpike', 'suite': 'Suite 1928', 'city': 'Lebsackbbury', 'zipcode': '31428-21261', 'geo': {'lat': '-38.238256', 'lng': '57.25232'}}, 'phone': '024-648-3854', 'website': 'ambrosee.net', 'company': {'name': 'Hoeger LLC', 'catchPhrase': 'Centralize empowering task-force', 'bs': 'target end-to-end models'}} 3

In đẹp danh sách này bằng cài đặt mặc định in phiên bản rút gọn của danh sách trên một dòng. Bằng cách giới hạn chiều rộng ở kích thước 20 ký tự. Điều này sẽ buộc pprint() xuất từng phần tử danh sách thành các dòng riêng biệt. Nếu chúng ta chọn giá trị true để thu gọn, danh sách sẽ được gói gọn trong 20 ký tự và nhỏ hơn nhiều so với định dạng thông thường

Rút gọn là một tùy chọn tuyệt vời cho các chuỗi dài chứa các phần tử ngắn, nếu không sẽ tiêu tốn nhiều dòng và khiến đầu ra kém rõ ràng hơn

Làm thế nào để chỉ đạo đầu ra của chúng tôi. dòng

Tham số luồng đề cập đến đầu ra từ hàm pprint(). Theo mặc định, nó được gửi đến vị trí chính xác mà print() đi đến. Đặc biệt, đó là hệ thống. thiết bị xuất chuẩn, là một đối tượng tệp thực tế trong Python. Tuy nhiên, chúng ta có thể chuyển tiếp thông tin này đến bất kỳ đối tượng tệp nào khác giống như cách chúng ta có thể làm với hàm print()

Trong trường hợp này, chúng tôi tạo một đối tượng tệp bằng cách gọi open(), sau đó chúng tôi gán tham số luồng của pprint() cho đối tượng đó trong tệp. Khi chúng tôi duyệt đầu ra. txt, chúng ta sẽ thấy nó đã được in

Python đi kèm với mô-đun ghi nhật ký của nó. Tuy nhiên, chúng ta có thể sử dụng pprint() để gửi các kết quả đầu ra tuyệt đẹp tới các tệp và sau đó sử dụng chúng làm nhật ký nếu chúng ta muốn

Cách ngăn sắp xếp từ điển. sort_dicts

Mặc dù từ điển thường được phân loại là cấu trúc dữ liệu không được sắp xếp theo thứ tự thông thường, kể từ Python 3. 6, từ điển được sắp xếp theo thứ tự chèn

pprint() sắp xếp các phím theo thứ tự bảng chữ cái để in

Mã số

đầu ra

{'id': 10, 'name': 'Clementina DuBuuque', 'username': 'Moriah.Stanton', 'email': '[email protected]', 'address': {'street': 'Kattie Turnpike', 'suite': 'Suite 1928', 'city': 'Lebsackbbury', 'zipcode': '31428-21261', 'geo': {'lat': '-38.238256', 'lng': '57.25232'}}, 'phone': '024-648-3854', 'website': 'ambrosee.net', 'company': {'name': 'Hoeger LLC', 'catchPhrase': 'Centralize empowering task-force', 'bs': 'target end-to-end models'}} 4

Mã số

đầu ra

{'id': 10, 'name': 'Clementina DuBuuque', 'username': 'Moriah.Stanton', 'email': '[email protected]', 'address': {'street': 'Kattie Turnpike', 'suite': 'Suite 1928', 'city': 'Lebsackbbury', 'zipcode': '31428-21261', 'geo': {'lat': '-38.238256', 'lng': '57.25232'}}, 'phone': '024-648-3854', 'website': 'ambrosee.net', 'company': {'name': 'Hoeger LLC', 'catchPhrase': 'Centralize empowering task-force', 'bs': 'target end-to-end models'}} 5

Nếu chúng ta không đặt tùy chọn sort_dicts là Sai, pprint() của Python sẽ sắp xếp các khóa theo thứ tự bảng chữ cái. Nó làm cho đầu ra của từ điển một cách nhất quán và dễ đọc và đẹp mắt

Khi pprint() lần đầu tiên được giới thiệu, từ điển đã được đặt hàng. Nếu không có thứ tự các phím theo bảng chữ cái, các phím trong từ điển có thể khác nhau đối với mỗi bản in

Làm thế nào để làm cho các con số của chúng ta rõ ràng hơn. underscore_numbers

Tham số underscore_numbers của nó là một tính năng mới được triển khai bởi Python 3. 10 giúp làm cho các số dài dễ hiểu hơn. Nếu ví dụ mà chúng tôi đã sử dụng cho đến nay không chứa số dài, thì chúng tôi sẽ yêu cầu một kịch bản hoàn toàn mới để kiểm tra tính năng này

Ví dụ

đầu ra

{'id': 10, 'name': 'Clementina DuBuuque', 'username': 'Moriah.Stanton', 'email': '[email protected]', 'address': {'street': 'Kattie Turnpike', 'suite': 'Suite 1928', 'city': 'Lebsackbbury', 'zipcode': '31428-21261', 'geo': {'lat': '-38.238256', 'lng': '57.25232'}}, 'phone': '024-648-3854', 'website': 'ambrosee.net', 'company': {'name': 'Hoeger LLC', 'catchPhrase': 'Centralize empowering task-force', 'bs': 'target end-to-end models'}} 6

Trong trường hợp underscore_numbers không hoạt động khi người dùng sử dụng pprint() trực tiếp và họ đang tìm kiếm những con số đẹp, thì đây là một giải pháp thay thế. Nếu họ tạo đối tượng PrettyPrinter, tham số sẽ hoạt động như trong ví dụ trên

Cách tạo đối tượng PrettyPrinter tùy chỉnh

Có thể tạo một phiên bản mới của PrettyPrinter với các giá trị mặc định mà chúng tôi đã đặt. Khi chúng tôi đã có phiên bản này của đối tượng PrettyPrinter tùy chỉnh của mình, chúng tôi có thể sử dụng đối tượng này bằng cách sử dụng. phương thức pprint() trên phiên bản PrettyPrinter

Mã số

đầu ra

{'id': 10, 'name': 'Clementina DuBuuque', 'username': 'Moriah.Stanton', 'email': '[email protected]', 'address': {'street': 'Kattie Turnpike', 'suite': 'Suite 1928', 'city': 'Lebsackbbury', 'zipcode': '31428-21261', 'geo': {'lat': '-38.238256', 'lng': '57.25232'}}, 'phone': '024-648-3854', 'website': 'ambrosee.net', 'company': {'name': 'Hoeger LLC', 'catchPhrase': 'Centralize empowering task-force', 'bs': 'target end-to-end models'}} 7

Mã số

đầu ra

{'id': 10, 'name': 'Clementina DuBuuque', 'username': 'Moriah.Stanton', 'email': '[email protected]', 'address': {'street': 'Kattie Turnpike', 'suite': 'Suite 1928', 'city': 'Lebsackbbury', 'zipcode': '31428-21261', 'geo': {'lat': '-38.238256', 'lng': '57.25232'}}, 'phone': '024-648-3854', 'website': 'ambrosee.net', 'company': {'name': 'Hoeger LLC', 'catchPhrase': 'Centralize empowering task-force', 'bs': 'target end-to-end models'}} 6

Bằng cách làm theo các hướng dẫn này, chúng tôi có thể

  • Nhập PrettyPrinter, đây là một ví dụ về định nghĩa lớp
  • Tạo một thể hiện mới của lớp bằng các tham số nhất định
  • in với tư cách là người dùng ban đầu
  • Định nghĩa là một tập hợp gồm hai số dài
  • Number_list máy in, cũng thể hiện các số gạch dưới đang hoạt động

Người dùng phải biết rằng các đối số được cung cấp bởi PrettyPrinter giống hệt với các đối số được sử dụng trong các đối số print() tiêu chuẩn, ngoại trừ việc chúng không truyền một tham số nào. Trong pprint(), đây là đối tượng họ muốn in

Bằng cách này, chúng tôi sẽ có thể có nhiều cài đặt trước của máy in, có thể là cài đặt trước cho các luồng khác nhau và sử dụng chúng bất cứ khi nào chúng tôi yêu cầu

Cách lấy một chuỗi đẹp với pformat()

Điều gì xảy ra nếu chúng ta không muốn chuyển đầu ra tuyệt đẹp của pprint() sang luồng? . Đối với các từ điển đơn giản, có thể muốn loại bỏ các dấu ngoặc hoặc dấu ngoặc kép đó để làm cho chúng trông thân thiện hơn với con người.

Dù chúng ta muốn làm gì với đầu ra của chuỗi, chúng ta có thể truy cập chuỗi mong muốn bằng cách sử dụng định dạng pformat()

Mã số

đầu ra

{'id': 10, 'name': 'Clementina DuBuuque', 'username': 'Moriah.Stanton', 'email': '[email protected]', 'address': {'street': 'Kattie Turnpike', 'suite': 'Suite 1928', 'city': 'Lebsackbbury', 'zipcode': '31428-21261', 'geo': {'lat': '-38.238256', 'lng': '57.25232'}}, 'phone': '024-648-3854', 'website': 'ambrosee.net', 'company': {'name': 'Hoeger LLC', 'catchPhrase': 'Centralize empowering task-force', 'bs': 'target end-to-end models'}} 9

pformat() là một công cụ mà chúng ta có thể sử dụng để kết nối máy in hấp dẫn và các luồng đầu ra

Một cách sử dụng khả thi khác cho điều này là nếu chúng tôi đang phát triển API và chúng tôi muốn cung cấp một biểu diễn văn bản đẹp mắt cho JSON. chuỗi JSON. Người dùng của chúng tôi có thể sẽ hài lòng

Cách xử lý cấu trúc dữ liệu đệ quy

Hàm Python pprint() là hàm đệ quy, có nghĩa là nó sẽ in tất cả các chi tiết của từ điển, bao gồm nội dung của từ điển con và danh sách sẽ tiếp tục

Hãy suy nghĩ về cách nó hoạt động khi một chương trình đệ quy gặp một cấu trúc thông tin đệ quy. Hãy tưởng tượng chúng ta có một từ điển A và từ điển B

  • A chứa một đặc điểm,. liên kết, xác định B
  • B chứa một thuộc tính,. liên kết trỏ về phía A

Nếu mã đệ quy của chúng tôi không thể xử lý tham chiếu này theo kiểu vòng tròn và nó không bao giờ in xong. Nó sẽ tạo chữ A theo sau là con B. Tuy nhiên, B cũng chính là con của A nên nó sẽ tiếp tục vô tận

May mắn thay, cả hàm print() thông thường và hàm pprint() đều xử lý việc này một cách dễ dàng

Mã số

đầu ra

[{...}, {...}, {...}, {...}, {...}, {...}, {...}, {...}, {...}, {...}] 0

Mã số

đầu ra

Trong khi print() tiêu chuẩn của Python viết tắt đầu ra, pprint() cảnh báo rõ ràng cho chúng tôi về sự lặp lại và thêm vào ID của từ điển

Phần kết luận

Chúng ta đã tìm hiểu về cách sử dụng chính của mô-đun pprint trong Python và một số cách để sử dụng mô-đun pprint() và PrettyPrinter. W sẽ phát hiện ra rằng hàm pprint() đặc biệt hữu ích khi tạo thứ gì đó yêu cầu cấu trúc dữ liệu phức tạp. Có lẽ chúng tôi đang tạo các ứng dụng sử dụng API thiếu kinh nghiệm. Có lẽ chúng ta có một kho dữ liệu khổng lồ chứa các tệp JSON được lồng sâu. Tất cả đều là những tình huống trong đó pprint là một công cụ tuyệt vời

Pprint và Pformat trong Python là gì?

pprint() − in biểu diễn được định dạng của đối tượng PrettyPrinter . pformat() − Trả về biểu diễn được định dạng của đối tượng, dựa trên các tham số của hàm tạo .

Nhập Pprint trong Python là gì?

Mô-đun pprint cung cấp khả năng “in đẹp” các cấu trúc dữ liệu Python tùy ý ở dạng có thể được sử dụng làm đầu vào cho trình thông dịch. If the formatted structures include objects which are not fundamental Python types, the representation may not be loadable.

Sự khác biệt giữa in và Pprint trong Python là gì?

hàm pprint() cũng có chức năng tương tự. Nhưng điểm khác biệt duy nhất là cách nó in các cấu trúc dữ liệu phức tạp . Hàm print() bình thường in toàn bộ nội dung trong một dòng. Điều này tốt nếu nội dung được in có độ dài nhỏ và không phải là cấu trúc dữ liệu phức tạp.

SEP hoạt động như thế nào trong Python?

tham số sep trong print() . Tham số 'sep' được sử dụng để đạt được điều tương tự, nó chỉ được tìm thấy trong python 3. x trở lên

Chủ đề