الدالة pprint.pprint()‎ في بايثون

من موسوعة حسوب
< Python‏ | pprint
اذهب إلى التنقل اذهب إلى البحث

تطبع الدالة التمثيل المنسّق للكائن المعطى في المخرجات المعطاة، متبوعًا بسطر جديد.

البنية العامة

pprint.pprint(object, stream=None, indent=1, width=80, depth=None, *, compact=False)

المعاملات

إن أخذ المعامل stream القيمة None فستستخدم الدالة sys.stdout. يمكن استخدام هذه الدالة في مفسر بايثون التفاعلي عوضًا عن الدالة print()‎ لتفحّص القيم (يمكن كذلك إعادة إسناد print = pprint.pprint لاستخدامها ضمن نطاق معين).

تُمرّر المعاملات indent و width و depth و compact إلى الدالة البانية للصنف PrettyPrinter كمعاملات تنسيق.

ملاحظة: أضيف المعامل compact في الإصدار 3.4 من اللغة.

القيمة المعادة

تطبع الدالة التمثيل المنسّق للكائن المعطى في المخرجات المعطاة، متبوعًا بسطر جديد.

أمثلة

يبين المثال التالي آلية عمل الدالة:

>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff)
>>> pprint.pprint(stuff)
[<Recursion on list with id=...>,
 'spam',
 'eggs',
 'lumberjack',
 'knights',
 'ni']

يبين المثال التالي عددًا استخدامات الدالة pprint()‎ ومعاملاتها، عن طريق جلب معلومات أحد المشاريع في PyPI:

>>> import json
>>> import pprint
>>> from urllib.request import urlopen
>>> with urlopen('http://pypi.org/project/Twisted/json') as url:
...     http_info = url.info()
...     raw_data = url.read().decode(http_info.get_content_charset())
>>> project_info = json.loads(raw_data)

يؤدي استخدام الدالة pprint()‎ بصيغتها الأساسية إلى عرض الكائن برمّته:

>>> pprint.pprint(project_info)
{'info': {'_pypi_hidden': False,
          '_pypi_ordering': 125,
          'author': 'Glyph Lefkowitz',
          'author_email': 'glyph@twistedmatrix.com',
          'bugtrack_url': '',
          'cheesecake_code_kwalitee_id': None,
          'cheesecake_documentation_id': None,
          'cheesecake_installability_id': None,
          'classifiers': ['Programming Language :: Python :: 2.6',
                          'Programming Language :: Python :: 2.7',
                          'Programming Language :: Python :: 2 :: Only'],
          'description': 'An extensible framework for Python programming, with '
                         'special focus\r\n'
                         'on event-based network programming and multiprotocol '
                         'integration.',
          'docs_url': '',
          'download_url': 'UNKNOWN',
          'home_page': 'http://twistedmatrix.com/',
          'keywords': '',
          'license': 'MIT',
          'maintainer': '',
          'maintainer_email': '',
          'name': 'Twisted',
          'package_url': 'http://pypi.org/project/Twisted',
          'platform': 'UNKNOWN',
          'release_url': 'http://pypi.org/project/Twisted/12.3.0',
          'requires_python': None,
          'stable_version': None,
          'summary': 'An asynchronous networking framework written in Python',
          'version': '12.3.0'},
 'urls': [{'comment_text': '',
           'downloads': 71844,
           'filename': 'Twisted-12.3.0.tar.bz2',
           'has_sig': False,
           'md5_digest': '6e289825f3bf5591cfd670874cc0862d',
           'packagetype': 'sdist',
           'python_version': 'source',
           'size': 2615733,
           'upload_time': '2012-12-26T12:47:03',
           'url': 'https://pypi.org/packages/source/T/Twisted/Twisted-12.3.0.tar.bz2'},
          {'comment_text': '',
           'downloads': 5224,
           'filename': 'Twisted-12.3.0.win32-py2.7.msi',
           'has_sig': False,
           'md5_digest': '6b778f5201b622a5519a2aca1a2fe512',
           'packagetype': 'bdist_msi',
           'python_version': '2.7',
           'size': 2916352,
           'upload_time': '2012-12-26T12:48:15',
           'url': 'https://pypi.org/packages/2.7/T/Twisted/Twisted-12.3.0.win32-py2.7.msi'}]}

يمكن تحديد النتيجة إلى عمق معين (تستخدم النقاط ... لتمثيل المحتوى الأعمق):

>>> pprint.pprint(project_info, depth=2)
{'info': {'_pypi_hidden': False,
          '_pypi_ordering': 125,
          'author': 'Glyph Lefkowitz',
          'author_email': 'glyph@twistedmatrix.com',
          'bugtrack_url': '',
          'cheesecake_code_kwalitee_id': None,
          'cheesecake_documentation_id': None,
          'cheesecake_installability_id': None,
          'classifiers': [...],
          'description': 'An extensible framework for Python programming, with '
                         'special focus\r\n'
                         'on event-based network programming and multiprotocol '
                         'integration.',
          'docs_url': '',
          'download_url': 'UNKNOWN',
          'home_page': 'http://twistedmatrix.com/',
          'keywords': '',
          'license': 'MIT',
          'maintainer': '',
          'maintainer_email': '',
          'name': 'Twisted',
          'package_url': 'http://pypi.org/project/Twisted',
          'platform': 'UNKNOWN',
          'release_url': 'http://pypi.org/project/Twisted/12.3.0',
          'requires_python': None,
          'stable_version': None,
          'summary': 'An asynchronous networking framework written in Python',
          'version': '12.3.0'},
 'urls': [{...}, {...}]}

إضافة لما سبق، يمكن تحديد أقصى عدد للحروف في السطر الواحد. إن كان الكائن طويلًا ولا يمكن تقسيمه فستتجاوز الدالة العرض المحدد:

>>> pprint.pprint(project_info, depth=2, width=50)
{'info': {'_pypi_hidden': False,
          '_pypi_ordering': 125,
          'author': 'Glyph Lefkowitz',
          'author_email': 'glyph@twistedmatrix.com',
          'bugtrack_url': '',
          'cheesecake_code_kwalitee_id': None,
          'cheesecake_documentation_id': None,
          'cheesecake_installability_id': None,
          'classifiers': [...],
          'description': 'An extensible '
                         'framework for Python '
                         'programming, with '
                         'special focus\r\n'
                         'on event-based network '
                         'programming and '
                         'multiprotocol '
                         'integration.',
          'docs_url': '',
          'download_url': 'UNKNOWN',
          'home_page': 'http://twistedmatrix.com/',
          'keywords': '',
          'license': 'MIT',
          'maintainer': '',
          'maintainer_email': '',
          'name': 'Twisted',
          'package_url': 'http://pypi.org/project/Twisted',
          'platform': 'UNKNOWN',
          'release_url': 'http://pypi.org/project/Twisted/12.3.0',
          'requires_python': None,
          'stable_version': None,
          'summary': 'An asynchronous networking '
                     'framework written in '
                     'Python',
          'version': '12.3.0'},
 'urls': [{...}, {...}]}

انظر أيضًا

  • التابع PrettyPrinter.pprint()‎: يطبع التابع التمثيل المنسّق للكائن المعطى على المخرجات المحدّدة في الدالة البانية للصنف PrettyPrinter متبوعًا بسطر جديد..

مصادر

صفحة Data pretty printer في توثيق بايثون الرسمي.