وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

واردات نسبی در مقابل مطلق در پایتون

0 6
زمان لازم برای مطالعه: 5 دقیقه


در حالی که می‌توانید پروژه‌های ساده را در یک فایل قرار دهید، اکثر پروژه‌های توسعه پایتون به چندین فایل نیاز دارند تا آنها را قابل مدیریت نگه دارد. یعنی شما به راهی نیاز دارید import یک فایل به فایل دیگر با این حال، بسیاری از Pythonistas وارد کردن فایل ها را گیج کننده می دانند. خوشبختانه، اگر تفاوت بین پایتون های مختلف را بدانید، آسان است import بیانیه.

واردات چیست؟

Importing به اجازه دادن به فایل پایتون یا ماژول پایتون برای دسترسی به اسکریپت از فایل یا ماژول پایتون دیگر اشاره دارد. شما فقط می توانید از توابع و ویژگی هایی که برنامه شما به آنها دسترسی دارد استفاده کنید. به عنوان مثال، اگر می خواهید از عملکردهای ریاضی استفاده کنید، باید import اول بسته ریاضی این به این دلیل است که قبل از استفاده از آنها باید هر چیزی را که می خواهید در پایتون استفاده کنید تعریف کنید.

به عنوان مثال، پایتون یک را می دهد NameError برای کد زیر:

myPi = math.pi

این به این دلیل است که نه math شی و نه ویژگی ها و روش های آن به صورت بومی برای خود زبان در دسترس هستند. برای استفاده از math اعتراض کنید، باید import ابتدا آن را

import math

myPi = math.pi
print myPi

را import بیانیه شی را به محدوده فعلی برنامه شما اضافه می کند.

واردات چگونه کار می کند

را import اظهارات انجام بسیاری در زیر هود به import فایل یا ماژول ابتدا به دنبال ماژول یا بسته شما می گردند sys.modules، جایی که پایتون کدهای وارد شده قبلی شما را ذخیره می کند. اگر پایتون نتواند ماژول را در آنجا پیدا کند، سپس از طریق آن جستجو می کند کتابخانه استاندارد پایتون برای این. اگر پایتون هنوز نتواند ماژول را پیدا کند، کل فضای ذخیره سازی شما را طی می کند، از دایرکتوری فعلی و مواردی که در فهرست فهرست شده است. system.path. اگر ماژول در این مکان ها پیدا شود ماژول را به برنامه شما اضافه می کند و در غیر این صورت یک عدد می دهد ModuleNotFoundError.

نحو بیانیه واردات

به import یک ماژول به طور مستقیم شما فقط نام ماژول یا بسته را بعد از آن قرار دهید import کلمه کلیدی. لطفا توجه داشته باشید که این عبارت به حروف کوچک و بزرگ حساس است.

import mymodule

با این حال، پایتون سینتکس پیچیده تری را برای وارد کردن کد ارائه می دهد. این قالب دوم شامل from کلمه کلیدی نیز

from mypackage import mymodule

در این قالب، شما هر دو را مشخص می کنید ماژول یا کد شما می خواهید همراه با جایی که هست. شما نام کد، ماژول یا بسته فرعی خود را برای آن قرار می دهید mymodule، و مکان آن برای mypackage. چنین import بیانیه عالی است اگر فقط بخواهید import برخی از کدهای بسته ذکر شده و نه خود بسته.

پیشنهاد می‌کنیم بخوانید:  گرد کردن اعداد در پایتون

حتی می توانید نام ماژول را با قرار دادن عبارت تغییر دهید as کلمه کلیدی.

import mymodule as oMyFunction

همچنین می توانید از ستاره (*) به عنوان یک کارت وحشی. بیانیه زیر خواهد بود import هر تابع و ویژگی موجود در math بسته بندی

from math import *

صرف نظر از نحو، شما همیشه باید توصیه شده را دنبال کنید واردات بهترین شیوه ها.

واردات مطلق

واردات مطلق شامل کل مسیر به اسکریپت شما می شود که با برنامه شروع می شود root پوشه در حالی که باید هر پوشه را با یک نقطه از هم جدا کنید، می توانید تا زمانی که به آن نیاز دارید، آن را داشته باشید.

نمونه هایی از واردات مطلق به شرح زیر است:

from package1.firstmodule import firstmodule
import package1.secondmodule.myfunction

مزایا و معایب واردات مطلق

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

