当你开始学习python编程的时候,你做的第一件事是什么?

相信我们都已经通过“Hello World”程序开始了我们的python之旅。在python中,它可以在一行中完成:

print(“Hello World”)

但是,在使用print()函数打印字典、列表或任何其他复杂数据类型时,您是否遇到过这种痛苦呢?由于不适当的缩进问题,我们经常在python嵌套数据结构的输出中遇到可读性方面的困难。

让我们在这里试试代码:

coordinates= [

{

“name”: “Location 1”,

“gps”: (29.008966, 111.573724)

},

{

“name”: “Location 2”,

“gps”: (40.1632626, 44.2935926)

},

{

“name”: “Location 3”,

“gps”: (29.476705, 121.869339)

}

]

print(coordinates)

以上代码的输出:

[{‘gps’: (29.008966, 111.573724), ‘name’:

‘Location 1’}, {‘gps’: (40.1632626, 44.2935926),

‘name’: ‘Location 2’}, {‘gps’: (29.476705, 121.869339),

‘name’: ‘Location 3’}]

我们可以看到,上面的代码不容易读懂,也不美观。

如果解决这个问题呢?

Python附带pprint模块,可以让打印任意数据结构更具可读性。

pprint是什么?

python中的pprint模块负责以合适的格式打印便于阅读的行块。它使用换行和缩进以明确的方式打印数据。

pprint与print有何不同?

print()是python中的一个简单函数,用于在屏幕上向用户显示指定的消息。但通常,如果我们使用python打印一个字典、列表或任何其他复杂的函数,我们会发现读取打印出来的语句是模棱两可的。它包括内置的对象、文件、套接字、类或实例,这些不能用Python常量表示。

然后,“pprint”模块可以帮助您。

它将对象格式化为可读的格式,每行都有适当的宽度。它带有可调节的宽度限制,以使它更容易为用户。它将所有元素转换为可以用Python常量表示的字符串,并以美观的格式打印它们。pprint函数返回可以在解释器中作为输入运行的输出。而且,通过解析字符串更容易将其转换回该类型。

那么,让我们深入pprint…

在python文件的顶部导入库pprint:

import pprint

现在,我们可以使用.pprint()对象或实例化我们自己的pprint对象PrettyPrinter()。

pprint.pprint(['Radha', 1, 'Hari', 'Simesh', 25, 847])

# Instantiating pprint object

my_pprint= pprint.PrettyPrinter()

my_pprint.pprint(['Radha', 1, 'Hari', 'Simesh', 25, 847])

两个打印函数给出的结果是一致的

['Radha', 1, 'Hari', 'Simesh', 25, 847]

['Radha', 1, 'Hari', 'Simesh', 25, 847]

那么,pprint()和PrettyPrinter()之间的区别是什么?

如果需要调整宽度约束或其他参数,则显式地构造PrettyPrinter对象。

语法:

class pprint.PrettyPrinter(indent=1,width=80,depth=None,

stream=None, *,compact=False,sort_dicts=True)

pprint()方法使用库的默认设置,而在创建PrettyPrinter()对象时,我们可以更改库的默认配置。这就是二者之间的区别。​

让我们通过几个例子来理解:

深度参数决定多远一个Python PrettyPrinter递归嵌套结构:

tuple1= ('spam', ('eggs', ('lumberjack', ('knights',

('ni', ('dead',('parrot', ('fresh fruit',))))))))

# Using PrettyPrinter

pp=pprint.PrettyPrinter(depth=6) # default configuration

# of depthbeing none is changed to depth=6

# Now it will print till depth of six brackets

pp.pprint(tuple1)

#Using only pprint() object

pprint.pprint(pprint.pprint(tuple1, depth=6))

pprint.pprint(tuple1)

以上代码的输出:

('spam', ('eggs', ('lumberjack', ('knights', ('ni',

('dead', (...)))))))

('spam', ('eggs', ('lumberjack', ('knights', ('ni',

('dead', (...)))))))

('spam',

('eggs',

('lumberjack', ('knights', ('ni', ('dead',

('parrot', ('fresh fruit',))))))))

你能注意到其中的区别吗?

我们看到,当tuple1打印使用深度= 6,之后六个椭圆打印的时候是没有更多的数据显示而只使用pprint.pprint(),那么所有的数据显示。

设置不存储在.pprint()中,即默认设置保持不变,而在PrettyPrinter()中,设置或更改是存储的。这里存储的是depth = 6。

使用宽度参数,我们可以选择输出将打印多少列。默认宽度是80,也就是80个字符,但是你可以改变它。

现在,让我们看看在几个内置函数中使用pprint()比print()函数的主要区别和好处。

from pprint import pprint # We can directly call the method

# pprint() using it

