مازندهاست | خدمات میزبانی وب

فرمت نوشته در پایتون و انواع مختلف فرمت بندی

روش‌های مختلفی برای نگارش در پایتون وجود دارد. در این‌جا روش‌های مختلف را هم بررسی می‌کنیم.

ابتدا چند تعریف متغیر را در نظر بگیرید که برای همه مثال‌های زیر استفاده می‌کنیم.

Python
name = 'Saeed'
age = 26
country = 'Iran'
web_site = 'https://pythonlearner.ir'

استفاده از %s

این روش فرمت بندی پایتون از آغاز با پایتون بوده است و به نوعی الهام گرفته از زبان برنامه‌نویسی C می‌باشد. نحوه استفاده از این نوع نگارش را با مثالی نمایش می‌دهیم:

Python
print("Hi, my name is %s, I'm %s years old and I'm from %s.\n"
      "The website you're seeing this is %s" % (name, age, country, web_site))

این روش قدیمی استفاده از نام متغیر در وسط متن می‌باشد که به نوعی مشابه فرمت نگارش زبان C هست اما با این تفاوت که در زبان C شما باید هنگام پرینت کردن مشخص کنید که نوع متغیر string اگر هست %s و اگر عدد صحیح هست %d استفاده کنید، اما در پایتون این محدودیت در فرمت بندی وجود ندارد.

با توجه به این که این روش قدیمی هست ایراد یا ضعفی که به این شیوه وارد هست کاهش خوانایی کد می‌باشد که شما باید تک به تک چک کنید که کدام %s برای کدام متغیر هست و چه چیزی را قصد دارد اجرا کند.

تابع format()

این تابع وظیفه فرمت بندی متن یا نوشته را بر عهده دارد که با مثالی آن را نمایش می‌دهیم:

Python
print("Hi, my name is {}, I'm {} years old and I'm from {}.\n"
      "The website you're seeing this is {}".format(name, age, country, web_site))

این تابع در پایتون ۲.۶ معرفی شد و به نظر می‌رسد که خوانایی بیشتری نسبت به روش ابتدایی دارد، هرچند که هنوز هم برای این که مشخص شود جایگاه هر متغیر کجاست باید به شکل دستی ببینید.

اما یک ویژگی که تابع format دارد این هست که شما می‌توانید جایگاه هر متغیر را تعریف کنید که خوانایی کد برای شما راحت‌تر می‌شود. به مثال زیر توجه کنید:

Python
print("Hi, my name is {0}, I'm {1} years old and I'm from {2}.\n"
      "The website you're seeing this is {3}".format(name, age, country, web_site))

همان‌طور که می‌بینید هر متغیر با یک index شماره‌گذاری می‌شود و حتما هم توجه کنید که ایندکس‌ها از عدد 0 شروع می‌شوند و اگر از 0 شروع نکنید مفسر پایتون به شما خطا می‌دهد.

اما راهکار دیگری هم تابع format دارد که می‌توانید شماره ایندکس‌ها را تغییر دهید. مثال زیر را در نظر بگیرید:

Python
print("Hi, my name is {2}, I'm' {1} years old and I'm from {3}.\n"
      "The website you're seeing this is {0}".format(web_site, age, name, country))

هردوی این ها یک خروجی را نمایش می‌دهند اما صرفا نحوه جایگذاری متغیرها را در تابع format تغییر داده‌ایم.

پایتون کارهای قدیمی از این روش معمولا استفاده می‌کنند اما بعدا روش بهتری به پایتون اضافه شد که خوانایی بیشتری به کد داد که در زیر با هم می‌بینیم.

f-string

این نوع فرمت بندی که f-string نام دارد روش جدیدتری هست و خوانایی بیشتری نسبت به دو روش قبلی به کد می‌دهد و باعث می‌شود که debug یا عیب‌یابی کد سریع‌تر انجام شود. این روش را با مثالی با هم بررسی می‌کنیم:

Python
print(f"Hi, my name is {name}, I'm' {age} years old and I'm from {country}.\n"
      f"The website you're seeing this is {web_site}")

همان‌طور که می‌بینید در این روش نام هر متغیر داخل {} قرار می‌گیرد که خوانایی کد را خیلی بیشتر از قبل می‌کند و این‌که کدام متغیر کجا استفاده می‌شود به راحتی قابل تشخیص می‌باشد.

توجه کنید در این مثال که ما در دو خط نوشتیم و به ازای هر خط باید حرف f را بنویسیم. حتما توجه کنید که حرف f باید قبل از ' یا " باشد.

در این روش بعد از توابع یا دستوری مثل print و return و یا حتی موقع تعریف متغیر هم می‌توان از این روش استفاده کرد. به این مثال‌ها توجه کنید:

Python
full = f'{name}, {age}, from {country}'
def test():
    return f'hi {full}'