اگرچه واردات مطلق می تواند بسیار طولانی شود. اگر پروژه شما دارای بسته های فرعی در بسته های فرعی در بسته های فرعی است، شما import عبارات می توانند فراتر از یک خط کد گسترش پیدا کنند. وقتی این اتفاق می افتد، بهتر است به جای آن از واردات نسبی استفاده کنید.

همچنین ممکن است هنگام راه اندازی برنامه خود با استفاده از فایل های راه اندازی مختلف، مشکلی را کشف کنید. مفسر پایتون فقط پوشه فعلی فایل شروع را به عنوان آن اعلام می کند sys.path بسته بندی root. اگر برنامه خود را فقط با استفاده از فایل های موجود در آن بارگیری کنید، خوب است root پوشه این بخاطر این است که sys.path در سراسر اسکریپت شما ثابت خواهد ماند.

با این حال، هنگامی که برنامه خود را از یک زیر پوشه یا در هر موقعیت دیگری که در آن شما شروع می کنید، وضعیت تغییر می کند sys.path ممکن است تغییر کند. سپس، شما “root پوشه” زیر پوشه است. از آنجایی که نمی توانید از واردات ضمنی استفاده کنید (همانطور که در زیر خواهیم دید)، هر فایلی خارج از زیرپوشه برای برنامه شما غیرقابل دسترسی می شود.

پیشنهاد می‌کنیم بخوانید:  مرتب‌سازی درج در جاوا اسکریپت در این مقاله توضیح خواهیم داد که در پس مرتب‌سازی درج چیست و آن را در جاوا اسکریپت پیاده‌سازی می‌کنیم. Insertion Sort یکی از ساده‌ترین الگوریتم‌های مرتب‌سازی است. این بسیار شهودی، پایدار، در محل، و از نوع مقایسه است. الگوریتم مرتب‌سازی پایدار الگوریتمی است که در آن دو شی با کلیدهای مساوی ظاهر می‌شوند...

شما دو راه حل برای این کار دارید. می توانید اسکریپت زیرپوشه خود را به عنوان یک ماژول وارد شده شروع کنید یا می توانید اضافه کنید sys.path مستقیما در کد شما

مثلا:

  • وارد کردن ماژول ها به عنوان زمان اجرا: python -m packA.a2
  • sys.path را قبل از وارد کردن فایل‌های خود اضافه کنید:
import os, sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
from packA.subA import sa2

واردات نسبی

با واردات نسبی، شما فقط محل منابع شما را نسبت به فایل کد فعلی مشخص می کنید. شما می توانید این کار را به صورت ضمنی یا صریح انجام دهید، حتی اگر واردات نسبی ضمنی در پایتون 3 حذف شد.

در مورد نحو، واردات نسبی از آن استفاده می کند علامت نقطه. تک نقطه ها نشان دهنده دایرکتوری اسکریپت فعلی است. دو نقطه نشان دهنده پوشه والد نقطه فشاری به معنای پدربزرگ و مادربزرگ و غیره است. اگر از سیستم عامل یونیکس مانند یا ویندوز استفاده می کنید، ممکن است با این سیستم آشنا باشید console.

نمونه هایی از واردات نسبی به شرح زیر است:

import other
from . import some_class
from .subA import sa1
from .some_module import some_class
import some_function
import subA.sa1

واردات نسبی و مزایا و معایب آن

واردات نسبی به ندرت تا زمانی که واردات مطلق رشد می کند. آنها حتی می توانند یک عبارت مطلق مضحک طولانی را به چیزی به سادگی تبدیل کنند:

from ..my_sub_package.my_module import my_function

با این حال، آنها همچنین مسیرهای ماژول های شما را پنهان می کنند. اگر تنها توسعه‌دهنده هستید، ممکن است مشکلی نداشته باشد، اما اگر عضوی از یک تیم توسعه باشید که ساختار دایرکتوری واقعی می‌تواند تغییر کند، به هم می‌ریزد.

از کدام واردات استفاده کنیم؟

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

نتیجه

مانند هر زبان برنامه نویسی مدرن دیگری، پایتون این امکان را به شما می دهد import کد از فایل ها یا ماژول های دیگر. با این حال، این می تواند به یک گیج کننده و مستعد خطا تبدیل شود process، مگر اینکه مفاهیم پشت آن را درک کنید import سیستم.

در این مقاله به روش‌های مختلف وارد کردن کد به برنامه‌های پایتون، از جمله واردات مطلق و نسبی نگاه کردیم. ما همچنین مزایا و معایب هر کدام را که در موارد استفاده مختلف دارای مزایای خود هستند، مقایسه کردیم.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-24 23:58:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید