یک ماژول میتواند شامل عبارات اجرایی و همچنین تعریفهای تابع باشد. این عبارات برای مقداردهی اولیه ماژول در نظر گرفته شدهاند. آنها فقط اولین باری که نام ماژول در یک دستور import ملاقات شود اجرا میشوند.
هر ماژول فضای نام خصوصی خود را دارد که به عنوان فضای نام سراسری توسط تمام توابع تعریف شده در ماژول استفاده میشود. بنابراین، نویسنده ماژول میتواند از متغیرهای سراسری در ماژول بدون نگرانی از تداخل تصادفی با متغیرهای سراسری کاربر استفاده کند. ماژولها میتوانند ماژولهای دیگری را وارد کنند. قرار دادن تمام دستورات import در ابتدای ماژول معمول است اما الزامی نیست.
گونهای از دستور import وجود دارد که نامها را مستقیماً از یک ماژول به فضای نام ماژول واردکننده وارد میکند:
>>> from fibo import fib, fib2 >>> fib(500) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
حتی گونهای برای وارد کردن تمام نامهایی که یک ماژول تعریف میکند وجود دارد:
>>> from fibo import * >>> fib(500) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
این تمام نامها به جز آنهایی که با _ شروع میشوند وارد میکند. در اکثر موارد برنامهنویسان پایتون از این امکان استفاده نمیکنند زیرا مجموعه نامهای ناشناختهای را وارد مفسر میکند.
اگر نام ماژول با as دنبال شود، نام بعد از as مستقیماً به ماژول وارد شده متصل میشود:
>>> import fibo as fib >>> fib.fib(500) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
وقتی یک ماژول پایتون را اجرا میکنید، کد در ماژون اجرا میشود، دقیقاً مانند اینکه آن را import کرده باشید، اما با __name__ تنظیم شده روی "__main__". با اضافه کردن این کد در انتهای ماژون خود، میتوانید فایل را هم به عنوان اسکریپت و هم به عنوان ماژول قابل import استفاده کنید:
if __name__ == "__main__":
import sys
fib(int(sys.argv[1]))
اگر ماژول وارد شود، کد اجرا نمیشود.
وقتی ماژولی به نام spam import شود، مفسر ابتدا به دنبال یک ماژول داخلی با همان نام میگردد. سپس به دنبال فایلی به نام spam.py در فهرستی از پوشهها که توسط متغیر sys.path داده شده میگردد. sys.path از این مکانها مقداردهی اولیه میشود:
PYTHONPATH (فهرستی از نام پوشهها با نحو مشابه متغیر shell به نام PATH)site-packages)برای تسریع بارگذاری ماژولها، پایتون نسخه کامپایل شده هر ماژول را در پوشه __pycache__ با نام module.version.pyc کش میکند. پایتون تاریخ اصلاح منبع را با نسخه کامپایل شده مقایسه میکند تا ببیند قدیمی شده و نیاز به کامپایل مجدد دارد یا نه. این فرآیند کاملاً خودکار است و فایلهای کامپایل شده مستقل از پلتفرم هستند.
نکته: برنامهها وقتی از فایل .pyc خوانده شوند سریعتر اجرا نمیشوند؛ تنها چیزی که سریعتر است سرعت بارگذاری فایلهای .pyc است.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://docs.python.org/3/tutorial