چالش روزانه · ۲۲ مهر ۱۴۰۵
چالش پایتون ۱۲: رشتهها تغییرناپذیرند
قبل از اجرای کد، خروجی آن را پیشبینی کن. حدس نزن؛ خط به خط فکر کن پایتون چه میکند.
s = "hello"
t = s
s = "y" + s[1:]
print(s, t)نمایش پاسخ و توضیح
پاسخ درست: گزینهٔ ب — yello hello
خط به خط
s = "hello"← نامsبه رشتهٔ"hello"وصل میشود.t = s← نامtهم به همان رشته وصل میشود.s = "y" + s[1:]← طرف راست یک رشتهٔ کاملاً جدید میسازد:"y" + "ello" = "yello". بعد فقط نامsبه این رشتهٔ جدید وصل میشود.
قبل از خط ۳: بعد از خط ۳:
s ──┐ s ───▶ "yello"
├──▶ "hello" t ───▶ "hello"
t ──┘
رشتهٔ "hello" اصلاً تغییر نکرد. رشتهها در پایتون تغییرناپذیر (immutable) هستند و هیچ عملیاتی نمیتواند خود یک رشته را عوض کند؛ فقط میشود رشتهٔ جدید ساخت.
جواب: yello hello
مقایسه با لیست
لیستها تغییرپذیرند و آنجا داستان فرق میکند. چالش ۱ را ببینید!
حالا خودت اجرا کن و تغییرش بده
s = "hello"
t = s
s = "y" + s[1:]
print(s, t)