首页 > 编程语言 >Python中直接查看对象值和使用print()输出的区别

Python中直接查看对象值和使用print()输出的区别

时间:2023-06-09 21:03:42浏览次数:39  
标签:__ 查看 Python self repr str print


直接用代码来描述这个问题的现象:

>>> x = r'C:\windows\notepad.exe'
>>> x
'C:\\windows\\notepad.exe'
>>> print(x)
C:\windows\notepad.exe
>>> x = '''Tom said, "Let's go."'''
>>> x
'Tom said, "Let\'s go."'
>>> print(x)
Tom said, "Let's go."

仔细看的话会注意到,直接查看字符串x的值,和使用print(x)来输出字符串的值,得到的结果略有不同。原因在哪里呢?这要从Python类的特殊方法说起,在Python类中有两个特殊方法__str__()和__repr__(),前者在使用print()查看对象值时会自动调用,而后者则在直接查看对象值时自动调用。下面的代码说明了这两个特殊方法的用法,这样也就能明白上面代码运行结果了。

>>> class T:
    def __str__(self):
        return '3'
    def __repr__(self):
        return '5'
    
>>> t = T()
>>> t
5
>>> print(t)
3

补充:在Python内置类型中,特殊方法__repr__()和__str__()的解释如下:

__repr__(self, /)
     Return repr(self).
__str__(self, /)
    Return str(self).

而对于内置函数repr()的解释如下:

>>> help(repr)
Help on built-in function repr in module builtins:
repr(obj, /)
    Return the canonical string representation of the object.
    
    For many object types, including most builtins, eval(repr(obj)) == obj.

标签:__,查看,Python,self,repr,str,print
From: https://blog.51cto.com/u_9653244/6451083

相关文章

  • Python提取彩色图像的二值化边缘
    所谓二值化是指只包含白和黑这两种颜色,下面的代码中使用白色表示内部或背景,使用黑色表示边缘。图像边缘提取的基本思路是:如果一个像素的颜色值与周围像素足够接近(属于低频部分)则认为是图像背景或者内部,如果一个像素的颜色值与周围像素相差很大(属于高频部分)则认为是图像边缘。在具体......
  • Python+SQLite开发无界面版通信录管理系统
    本文重点在于演示Python对SQLite数据库的操作,以及命令行式菜单的工作原理和实现。首先使用SQLiteDatabaseBrowser创建SQLite数据库data.db,然后创建一个数据表addressList,最后在数据表addressList中创建字段id(INTEGERPRIMARYKEY类型)、name(TEXT类型)、sex(TEXT类型)、age(NUMERIC类型......
  • 妙用Python集合求解啤酒问题(携程2016笔试题)
    问题描述:一位酒商共有5桶葡萄酒和1桶啤酒,6个桶的容量分别为30升、32升、36升、38升、40升和62升,并且只卖整桶酒,不零卖。第一位顾客买走了2整桶葡萄酒,第二位顾客买走的葡萄酒是第一位顾客的2倍。那么,本来有多少升啤酒呢?解析:由于该酒商只卖整桶酒,简单分析几个桶的容量可知,第二位顾客......
  • Python两种方法求解登楼梯问题(京东2016笔试题)
    问题:假设一段楼梯共15个台阶,小明一步最多能上3个台阶,那么小明上这段楼梯一共有多少种方法?解析:从第15个台阶上往回看,有3种方法可以上来(从第14个台阶上一步迈1个台阶上来,从第13个台阶上一步迈2个台阶上来,从第12个台阶上一步迈3个台阶上来),同理,第14个、13个、12个台阶都可以这样推算,从......
  • 大数据分析python
    #导库importnumpyasnpimportpandasaspd#读取数据data=pd.read_csv('logistics.csv')data.head(10)思路:直接查看不同公司的数量即可df1=data.groupby('货运公司名称').size().reset_index(name='count')#直接对货运公司的名称做统计(示例:天天速递25)df12.接通知对......
  • 使用Python编写简易定时器
    简单模拟了定时器功能,需要的朋友可以自己改写和扩充功能。importdatetimeimportwinsoundimporttimeimportrandomdefTimer(y,m,d,h,mu,s):'''参数分别为年、月、日、时、分、秒'''stopTime=datetime.datetime(y,m,d,h,mu,s)maxTime=stopTime+......
  • 使用Python寻找黑洞数
     黑洞数是指这样的整数:由这个数字每位上的数字组成的最大数减去每位数字组成的最小数仍然得到这个数自身。例如3位黑洞数是495,因为954-459=495,4位数字是6174,因为7641-1467=6174。本文重点在于内置函数sorted()和reversed()的用法。defmain(n):'''参数n表示数字的位数,例如n=3......
  • Python中的具名元组类用法
    >>>fromcollectionsimportnamedtuple>>>Point=namedtuple('Point',['x','y','z'])#创建具名元组类>>>Point<class'__main__.Point'>>>>p=Point(3,4,5)#实例化对象......
  • Python“制作”midi音乐“两只老虎”
    从网上找了很多谱子,可惜没有音乐细胞看不太懂,根据自己的理解改了好几遍,还是听不出来“两只老虎”的感觉,于是在标题上加了双引号。这样的话就只能了解本文思路了,算是抛砖引玉吧,重点是Python标准库winsound的Beep()函数可以发出37到32767赫兹之间频率的声音,其第二个参数为发声时长。f......
  • Python标准库zlib提供的数据压缩功能
    Python标准库zlib中提供的compress()和decompress()函数可以用于数据的压缩和解压缩,在压缩数据之前需要先想办法编码为字节串。>>>importzlib>>>x='Python程序设计系列图书,董付国编著,清华大学出版社'.encode()>>>len(x)72>>>y=zlib.compress(x)>>>len(y)#对于重......