آموزش کامل دستور Import در پایتون
پایتون یک زبان برنامه نویسی بسیار ماژولار بوده که استفاده مجدد از کد با آن فراهم است. یکی از ویژگیهای کلیدی پایتون که امکان استفاده مجدد از کد را فراهم میکند دستور import محسوب میشود. دستور import در پایتون (import in python) به ما امکان میدهد از کد یک ماژول یا بسته در ماژول یا بسته دیگر استفاده کنیم. در این مطلب از مکتوب میخواهیم در مورد دستور import در python و استفاده از آن برای وارد کردن کتابخانه های پایتون و همچنین ابعاد مختلف آن به گفتگو بپردازیم. پس تا آخر این مطلب با ما همراه باشید.
سینتکس import در پایتون
در اصل معنی import در پایتون به معنی وارد کردن دیتا (import data) بوده و سینتکس آن بسیار ساده است. برای وارد کردن یک ماژول (module)، به سادگی باید از کلمه کلیدی import و به دنبال آن نام ماژول استفاده کنیم. به عنوان مثال، برای وارد کردن ماژول ریاضی، باید کدی مانند زیر بنویسیم:
import math
هنگامی که یک ماژول را وارد کردیم، میتوانیم از هر یک از توابع یا متغیرهای آن با ارجاع به نام ماژول مانند زیر استفاده کنیم:
import math
x = math.sqrt(4)
print(x)
در مثال فوق، ما از تابع sqrt() از ماژول ریاضی برای محاسبه جذر 4 استفاده کردیم. تا به اینجا سینتکس import در پایتون را آموختیم، حال نوبت به بررسی کد import در پایتون در سناریوهای مختلف است که در ادامه بحث به آن خواهیم پرداخت.
نکته: importing در زبان پایتون با همه محیطهایی که برای آن توسعهیافته از جمله، pycharm، پاندا، ژوپیترنوت بوک (jupyter notebook) و غیره سازگار است.
دستور import برای توابع یا متغیرهای خاص در پایتون
در برخی موارد، ممکن است فقط نیاز به استفاده از یک تابع یا متغیر از یک ماژول داشته باشیم. در چنین مواردی، ما میتوانیم تنها آن تابع یا متغیر را با استفاده از دستور از import وارد کنیم. به عنوان مثال، برای وارد کردن تنها تابع sqrt() از ماژول ریاضی، باید کدی مانند زیر بنویسیم:
from math import sqrt
x = sqrt(4)
print(x)
این کد همان نتیجه مثال قبلی را تولید میکند، اما ما فقط تابع sqrt() را به جای کل ماژول ریاضی وارد میکنیم. همچنین میتوانیم چندین تابع یا متغیر را از یک ماژول با استفاده از همان نحو وارد کنیم. به سادگی اسامی را با کاما جدا خواهیم کرد، مانند این:
from math import sqrt, pi
x = sqrt(4)
y = pi
print(x, y)
وارد کردن ماژولها با نام مستعار
گاهی اوقات، ممکن است بخواهیم از نام دیگری برای یک ماژول استفاده کنیم تا از تداخل نام با سایر ماژولها یا متغیرهای کد خود جلوگیری شود. میتوانیم این کار را با وارد کردن ماژول با نام مستعار با استفاده از کلمه کلیدی as انجام دهیم. به عنوان مثال، برای وارد کردن ماژول ریاضی با نام مستعار m، باید کدی مانند زیر بنویسیم:
import math as m
x = m.sqrt(4)
print(x)
این کد همان نتیجه مثال اول را ایجاد میکند، اما ما از نام مستعار m به جای ریاضی برای ارجاع به ماژول استفاده میکنیم.
پیشنهاد مطالعه: آموزش دستورات شرطی در پایتون به زبان ساده
دستور import برای زیر ماژولها
در پایتون، یک ماژول میتواند شامل ماژولها یا بستههای دیگری باشد. برای وارد کردن یک زیر ماژول، میتوانیم به سادگی از علامت نقطه برای تعیین نام زیر ماژول استفاده کنیم. به عنوان مثال، ماژول os حاوی یک زیر ماژول به نام path است که عملکردهایی را برای کار با مسیرهای فایل ارائه میدهد. برای وارد کردن زیر ماژول باید کدی مانند کد زیر بنویسیم:
import os.path
x = os.path.join('folder', 'file.txt')
print(x)
در مثال فوق، ما از تابع join() از زیر ماژول برای پیوستن نام پوشه و نام فایل به یک مسیر استفاده کردیم.
پیشنهاد مطالعه: آموزش تکرار شونده ها در پایتون (iterators)
دستور import برای وارد کردن کتابخانه های پایتون
بسته مجموعهای از ماژولها است که در یک ساختار دایرکتوری سازماندهی شدهاند و ما بیشتر آن را به عنوان کتابخانه های پایتون میشناسیم (python libraries). برای وارد کردن یک بسته، ما به سادگی از کلمه کلیدی import در پایتون و به دنبال آن نام بسته استفاده میکنیم. به عنوان مثال، برای وارد کردن بسته numpy، باید کدی مانند زیر بنویسیم:
import numpy
x = numpy.array([1, 2, 3])
print(x)
هنگامی که یک بسته را وارد کردیم، میتوانیم از هر یک از ماژولها یا زیر ماژولهای آن با استفاده از نماد نقطه استفاده کنیم. به عنوان مثال، برای استفاده از زیر ماژول تصادفی از بسته numpy، باید کدی مانند کد زیر بنویسیم:
import numpy.random
x = numpy.random.randint(0, 10)
print(x)
در مثال فوق، ما از تابع randint() از زیر ماژول تصادفی در بسته numpy برای تولید یک عدد صحیح تصادفی بین 0 و 10 استفاده میکنیم. با استفاده از دستور pip install میتوان کتابخانههای مدنظر خود را وارد کرد و با استفاده از دستور import آنها را به کد افزود.
ایمپورت کردن ماژول ها از دایرکتوری های مختلف
گاهی اوقات، ماژولی که میخواهیم وارد کنیم در دایرکتوری متفاوتی از دایرکتوری فعلی ما قرار دارد. در چنین مواردی، باید دایرکتوری حاوی ماژول را با استفاده از تابع ()sys.path.append به مسیر سیستم اضافه کنیم. برای مثال، فرض بر این است ماژولی به نام mymodule.py داریم که در دایرکتوری به نام mydir قرار دارد. برای وارد کردن این ماژول، باید کدی مانند کد زیر بنویسیم:
import sys
sys.path.append('mydir')
import mymodule
x = mymodule.myfunction()
print(x)
در مثال فوق ما دایرکتوری mydir را با استفاده از sys.path.append() به مسیر سیستم اضافه میکنیم و سپس ماژول mymodule را با استفاده از سینتکس استاندارد import وارد خواهیم کرد.
کاربرد import در پایتون چیست؟
دستور import در پایتون کاربردهای مختلفی دارد. بعضی از آنها به صورت فهرست زیر هستند:
- قابلیت استفاده مجدد کد: استفاده اولیه از تابع import در پایتون به معنی فعال کردن قابلیت استفاده مجدد کد است. با import، میتوانیم از کدهای دیگر ماژولها و بستهها در کد خود استفاده کنیم، بدون اینکه نیازی به بازنویسی مجدد همان کد باشد.
- ماژولار بودن: پایتون یک زبان بسیار ماژولار بوده و import یک ویژگی کلیدی آن است که ماژولار بودن را امکانپذیر میکند. با تقسیم برنامههای بزرگ به ماژولهای کوچکتر و قابل مدیریتتر، میتوانیم کد خود را سازماندهی کرده و نگهداری آن را آسانتر کنیم.
- همکاری: هنگام کار بر روی پروژههای بزرگ، import، همکاری با توسعه دهندگان دیگر را آسان میکند. هر توسعه دهنده میتواند بر روی یک ماژول یا بسته خاص کار کند و سپس در صورت نیاز آن را به پروژه اصلی وارد کند.
- مدیریت فضای نام: Import به ما امکان میدهد فضاهای نام را در کد خود مدیریت کنیم. با وارد کردن ماژولها با نام مستعار یا استفاده از دستور از as import، میتوانیم از تداخل نامگذاری جلوگیری کرده و کد خود را مرتب نگهداریم.
- دسترسی به کتابخانههای شخص ثالث: پایتون دارای اکوسیستم بزرگی از کتابخانهها و بستههای شخص ثالث است که میتوانیم از آنها در کد خود استفاده کنیم. Import به ما امکان میدهد بهراحتی به این کتابخانهها دسترسی داشته باشیم و از عملکرد آنها در پروژههای خود استفاده کنیم.
مشکل import در پایتون چیست؟
مشکل import در پایتون به موضوع مدیریت وابستگیها بین ماژولها (modules) و بستهها اشاره دارد. با افزایش پیچیدگی یک پروژه، پیگیری همه ماژولها و بستهها و وابستگیهای متقابل آنها به طور فزایندهای دشوار میشود. این میتواند منجر به تداخل بین نسخههای مختلف یک بسته، مشکل در تعیین اینکه کدام ماژول یا بسته باعث ایجاد یک خطای خاص میشود و مشکلات دیگر شود.
برای رفع مشکل import در زبان پایتون، پایتون چندین ابزار و بهترین روشها، مانند محیطهای مجازی، مدیریت بستهها و استفاده از import نسبی (Absolute Import) را ارائه میکند. این ابزارها میتوانند به توسعه دهندگان کمک کنند تا وابستگیها را مدیریت کرده و اطمینان حاصل کنند که پروژههای آنها در طول زمان قابل نگهداری و مقیاسپذیر باقی میمانند.
import absolute چیست؟
در پایتون، import absolute یک عبارت import است که مسیر مطلق ماژول یا بسته در حال وارد شدن را مشخص میکند. این مسیر از بسته سطح بالا شروع میشود و شامل تمام بستهها و بستههای فرعی تا ماژول در حال واردات میشود. به عنوان مثال، ساختار دایرکتوری زیر را در نظر بگیرید:
mypackage/
├── __init__.py
├── module1.py
└── subpackage/
├── __init__.py
└── module2.py
برای انجام یک وارد کردن مطلق module2.py از module1.py، باید از دستور import زیر استفاده کنیم:
from mypackage.subpackage import module2
در اینجا، مسیر از بسته سطح بالای mypackage شروع میشود و زیر بستهبندی را تا module2 را شامل خواهد شد. ایمپورت مطلق به عنوان روشی توصیه شده برای وارد کردن ماژولها در پایتون در نظر گرفته میشود، زیرا دستورات ایمپورت در پایتون را خواناتر و واضحتر میکند.
سخن پایانی
دستور import یکی از ویژگیهای قدرتمند پایتون است که به ما امکان میدهد از کدها استفاده مجدد کرده و با توسعه دهندگان دیگر همکاری کنیم. با درک نحوه وارد کردن ماژولها، زیر ماژولها و بستهها، میتوانیم کدهای ماژولار و قابل نگهداری بیشتری بنویسیم. علاوه بر این، با استفاده از نام مستعار و وارد کردن تنها توابع یا متغیرهای مورد نیاز خود، میتوانیم از تضاد نام جلوگیری کرده و خوانایی کد خود را بهبود ببخشیم.
برای یادگیری حرفهای پایتون و شروع از صفر میتوانید از دورههای آموزشی استفاده کنید. دورههای آموزش پایتون مکتب خونه برای این هدف بهترینها محسوب میشوند. در مکتب خونه انواع دوره پایتون از مقدماتی تا پیشرفته قرار دارد. هم اکنون از طریق صفحه آموزش پایتون میتوانید از این دورهها دیدن کنید.