GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • فهرست مطالب
  • __future__ --- تعاریف دستورات آینده
  • traceback --- چاپ یا بازیابی ردگیری پشته
  • gc --- رابط زباله‌رو
  • گزارش یک اشکال
  • بهبود این صفحه
  • نمایش منبع
  • نمایش منبع ترجمه
  • اندیس
  • ماژول‌ها
  • Python
  • 3.15.2 documentation
  • کتابخانه‌ی استاندارد پایتون
  • خدمات ران‌تایم پایتون

This view

  • Original page
  • New address

GeezerVison is showing python.github.io — __future__ --- تعاریف دستورات آینده

__future__ --- تعاریف دستورات آینده¶

کد منبع: Lib/__future__.py


ایمپورت‌هایی به شکل from __future__ import feature، future statements نامیده می‌شوند. این موارد توسط کامپایلر پایتون به‌صورت ویژه درنظر گرفته می‌شوند تا امکان استفاده از ویژگی‌های جدید پایتون را در ماژول‌هایی که شامل دستور آینده هستند، قبل از نسخه‌ای که آن ویژگی به‌صورت استاندارد درمی‌آید، فراهم کنند.

اگرچه این دستورات آینده‌نگر به‌واسطه کامپایلر پایتون معنای ویژه‌ای پیدا می‌کنند، اما همچنان مانند هر دستور ایمپورت دیگری اجرا می‌شوند. ماژول __future__ وجود دارد و توسط سازوکار ایمپورت، دقیقاً مانند هر ماژول پایتون دیگری مدیریت می‌شود. این طراحی سه هدف را دنبال می‌کند:

  • برای جلوگیری از سردرگمی ابزارهای موجود که دستورات ایمپورت را تحلیل می‌کنند و انتظار دارند که ماژول‌های مورد نظر خود را پیدا کنند.

  • برای مستندسازی زمان معرفی تغییرات ناسازگار و زمانی که این تغییرات اجباری خواهند شد --- یا شده‌اند، این نوعی مستندسازی قابل‌اجرا است، و می‌توان آن را به‌صورت برنامه‌نویسی با ایمپورت کردن __future__ و بررسی محتویات آن مشاهده کرد.

  • برای اطمینان از اینکه future statements در نسخه‌های پیش از پایتون 2.1 حداقل استثناهای ران‌تایم پرتاب می‌کنند (ایمپورت کردن __future__ با شکست مواجه خواهد شد، زیرا هیچ ماژولی با آن نام پیش از نسخه‌ی ۲.۱ وجود نداشته است).

محتویات ماژول¶

هیچ توضیح ویژگی‌ای هرگز از __future__ حذف نخواهد شد. از زمان معرفی آن در پایتون ۲.۱، ویژگی‌های زیر راه خود را به این زبان با استفاده از این مکانیزم پیدا کرده‌اند:

ویژگی

اختیاری در

اجباری در

تأثیر

__future__.nested_scopes¶

2.1.0b1

2.2

PEP 227: محدوده‌های تو در تو ایستا

__future__.generators¶

2.2.0a1

2.3

PEP 255: تولیدگرهای ساده

__future__.division¶

2.2.0a2

3.0

PEP 238: تغییر عملگر تقسیم

__future__.absolute_import¶

2.5.0a1

3.0

PEP 328: ایمپورتها: چندخطی و مطلق/نسبی

__future__.with_statement¶

2.5.0a1

2.6

PEP 343: دستور “with”

__future__.print_function¶

2.6.0a2

3.0

PEP 3105: تبدیل print به یک تابع

__future__.unicode_literals¶

2.6.0a2

3.0

PEP 3112: مقادیر لفظی بایت در پایتون ۳۰۰۰

__future__.generator_stop¶

3.5.0b1

3.7

PEP 479: مدیریت StopIteration درون تولیدگرها

__future__.annotations¶

3.7.0b1

هرگز [1]

PEP 563: ارزیابی به‌تعویق‌افتاده‌ی annotationها، PEP 649: ارزیابی به‌تعویق‌افتاده‌ی annotationها با استفاده از توصیف‌گرها

class __future__._Feature¶

هر دستور در __future__.py به شکل زیر است:

FeatureName = _Feature(OptionalRelease, MandatoryRelease,
                       CompilerFlag)

که در آن، به‌طور معمول، OptionalRelease کوچک‌تر از MandatoryRelease است، و هر دو تاپل‌های ۵ عضوی به همان شکل sys.version_info هستند:

(PY_MAJOR_VERSION, # the 2 in 2.1.0a3; an int
 PY_MINOR_VERSION, # the 1; an int
 PY_MICRO_VERSION, # the 0; an int
 PY_RELEASE_LEVEL, # "alpha", "beta", "candidate" or "final"; string
 PY_RELEASE_SERIAL # the 3; an int
)
_Feature.getOptionalRelease()¶

OptionalRelease اولین نسخه‌ای را ثبت می‌کند که ویژگی در آن پذیرفته شده است.

_Feature.getMandatoryRelease()¶

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

در غیر این صورت، MandatoryRelease زمانی را ثبت می‌کند که ویژگی به بخشی از زبان تبدیل شد؛ در نسخه‌های همان یا بعد از آن، ماژول‌ها دیگر برای استفاده از آن ویژگی نیازی به دستور future ندارند، اما می‌توانند به استفاده از چنین ایمپورت‌هایی ادامه دهند.

MandatoryRelease همچنین می‌تواند None باشد، به این معنی که یک ویژگی برنامه‌ریزی‌شده حذف شده است یا اینکه هنوز تصمیمی درباره‌ی آن گرفته نشده است.

_Feature.compiler_flag¶

CompilerFlag پرچم (فیلد بیتی) است که باید در آرگومان چهارم تابع توکار compile() ارسال شود تا این ویژگی در کدهای کامپایل‌شده‌ی پویا فعال شود. این پرچم در ویژگی _Feature.compiler_flag روی نمونه‌های _Feature ذخیره می‌شود.

[1]

from __future__ import annotations قبلاً قرار بود در پایتون ۳.۱۰ اجباری شود، اما این تغییر به تعویق افتاد و در نهایت لغو شد. این ویژگی در نهایت منسوخ و حذف خواهد شد. برای اطلاعات بیشتر به PEP 649 و PEP 749 مراجعه کنید.

همچنین ببینید

دستورهای آینده

نحوه‌ی برخورد کامپایلر با ایمپورت‌های future.

PEP 236 - بازگشت به __future__

پیشنهاد اولیه برای مکانیزم __future__.

© حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرم‌افزار پایتون نسخه ۲ منتشر شده است.
مثال‌ها، دستورالعمل‌ها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شده‌اند.
برای اطلاعات بیشتر به تاریخچه و مجوز مراجعه کنید.

بنیاد نرم‌افزار پایتون یک شرکت غیرانتفاعی است. لطفاً کمک مالی کنید.

آخرین به‌روزرسانی در نوامبر 12, 2026 (06:19 UTC). آیا اشکالی یافتید؟
ساخته شده با Sphinx 9.1.0.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.