تفاوت بین __str__ و __repr__ در زبان برنامه نویسی پایتون

3 ماه پیش
توسط Mahdi آپدیت شد
مجتبی ( 267 تجربه )
3 سال پیش

سلام خدمت اساتید عزیز
سوالی داشتم که تفاوت این دو متد جادویی در پایتون چیه
متد های str و repr
تا اونجایی که توی داکیومنت های پایتون خوندم هردو برای نمایش یک سری اطلاعات رشته ها به کار برده میشه
اما داکیومنت پایتون خیلی گنگ توضیح داده این رو
کاربردشون دقیقا چیه

تشکر
همچنین اگر امکانش هست در بخش بحث و گفتگو قسمتی رو برای موضوعات پایتون و جانگو قرار بدید
تشکر

ارسطو عباسی ( 2207 تجربه )
3 سال پیش
تخصص : وبلاگ‌نویس و توسعه‌دهنده Back-End

چه جالب خودمم به این قضیه فک نکرده بودم ولی کمی جستجو انجام دادم متوجه شدم که str تابع درونی پایتونه که برای نمایش رشته ها در حالت عادی استفاده می شه اما repr در حالت استاندارد و براساس کلیت ماجرا اون رو چاپ میکنه ... اگه به قطعه کد زیر توجه کنید متوجه منظورم میشید:

x=6
repr(x)
'6'
str(x)
'6'

y='a string'
repr(y)
y=" 'a string' "
str(y)
y='a string'

خودم این رو از توی لینک زیر پیدا کردم:
http://pythoncentral.io/the-difference-between-__str__-and-__repr__/

مجتبی ( 267 تجربه )
3 سال پیش

بله خروجی هاش رو که دیده بودم
اما تفاوت بین official و informal رو متوجه نشدم
یعنی چی رسمی و غیر رسمی؟
و فقط هم تو تفاوت بین این دو ذکر شده رسمی و غیر رسمی
یعنی اگر رسمی باشه خروجی ش به عنوان استرینگ دیده نمیشه؟ و هرچی جلوی علامت مساوی قرار داده شده باشه لحاظ میشه؟
خب چه کاربردی داره؟؟
و اگه غیر رسمی باشه یعنی خروجی ش به عنوان استرینگ معرفی میشه؟
و محتوای اون استرینگ هم لحاظ میشه؟

ershad ( 70 تجربه )
3 ماه پیش

در همون لینکی که آقای عباسی گذاشته، گفته شده در صورتی که از تابع eval() استفاده میکنید باید repr را به کار ببرید و نه str. تفاوت هم مربوط به همان کوتیشن ها هست که در حالت دوم با خطا مواجه میشود. مثل کد زیر:

x = "hello world"
print(eval(repr(x)))
print(eval(str(x)))

Mahdi ( 9880 تجربه )
3 ماه پیش
تخصص : برنامه نویس

سلام . در مورد پایتون و فریم ورک های پایتون دوره های جدید و بروزتر و پیشرفته تر قراردهید .

برای ارسال پاسخ باید وارد سایت شوید