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

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

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

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

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

توابع می توانند حالت محلی را ضبط کنند

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

شما فقط دیدید که چگونه توابع می توانند شامل توابع درونی باشند، و اینطور است حتی امکان برگرداندن این توابع داخلی (در غیر این صورت پنهان) وجود دارد اکنون بهتر است کمربند ایمنی خود را ببندید زیرا کمی دیوانه تر می شود هنوز – ما در آستانه ورود به قلمرو برنامه نویسی کاربردی حتی عمیق تر هستیم. (شما آن استراحت قهوه را داشتید، درست است؟) توابع نه تنها می توانند توابع دیگر، این توابع درونی را برگردانند همچنین می تواند برخی از حالت های تابع والد را ضبط کرده و با آن حمل کند آنها را خب این یعنی چی؟من قصد دارم نمونه قبلی get_speak_func را کمی بازنویسی کنم برای نشان دادن این موضوع نسخه جدید فوراً یک آرگومان «حجم» و «متن» می گیرد تا تابع برگشتی را فوراً فراخوانی کند.def get_speak_func(text, volume): تابع والد def whisper(): def yell(): return text.lower() + ‘…’ return text.upper() + ‘!’ return yell else: if volume > 0.5: return whisper ‘HELLO, WORLD!’اکنون به عملکردهای درونی زمزمه و فریاد نگاه کنید. اطلاع >>> get_speak_func(‘Hello, World’, 0.7)() همچنان به پارامتر متن تعریف شده در تابع والد دسترسی داشته باشید. در حقیقت، به نظر می رسد که آنها ارزش آن استدلال را درک کرده و “به یاد می آورند”. توابعی که این کار را انجام می دهند، بسته های واژگانی (یا فقط بستن، برای کوتاه). یک بسته، مقادیر واژگانی محصور خود را به خاطر می آورد دامنه حتی زمانی که جریان برنامه دیگر در آن محدوده نیست. از نظر عملی، این بدان معنی است که نه تنها توابع می توانند رفتارها را برگردانند اما آنها همچنین می توانند آن رفتارها را از قبل پیکربندی کنند. برای نشان دادن این ایده، نمونه دیگری از استخوان های لخت وجود دارد:def make_adder(n): چگونه آنها دیگر پارامتر متنی ندارند؟ اما به نوعی می توانند return x + n return add >>> plus_3 = make_adder(3)>>> plus_5 = make_adder(5) >>> plus_3(4) 7 >>> plus_5(4) 9در این مثال، make_adder به عنوان یک کارخانه برای ایجاد و پیکربندی توابع “افزودن” عمل می کند. توجه داشته باشید که چگونه توابع “جمع کننده” همچنان می توانند به آرگومان n تابع make_adder دسترسی داشته باشند.اشیا می توانند مانند توابع رفتار کنند def add(x): در حالی که همه توابع در پایتون اشیاء هستند، عکس آن درست نیست. اشیاء توابع نیستند. اما می توان آنها را قابل فراخوانی کرد که این امکان را فراهم می کند اگر یک شی قابل فراخوانی باشد به این معنی است که می توانید از پرانتزهای گرد استفاده کنید دستور فراخوانی تابع بر روی آن و حتی ارسال آرگومان های فراخوانی تابع. همه اینها با روش call dunder ارائه می شود. در اینجا مثالی از کلاس وجود دارد که یک شی قابل فراخوان را تعریف می کند:class Adder: در بسیاری از موارد با آنها مانند عملکرد رفتار کنید. self.n = n def __call__(self, x): def __init__(self, n): return self.n + x >>> plus_3(4) >>> plus_3 = Adder(3) 7

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

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

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

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

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

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

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

لینک کوتاه:
0