谈一谈Python中str()和repr()的区别

前言

在学习BeautifulSoup文档的时候发现了一个以前不常见的Python内建函数repr(),带着好奇对这个内建函数进行了一番搜索和学习。

总结

str()repr()都是Python的内建函数,通过它们可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。大多数情况下他们的效果相同,但是既然是不同的函数肯定有不同的地方,概括起来可以这样说str()会将对象转化为可读性较好的字符串,而repr()会将对象转化为供解释器读取形式的字符串。一个对象没有适于人阅读的解释形式的话,str()会返回与repr()相同的值。 其中,数值或list、tuple、字典等这样的结构,针对各种函数都有着统一的解读方式。而字符串不同函数可能有着不同的解读方式。

举例

  1. 在下列情况下两者效果相同: 123456789101112131415161718192021222324>>> str(123)'123'>>> repr(123)'123'>>> str((1, 2, 3, 4, 5))'(1, 2, 3, 4, 5)'>>> repr((1, 2, 3, 4, 5))'(1, 2, 3, 4, 5)'>>> str([1, 2, 3, 4, 5])'[1, 2, 3, 4, 5]'>>> repr([1, 2, 3, 4, 5])'[1, 2, 3, 4, 5]'>>> str({1: 2, 3: 4})'{1: 2, 3: 4}'>>> repr({1: 2, 3: 4})'{1: 2, 3: 4}'>>> str(4.53-2j)'(4.53-2j)'>>> repr(4.53-2j)'(4.53-2j)'>>> str(2e10)'20000000000.0'>>> repr(2e10)'20000000000.0'
  2. 下列情况两者效果出现差异: 12345678>>>hi = 'hello world\n Python'>>> hi'hello world\n Python'>>> print(str(hi))hello world Python>>> print(repr(hi))'hello world\n Python'

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AlgorithmDog的专栏

靠默契保证的私有制:Python 中的私有

人类文明开化以来,私有制似乎是人类历史的主流在西方国家,“私有财产神圣不可侵犯” 是很多资本主义国家的立国原则之一。在我国,“私有财产不可侵犯” 也...

21580
来自专栏数据结构与算法

P1049 装箱问题

题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数)。 要求n个物品中,任取若干个装入箱...

31050
来自专栏Albert陈凯

scala的option和some

对于学习 Scala 的 Java™ 开发人员来说,对象是一个比较自然、简单的入口点。在 本系列 前几期文章中,我介绍了 Scala 中一些面向对象的编程方法,...

29550
来自专栏软件开发 -- 分享 互助 成长

简单工厂模式

一、简单工厂模式的相关概念: 1、定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。 其核心思想就是有一...

19290
来自专栏书山有路勤为径

寻找中位数

LeetCode 295. Find Median from Data Stream 设计一个数据结构,该数据结构动态维护一组数据,且支持如下操作: 1.添...

15130
来自专栏java一日一条

HashMap的工作原理

几乎每个人都会回答“是的”,然后回答HashMap的一些特性,譬如HashMap可以接受null键值和值,而Hashtable则不 能;HashMap是非syn...

7710
来自专栏Java后端技术栈

Java提供的排序算法是怎么实现的?快排?

前几天整理的一套面试题,其中有一个问题就是Java的JDK中我们见到的Collections.sort()和Arrays.sort()这两个排序算法的实现方式是...

18930
来自专栏Python爬虫与数据挖掘

Python大神用一道题带你搞定Python函数中形参和实参问题

昨天在Python学习群里有位路人甲问了个Python函数中关于形参和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被...

15110
来自专栏magicsoar

Effective Modern C++翻译(6)-条款5:auto比显示的类型声明要更好

    在概念上说,auto关键字和它看起来一样简单,但是事实上,它要更微妙一些的。使用auto会让你在声明变量时省略掉类型,同时也会防止了手动类型声明带来的正...

211100
来自专栏java达人

HashMap的工作原理

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和Hash...

20770

扫码关注云+社区

领取腾讯云代金券