বিল্ট-ইন ফাংশন repr() এবং str() যথাক্রমে object.__repr__(self) এবং object.__str__(self) মেথড কল করে। প্রথম ফাংশন অবজেক্টের অফিসিয়াল রিপ্রেজেন্টেশন কাম্পিউট করে, যখন দ্বিতীয়টি ইনফরমাল রিপ্রেজেন্টেশন রিটার্ন করে।
ইন্টিজার অবজেক্টের জন্য দুটি ফাংশনের রেজাল্ট একই।
>>> x = 1 >>> repr(x) '1' >>> str(x) '1'
তবে, স্ট্রিং অবজেক্টের জন্য এটা সত্য নয়।
>>> x = "Hello" >>> repr(x) "'Hello'" >>> str(x) 'Hello'
repr()-এর রিটার্ন ভ্যালু একটি স্ট্রিং অবজেক্টের জন্য eval() ফাংশন দিয়ে ইভ্যালুয়েট করা যায় এবং একটি বৈধ স্ট্রিং অবজেক্ট রেজাল্ট হয়। তবে, str()-এর রেজাল্ট ইভ্যালুয়েট করা যায় না।
>>> y1 = repr(x) >>> eval(y1) 'Hello' >>> y2 = str(x) >>> eval(y2) NameError: name 'Hello' is not defined
সংক্ষেপে: repr() অবজেক্টের একটি ডিফল্ট এবং অনএম্বিগুয়াস রিপ্রেজেন্টেশন রিটার্ন করে, যেখানে str() একটি ইনফরমাল রিপ্রেজেন্টেশন দেয় যা পড়া যেতে পারে কিন্তু সবসময় অনএম্বিগুয়াস নয়।