آموزش پایتون

آموزش‌های پایتونی

  • تجربیات
  • کتابخانه‌ها
  • چیز میز!
  • آموزش‌های پایتون

t-string در پایتون چیست؟

در نسخه ۳.۱۴ پایتون، یک ویژگی جدید با عنوان Template Strings یا به اختصار t-strings معرفی شده است (مطابق با PEP 750) . اگر تا به امروز با f-stringها کار کرده باشی (مثلا f"Hello {name}") احتمالا فکر می‌کنی که «خب، دوباره چه چیزی اضافه شده؟» — اما این ویژگی با هدفی متفاوت ارائه شده و می‌تواند در برخی سناریوها بسیار مفید باشد.

تعریف دقیق: t-string چیست؟

یک t-string در پایتون، با پیشوند t (یا T) در مقابل رشته literal تعریف می‌شود، مثلا:

template = t"Hello, {name}!"

در واقع نتایج زیر را دارد:

  • این‌‌که نوع مقدار به دست آمده یک str معمولی نیست، بلکه یک شیء از نوع Template است که در ماژول استاندارد string.templatelib تعریف شده.

  • این شی Template اطلاعات بیشتری را نگهداری می‌کند؛ مثلاً بخش‌های ثابت رشته و بخش‌های جایگذاری شده (interpolations) را جدا می‌کند.

  • در نتیجه، می‌توان بعد از ساخت آن، پردازش بیشتری روی بخش‌های جایگذاری شده انجام داد — مثلا برای مصون‌سازی امنیتی، فرمت‌دهی ویژه، یا تولید کد برای زبان‌های دیگر.

چرا به t-string نیاز داریم؟

چند دلیل وجود دارد که این قابلیت جدید می‌تواند مفید باشد:

1. تفکیک ساختار ثابت از مقادیر پویا: در f-stringها، رشته نهایی همان‌جا تولید می‌شود و دیگر تفکیکی بین متن ثابت و مقدار جایگذاری شده وجود ندارد (مثلاً "Hello Alice!"). در t-string، این تفکیک وجود دارد: Template نگه می‌دارد که «متن ثابت این‌ها هستند» و «مقادیر این بخش‌ها هستند».

name = "ali"
template = t"hi i am {name}"

2. قابلیت بازاستفاده قالب‌ها: چون Template شی است که می‌توان آن را جدا از داده نگهداری کرد و بعد مقادیرش را گذاشت، می‌توان برای تولید متن‌های متنوع با همان ساختار ثابت استفاده کرد.

چگونه از t-string استفاده کنیم؟

مثال اولیه

from string.templatelib import Template

user = "Alice"
template = t"Welcome, {user}!"

assert isinstance(template, Template)  # True
print(template.strings)     # بخش‌های ثابت رشته
print(template.values)      # مقادیر جایگذاری شده

پیمایش بخش‌ها

for part in template:
    if isinstance(part, str):
        print(" ثابت:", part)
    else:
        # part یک Interpolation است
        print(" جایگذاری شده:", part.value)

الحاق قالب‌ها (Concatenation)

می‌توان دو t-string را به‌هم چسباند تا قالب بزرگتری ساخت:

first = t"{first_name} "
second = t"{last_name}"
full = first + second

raw t-string (پیشوند r و t)

اگر بخواهی از محتوایی استفاده کنی که شامل بک‌اسلش (\) یا الگوهای رگیولار اکسپرشن است، می‌توانی از rt یا tr استفاده کنی:

rt"Path: {path}, Pattern: {regex}"

محدودیت‌ها / نکاتی که باید بدانیم

  • t-string رشته عادی نیست: یعنی اگر تابعی انتظار یک str بکند، نمی‌توان مستقیما یک Template را به آن داد (بدون تبدیل صریح). برخی APIها ممکن است تغییر کنند تا Template را بپذیرند.

  • چون این ویژگی تازه وارد است، هنوز همه‌ی کتابخانه‌ها آن را پشتیبانی نمی‌کنند یا ممکن است مستنداتشان بروز نشده باشد.

  • اگر صرفا می‌خواهی یک رشته تولید کنی و نیازی به پردازش ویژه نداری، f-string کماکان ساده‌تر و مناسب‌تر است. t-string زمانی مفیدتر است که بخواهی قالب را به صورت جداگانه مدیریت کنی یا بخش‌های جایگذاری شده را برای اهداف خاص (امنیتی، تولید کد، …) پردازش کنی.

کاربردهای واقعی:

  • تولید SQL یا دستورهای پایگاه داده با تضمین اینکه مقادیر جایگذاری شده امن هستند.

  • تولید HTML یا خروجی تحت وب و اطمینان از اینکه مقادیر کاربر به درستی escape شده‌اند.

  • تولید قالب‌های متنی و محلی‌سازی (localization) که ساختار ثابت دارند اما مقادیرشان تغییر می‌کند.

  • ابزارهایی که لازم دارند تشخیص بدهند کدام قسمت از رشته ثابت است و کدام قسمت پویا – مثلاً برای کشینگ، برای linting، برای تحلیل امنیتی.

  • پروژه‌های آموزشی یا کتابخانه‌هایی که می‌خواهند قالب را به صورت شیء نگه دارند تا بعدا پردازش شود.

جمع‌بندی

ویژگی t-string در پایتون نسخه ۳.۱۴ یک گام مهم در مسیر «قالب‌دهی متون به‌صورت امن‌تر و انعطاف‌پذیرتر» است. اگرچه برای همه‌ی موارد لازم نیست، اما زمانی که بخواهی قالب‌ها را جدا از داده‌ها نگه داری، یا بخش جایگذاری را با هدف خاصی پردازش کنی، انتخاب بسیار خوبی هستش. نظر شما چیه؟!

آموزش پایتون متوسط
آقای ربات دوشنبه بیست و هشتم مهر ۱۴۰۴ ، ساعت 15:8

آمارگیر وبلاگ

قالب طراحی شده توسط وبلاگ :: webloog
آموزش پایتون آموزش‌های پایتونی
  • وبسایت آی‌کد آکادمی
  • اینستاگرام من
  • تلگرام من
  • آمار (مخصوص ادمین)
  • نوشتن پکیج مکمل برای nicegui
  • برنامه ارسال قیمت دلار با پایتون!
  • پایتون در حوزه زیست‌شناسی چه کاربردی داره؟
  • آیا هوش مصنوعی جای برنامه‌نویس رو میگیره؟
  • چطور پروژه کار کنیم؟!
  • ! روزِ صفر
  • برنامه هواشناسی با پایتون!
  • چرا باید برای آموزش هزینه کنیم؟!
  • سریعترین کد ادیتور دنیا - کد ادیتور Zed
  • در مورد بهترین کتاب آموزش پایتون
  • معرفی Faker – کتابخانه‌ای برای تولید داده‌های ساختگی
  • t-string در پایتون چیست؟
  • تجربیات
  • کتابخانه‌ها
  • آموزش‌های پایتون
  • چیز میز!
  • مشاوره
  • آبان ۱۴۰۴
  • مهر ۱۴۰۴
  • شهریور ۱۴۰۴
  • خرداد ۱۴۰۴
  • فروردین ۱۴۰۴
  • اسفند ۱۴۰۳
  • وبسایت آی‌کد آکادمی
  • کامل‌ترین دوره آموزشی پایتون