آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

پشتیبانی با در اشیاء خودتان

دسته بندی :اخبار سایت 12 فوریه 2023 علیرضا بابامرادی 211

در حال حاضر، هیچ چیز خاص یا جادویی در مورد open() تابع یا وجود ندارد کلاس threading.Lock و این واقعیت که آنها را می توان با a استفاده کرد کلاس ها و توابع با پیاده سازی به اصطلاح مدیران زمینه. با بیانیه شما می توانید همان عملکرد را در خود ارائه دهید مدیر زمینه چیست؟ این یک «پروتکل» (یا رابط) ساده است که برای پشتیبانی از عبارت with باید شی شما دنبال شود. 6 اساسا، تنها کاری که باید انجام دهید این است که متدهای enter و exit را اضافه کنید به یک شی اگر می خواهید به عنوان مدیر زمینه عمل کند. پایتون بیایید نگاهی بیندازیم که این از نظر عملی چگونه است. اینجاست یک پیاده سازی ساده از open() context manager ممکن است شبیه:class ManagedFile: این دو روش را در زمان های مناسب در منبع فراخوانی می کند. self.name = name def __enter__(self): def __init__(self, name): self.file = open(self.name, ‘w’) def __exit__(self, exc_type, exc_val, exc_tb): return self.file self.file.close()کلاس ManagedFile ما از پروتکل مدیریت متن پیروی می کند و اکنون از عبارت with پشتیبانی می کند، درست مانند مثال open() اصلی انجام داد:>>> with ManagedFile(‘hello.txt’) as f: if self.file: … f.write(‘hello, world!’) … f.write(‘bye now’)با بیانیه و زمان به دست آوردن منبع است. هنگامی که اجرا دوباره از متن خارج می شود، پایتون exit را برای آزاد کردن آن فراخوانی می کند منبع پایتون زمانی که اجرا وارد متن می شود enter را فرا می خواند عبارت with در پایتون ماژول ابزار contextlib7 در نوشتن یک مدیر زمینه مبتنی بر کلاس تنها راه پشتیبانی نیست کتابخانه استاندارد چند انتزاع دیگر را ارائه می دهد که در بالای آن ساخته شده اند پروتکل مدیریت زمینه اساسی این می تواند زندگی شما را کمی آسان تر کند اگر موارد استفاده شما با آنچه که توسط contextlib ارائه شده مطابقت دارد. به عنوان مثال، می توانید از contextlib.contextmanager decora tor برای تعریف یک تابع کارخانه مبتنی بر ژنراتور برای منبعی استفاده کنید که سپس به طور خودکار از عبارت with پشتیبانی می کند. بازنویسی اینجاست مثال مدیر زمینه ManagedFile ما با این تکنیک به نظر می رسد پسندیدن:def managed_file(name): @contextmanager try: yield f finally: f = open(name, ‘w’) f.close() … f.write(‘hello, world!’) >>> with managed_file(‘hello.txt’) as f: … f.write(‘bye now’)در این مورد، manager_file() یک مولد است که ابتدا آن را بدست می آورد منبع پس از آن به طور موقت اجرای خود را به حالت تعلیق در می آورد و منبع را به دست می دهد تا تماس گیرنده بتواند از آن استفاده کند. وقتی تماس گیرنده مراحل پاکسازی باقیمانده ممکن است رخ دهد و منبع آزاد شود با خروج از متن، مولد به اجرا ادامه می دهد تا هر کدام پیاده سازی مبتنی بر کلاس و پیاده سازی مبتنی بر مولد اساساً معادل هستند. بسته به اینکه ممکن است یکی را بر دیگری ترجیح دهید در کدام رویکرد خوانایی بیشتری پیدا می کنید. بازگشت به سیستم ممکن است یک نقطه ضعف پیاده سازی مبتنی بر @contextmanager باشد دکوراتورها و ژنراتورها اگر نیاز دارید که با آن ها سرعت بگیرید، با خیال راحت به فصل های مربوطه در اینجا در این کتاب انحرافی داشته باشید. یک بار دیگر، انتخاب پیاده سازی درست در اینجا می آید که نیاز به درک مفاهیم پیشرفته پایتون دارد بستگی به آنچه که شما و تیمتان با استفاده از آن راحت هستید و از چه چیزهایی استفاده می کنید خواندنی ترین را پیدا کنید

علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

لینک کوتاه:
0