None نشانه نبودن یک مقدار است و خودش رشته نیست. فراخوانی روشهای رشته مثل strip روی None خطا میده. وقتی ورودی میتونه غایب باشه، بهتره قبل از عملیات مخصوص رشته، اون حالت رو صریح جدا کنیم. عبارت is None این تصمیم رو دقیق بیان میکنه و با رشته خالی یا صفر اشتباه نمیشه.
مثال یک توضیح اختیاری رو به متن پیشفرض تبدیل میکنه. توی تمرین نام نمایشی اختیاری داریم، ولی رشته خالی باید همان رشته خالی باقی بمونه. خطای رایج استفاده از if not value برای هر نوع مقدار غایبه؛ اون شرط علاوه بر None، رشته خالی رو هم میگیره. اینجا این دو حالت قرارداد متفاوت دارن. برای مقدار غیرغایب، فاصله ابتدا و انتهای متن رو حذف میکنیم و حروف وسط رو دست نمیزنیم. ورودی طبق قرارداد فقط رشته یا None است؛ لازم نیست با str کردن فهرست و دیکشنری مسئله تازهای اضافه کنی.
✍️ مثال حلشده:
def description(value):
if value is None:
return "توضیحی ثبت نشده"
return value.strip()
حالا نوبت توئه: تابع display_name(value) برای None دقیقاً "ناشناس" برگرداند و برای رشته، نتیجه strip را بدهد. " سارا " باید "سارا"، "" باید "" و None باید "ناشناس" شود. فقط رشته یا None وارد میشود؛ رشته خالی را با مقدار غایب یکی نگیر و چیزی چاپ نکن.
فعالیت شما
تابع display_name(value) برای None دقیقاً "ناشناس" برگرداند و برای رشته، نتیجه strip را بدهد. " سارا " باید "سارا"، "" باید "" و None باید "ناشناس" شود. فقط رشته یا None وارد میشود؛ رشته خالی را با مقدار غایب یکی نگیر و چیزی چاپ نکن.