coordinates= [

{

“name”: “Location 1”,

“gps”: (29.008966, 111.573724)

},

{

“name”: “Location 2”,

“gps”: (40.1632626, 44.2935926)

},

{

“name”: “Location 3”,

“gps”: (29.476705, 121.869339)

}

]

pprint(coordinates)

输出:

[{'gps': (29.008966, 111.573724), 'name': 'Location 1'},

{'gps': (40.1632626, 44.2935926), 'name': 'Location 2'},

{'gps': (29.476705, 121.869339), 'name': 'Location 3'}]

这就是本文中关于python中的pprint的全部内容。

​英文原文:

https://medium.com/dev-genius/lets-talk-about-prettyprint-or-pprint-in-python-ddda1fa4cf0b​

【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0

pprint python_让我们来谈谈python中的prettyprint和pprint相关推荐

  1. 让我们来谈谈python中的prettyprint和pprint

    公众号后台回复"图书",了解更多号主新书内容 作者:奶糖猫 来源:喵说Python 01 当你开始学习python编程的时候,你做的第一件事是什么? 相信我们都已经通过" ...

  2. python中遍历是什么意思_谈谈python中的遍历

    标签: 谈谈python中的遍历 python中也有像java中的for...each....在python中是for...in... 其实感觉差不多,不过python的规则更灵活一点, 只要是可以进 ...

  3. linux 移除python_第16 p,PYthon中的用户交互,Python GUI编程

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第16篇文章,第二阶段的课程:Python基础知识:PYthon中的用户交互.Python GUI编程实现方式介绍. 学习本课程,建 ...

  4. python包括几种数据类型_简单谈谈Python中的几种常见的数据类型

    计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数 ...

  5. python闭包的应用场景_简单谈谈Python中的闭包

    Python中的闭包 前几天又有人留言,关于其中一个闭包和re.sub的使用不太清楚.我在脚本之家搜索了下,发现没有写过闭包相关的东西,所以决定总结一下,完善Python的内容. 1. 闭包的概念 首 ...

  6. 闭包 python_根据面试题谈谈 Python 闭包

    题目: 1.什么是闭包?闭包的定义? 2.手写一个简单的闭包 3.变量作用域规则与 nonlocal 关键字? 4.闭包的应用 答案要点: 1.首先,我们要了解变量作用域,上代码:# 示例一 def ...

  7. python元类是什么_谈谈Python中元类Metaclass(一):什么是元类

    简单的讲,元类创建了Python中所有的对象. 我们说Python是一种动态语言,而动态语言和静态语言最大的不同,就是函数和类不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个HelloW ...

  8. fd在python_【后端开发】python中fd()是什么

    python中的fd()是turtle模块中的一个方法.fd 方法的实参是像素距离.turtle模块:它可以让你使用海龟图形(turtle graphics)绘制图像 turtle模块其中的函数: 1 ...

  9. python中函数的可变参数_简单谈谈Python中函数的可变参数

    前言 在Python中定义函数,可以用必选参数.默认参数.可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数.默认参数.可变参数和关键字参数. ...

最新文章

  1. IDEA2018软件安装教程
  2. AjaxControlToolkit HoverMenuExtender 控件演示
  3. 关于类DOTA游戏多样化技能系统的设计思考
  4. CSDN博文编辑技巧-如何去除上传的图片水印
  5. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第21篇]CRT算法如何提高RSA的性能?
  6. python将16进制字符串转换为整数_Python 16进制与字符串的转换
  7. 巧用记忆化搜索代替暴力递归(洛谷P1464题题解,Java语言描述)
  8. STM8 ADC转换模式-------连续模式
  9. java自定义注解解析
  10. 学习: 导航器添加修饰符
  11. 关于text-indent
  12. myeclipse激活+Aptana安装配置
  13. Ubuntu中安装ns3
  14. ⻦哥的LINUX私房菜 学习
  15. 简单的爬图片代码(python)
  16. 数字转换为人民币大写
  17. 上海落户计算机水平毕业研究生,上海落户有多难?985硕士似乎才可能
  18. 日常小记-pdf扫描版和非扫描版区别
  19. Graz技术大学计算机图形与视觉小组PEGASUS项目介绍
  20. ug900-vivado-logic-simulation中文文档 | Xilinx

热门文章

  1. Atmosic 获评全球100家最具潜力的半导体公司
  2. js 密码正则表达式(至少8位且必有数字+特殊字符+字母)
  3. 科学-天文学-天文观测站:TMT(红外天文望远镜)
  4. 7.0窗口改变大小 axure rp_Axure RP 7.0快捷键 Axure常用快捷键
  5. IT程序员必须知道的几个Git代码托管平台
  6. 喷两句KFC“秒杀门”
  7. manacher java_Manacher算法详解
  8. 【校内模拟】西行寺无余涅槃(FWT)
  9. android studio开发app实例_基于Android输入法开发,制作一个微信斗图APP
  10. 【python实现倒计时】