Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में str() बनाम repr()

str() और repr() दोनों ऑब्जेक्ट्स का स्ट्रिंग रिप्रेजेंटेशन देते हैं, लेकिन उनके उद्देश्य अलग हैं।

आधिकारिक परिभाषा

  • str(x): "अनौपचारिक" या पठनीय रिप्रेजेंटेशन। अंतिम उपयोगकर्ता के लिए।
  • repr(x): "आधिकारिक" या अनौपचारिक रिप्रेजेंटेशन। डेवलपर/डीबगिंग के लिए। आदर्श रूप से eval(repr(x)) == x होना चाहिए।

बुनियादी अंतर

>>> str(123)
'123'
>>> repr(123)
'123'
>>> # इंट के लिए समान

>>> str('Python')
'Python'
>>> repr('Python')
"'Python'"  # कोट्स शामिल!

महत्वपूर्ण अंतर: eval() के साथ

>>> x = "Python"
>>> repr(x)
"'Python'"
>>> x1 = eval(repr(x))
>>> x == x1
True

>>> y = "Python"
>>> str(y)
'Python'
>>> y1 = eval(str(y))  # NameError: name 'Python' is not defined
Traceback (most recent call last):
  ...
NameError: name 'Python' is not defined

repr() का आउटपुट वैध पायथन एक्सप्रेशन होता है जिसे eval() से पुनर्निर्मित किया जा सकता है। str() का नहीं।

डेटाटाइम उदाहरण

>>> import datetime
>>> now = datetime.datetime.now()
>>> str(now)
'2019-03-29 01:29:23.211924'
>>> repr(now)
'datetime.datetime(2019, 3, 29, 1, 29, 23, 211924)'
  • str(now): मानव-पठनीय तारीख/समय।
  • repr(now): ऑब्जेक्ट को पुनर्निर्मित करने वाला पायथन कोड।

मुख्य अंतर तालिका

str()repr()
ऑब्जेक्ट को पठनीय बनाता हैऑब्जेक्ट को पुनर्निर्मित करने वाला कोड
अंतिम उपयोगकर्ता के लिए आउटपुटडेवलपर/डीबगिंग के लिए आउटपुट
__str__ डिफ़ॉल्ट__repr__ फॉलबैक

कस्टम क्लासेज़ में लागू करना

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return f"Point({self.x}, {self.y})"

    def __repr__(self):
        return f"Point({self.x}, {self.y})"

p = Point(3, 4)
print(str(p))   # Point(3, 4)
print(repr(p))  # Point(3, 4)
# eval(repr(p)) काम करेगा यदि Point स्कोप में है

सर्वोत्तम अभ्यास

  • __repr__ हमेशा परिभाषित करें - यह डीबगिंग के लिए महत्वपूर्ण है।
  • __str__ उपयोगकर्ता-मुखी आउटपुट के लिए परिभाषित करें।
  • यदि __str__ परिभाषित नहीं है, तो पायथन __repr__ पर फॉलबैक करता है।
  1. पायथन में issuperset() फंक्शन पायथन में issuperset() फंक्शन

    इस लेख में, हम पायथन में issuperset() और विभिन्न क्षेत्रों में इसके कार्यान्वयन के बारे में जानेंगे।यह मेथड बूलियन True वापस करता है यदि सेट B के सभी तत्व सेट A के सभी तत्वों को समाहित करते हैं जिसे तर्क के रूप में पारित किया जाता है और झूठा वापस करता है यदि A के सभी तत्व B में मौजूद नहीं हैं।इसका म

  1. - पायथन में वेरिएबल का प्रकार स्ट्रिंग है या नहीं कैसे जांचें

    हम isinstance(var, class) का उपयोग करके जांच सकते हैं कि var दी गई क्लास का इंस्टेंस है या नहीं। पायथन 2.x में str और unicode का बेस क्लास basestring है। इसलिए हम इसे इस प्रकार उपयोग कर सकते हैं: >>> s = A string >>> isinstance(s, basestring) True >>> isinstance(s, str) Tr

  1. - पायथन में स्ट्रिंग को डिलीमीटर स्ट्रिंग द्वारा कैसे विभाजित करें?

    पायथन के स्ट्रिंग क्लास में split() नामक एक मेथड होता है जो एक वैकल्पिक आर्गुमेंट के रूप में डिलीमीटर लेता है। इसके लिए डिफ़ॉल्ट डिलीमीटर व्हाइटस्पेस है। आप इसका उपयोग निम्न प्रकार से कर सकते हैं: >>> aa-ab-ca.split(-) [aa, ab, ca] >>> abc mno rst.split( ) [abc, mno, rst] आप इस ऑपर