بستهٔ چندفایلی
بسته یک پوشه از چند ماژول است. math یک ماژول بود و یک فایل. bakery بیش از یک فایل دارد و خود پوشه همان بسته است. در این صفحه چیزی نصب نمیشود و فایل داده هم باز نمیشود. باز هم یک نام را import میکنید. فرق این است که این نام حالا به یک پوشه اشاره میکند. نام پوشه همان نامی است که import میکنید و هر فایل داخل آن نام خودش را نگه میدارد.
def heat():
return "warm"
این فایل bakery/oven.py است. heat کلمهٔ warm را برمیگرداند و آن را چاپ نمیکند. اگر همین فایل را تنها اجرا کنید، صفحه خالی میماند. خطی که warm را نشان میدهد در فایل دیگری است. تابعی که فراخوانی نشود چیزی نمینویسد.
📊 پوشه و خط import
| تکه | کارش |
|---|---|
| bakery/__init__.py | فایلی خالی؛ پوشه را بسته میکند |
| bakery/oven.py | heat کلمهٔ warm را برمیگرداند و خودش چاپ نمیکند |
| from bakery import oven | نقطه پوشه را به ماژول وصل میکند |
from bakery import oven
print(oven.heat())
روی صفحه warm دیده میشود. نقطه bakery را به oven وصل میکند. خط اریب در همین جا import نیست و برنامه پیش از اجرا میایستد. نام این ایست SyntaxError است. آن خط در این برنامه نیست. init.py میتواند خالی بماند. heat را در آن نمینویسید. وقتی خط اریب برنامه را متوقف کند، None هم نوشته نمیشود. فراخوانی oven.heat() است. heat در فایل دوم نامی رها نیست. import نام oven را میدهد و heat روی oven میماند.
صفحهٔ بعد کتابخانهٔ همراه است. این صفحه فقط ماژولها را در یک پوشه کنار هم میگذارد.
پوشهای از ماژولها
oven.py بهتنهایی چیزی نشان نمیدهد. فایل دیگر warm را نشان میدهد. نقطه bakery را به oven وصل میکند. init.py میتواند خالی باشد. صفحهٔ بعد کتابخانهٔ همراه است.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود