日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的repr和str有什么不同_str()和repr()的异同

發布時間:2025/3/11 python 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的repr和str有什么不同_str()和repr()的异同 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

str()函數和repr()函數,都是Python內置的標準函數。這兩個函數都是根據參數對象返回一個字符串,但是又有一些不一樣的地方。我們在使用的時候,常常搞混,傾向于使用簡單明了的str()函數,而搞不清楚為什么還有一個不知所云的repr()函數。本文對此進行介紹。

str()和repr()的相同之處

str()和repr(),都是返回一個字符串出來,這個字符串,來自它們的參數。

以上的代碼顯示,前面都是相同的,都是返回相同的字符串。唯一不同的地方在最后4行,repr 函數返回的字符串,外面多了一對雙引號(",后面解釋原因)。

str()和repr()的差異

先來看有差異的一段示例代碼:

>>> import datetime

>>> today = datetime.date.today()

>>> str(today)

'2019-08-09'

>>> repr(today)

'datetime.date(2019, 8, 9)'

對照上面有差異的示例代碼,說明str()函數跟repr()函數的不同之處:

str()函數致力于為終端用戶創造字符串輸出,而repr()函數的返回字符串主要是用于軟件開發的debugging和developement;

str()函數的返回字符串的目標的是可讀性(readable),而repr()函數的返回的目標是準確和無歧義;

repr()函數返回的字符串是正式地(offcially)代表某個對象,而str()返回的字符串是非正式地;

str()函數調用的是對象的__str__()函數,repr()函數調用的是對象的__repr__()函數。

在Python官方文檔中,對repr()函數是這樣解釋的:

repr(object)

Return a string containing a printable representation of an object. For many types, this function makes an attempt to return a string that would yield an object with the same value when passed to eval(), otherwise the representation is a string enclosed in angle brackets that contains the name of the type of the object together with additional information often including the name and address of the object. A class can control what this function returns for its instances by defining a __repr__() method.

這段英文解釋了一個細節,有一些對象(主要是Python內置的幾個,還不是所有的)的repr()函數返回值,可以直接給eval()函數用于創建此對象,這就是前面示例代碼,repr函數的返回中,多了一對雙引號的原因。上面的那個代碼示例,我們繼續多寫幾行來測試:

>>> today = eval(repr(today))

>>> today

datetime.date(2019, 8, 9)

這段解釋還說,對于很多Python內置的對象而言,如果不能滿足eval函數,repr函數就會返回一個字符串,前面是用三角括號圍起來的對象類型信息,后面是一些額外的信息,通常包含對象的名稱和地址等。因此,我們在try...except...結構中獲取異常信息的時候,通常都是使用repr函數,而不是str函數。

對自定義類型使用str()和repr()函數

前面解釋過了,str()函數調用的是對象的__str__()函數,repr()函數調用的是對象的__repr__()函數。所以,只要自定義類型有這兩個函數的定義,就可以使用Python標準庫中的這兩個函數。

class Person:

def __init__(self, name):

self.name = name

def __str__(self):

return f'I am {self.name}'

def __repr__(self):

return f'{self.name}'

>>> from test import Person

>>> p1 = Person('xinlin')

>>> str(p1)

'I am xinlin'

>>> repr(p1)

'xinlin'

上面這段示例代碼,先定義一個Person類,然后創建p1對象,再用str和repr函數去測試p1對象的返回值。

以上就是對str()函數和repr()函數異同的介紹!

-- EOF --

總結

以上是生活随笔為你收集整理的python的repr和str有什么不同_str()和repr()的异同的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本三级午夜理伦三级三 | 99久久精品无码一区二区毛片 | aaa毛片视频 | 日韩毛毛片 | a级片在线免费看 | 成人公开视频 | 欧美一级少妇 | 欧美激情三级 | 99热免费| 天堂中文在线资源 | 国产ts变态重口人妖hd | 国产精品久久久久久久久绿色 | 91av观看| 亚洲伊人网站 | 免费啊v在线观看 | 3d动漫精品啪啪一区二区免费 | 国产精品99精品无码视 | 成人里番精品一区二区 | 波多野吉衣伦理片 | 欧美在线视频a | 国产亚洲精久久久久久无码77777 | 日韩操 | 久操久操久操 | 在线观看免费中文字幕 | 免费麻豆 | 中文字幕人成 | 国产精品一级 | 欧美极品videos精品 | 免费二区 | 在线免费黄色av | 婷婷综合av | 亚洲激情另类 | 国产美女又黄又爽又色视频免费 | 国产精品第3页 | 国产在线专区 | 午夜精品一区二区三区在线 | 让男按摩师摸好爽 | 好av| 青草热视频 | 高清国产午夜精品久久久久久 | 三级av | 亚洲欧美精品在线观看 | 国产视频最新 | 成人av高清| 四虎一国产精品一区二区影院 | 亚洲成人va | 亚洲男人网站 | 久久99精品久久久久子伦 | 77777av| 最近日本中文字幕 | 成人午夜免费在线 | 少妇性生活视频 | 凹凸福利视频 | 日本高清视频在线 | 亚洲国产精品成人综合久久久 | 7777av| 成人欧美一区二区三区黑人 | 91午夜在线| 91看片网 | 国产一区二区三区视频播放 | 在线观看 中文字幕 | 特大黑人娇小亚洲女mp4 | 九九在线观看免费高清版 | 国产草草影院ccyycom | 国产传媒视频 | 成人免费视频国产免费网站 | 国产一区二区91 | 国产亚洲精品久久久久久777 | 黑帮大佬和我的三百六十五天 | 日日草天天干 | 加勒比波多野结衣 | 99热免费观看 | 777免费视频 | 久久久嫩草 | 欧美三级网 | 中文字幕一区二区三区人妻电影 | 视频在线观看免费大片 | 亚洲情热 | 欧美激情国产日韩精品一区18 | 色8久久| 亚洲最大福利视频 | 亚洲国产精品久久精品怡红院 | 黄页在线播放 | 美女黄页网站 | 亚洲黄色网络 | 国产伦精品一区二区三区免费 | 黄免费在线观看 | 国产成人午夜精华液 | 亚洲一区二区三区国产 | 亚洲综合精品国产 | 中文字幕在线官网 | 亚洲黄色片在线观看 | 福利精品视频 | 五月网婷婷 | 国产aⅴ无码片毛片一级一区2 | 欧美老熟妇乱大交xxxxx | 国产女人18毛片水18精 | 无码粉嫩虎白一线天在线观看 | 逼特逼在线视频 |