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

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

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

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

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

اشیا پایتون می توانند مانند توابع رفتار کنند

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

در حالی که همه توابع در پایتون اشیاء هستند، عکس آن درست نیست. اشیاء توابع نیستند. اما می توان آنها را قابل فراخوانی کرد که این امکان را فراهم می کند
در بسیاری از موارد با آنها مانند عملکرد رفتار کنید.
اگر یک شی قابل فراخوانی باشد به این معنی است که می توانید از پرانتزهای گرد استفاده کنید
دستور فراخوانی تابع بر روی آن و حتی ارسال آرگومان های فراخوانی تابع.
همه اینها با روش call dunder ارائه می شود. در اینجا مثالی از کلاس وجود دارد که یک شی قابل فراخوان را تعریف می کند:
class Adder:
def init(self, n):
self.n = n
def call(self, x):
return self.n + x

plus_3 = Adder(3)
plus_3(4)
7
در پشت صحنه، “تماس” یک نمونه شی به عنوان یک تابع تلاش می کند
برای اجرای متد call شی.
البته همه اشیا قابل فراخوانی نخواهند بود. به همین دلیل است که یک داخلی وجود دارد
تابع فراخوانی برای بررسی اینکه آیا یک شی به نظر قابل فراخوانی است یا خیر
یا نه:
callable(plus_3)
True
callable(yell)
True
callable(‘hello’)
False
لامبداها تک بیانی هستند
کارکرد
کلمه کلیدی لامبدا در پایتون یک میانبر برای اعلان فراهم می کند
توابع ناشناس کوچک توابع لامبدا دقیقاً مانند رفتار می کنند
توابع منظم با کلمه کلیدی def اعلام شده است. می توان از آنها استفاده کرد
هر زمان که اشیاء تابع مورد نیاز است.
برای مثال، به این صورت است که یک تابع لامبدا ساده را با انجام یک اضافه تعریف می‌کنید:
add = lambda x, y: x + y
add(5, 3)
8
شما می توانید همان تابع add را با کلمه کلیدی def اعلام کنید، اما آن را
کمی پرمخاطب تر خواهد بود:
def add(x, y):
… return x + y
add(5, 3)
8
اکنون ممکن است از خود بپرسید: «چرا سر و صدای زیاد در مورد لامبداها؟ اگر
آنها فقط یک نسخه مختصرتر از اعلام توابع با هستند
دف، مشکل بزرگ چیست؟»
به مثال زیر نگاهی بیندازید و در حین انجام این کار، کلمات تابع را در ذهن خود نگه دارید:
(lambda x, y: x + y)(5, 3)
8
باشه اینجا چی شد من فقط از لامبدا برای تعریف تابع “افزودن” درون خطی استفاده کردم و بلافاصله آن را با آرگومان های 5 و
3.
از نظر مفهومی، عبارت لامبدا lambda x، y: x + y است
مانند اعلان یک تابع با def، اما فقط به صورت درون خطی نوشته شده است. را
تفاوت اصلی در اینجا این است که من مجبور نیستم شی تابع را به آن متصل کنم
یک نام قبل از استفاده از آن من فقط عبارتی را که می خواستم بیان کردم
را به عنوان بخشی از یک لامبدا محاسبه کنید، و سپس بلافاصله آن را توسط ارزیابی کنید
فراخوانی عبارت لامبدا مانند یک تابع منظم.
قبل از حرکت، ممکن است بخواهید با کد قبلی بازی کنید
برای مثال کمی که واقعاً اجازه دهید معنای آن در درون من غرق شود. من هنوز به یاد دارم
این مدتی طول می کشد تا سرم را دور خودم بپیچم. پس نگران نباشید
صرف چند دقیقه در یک جلسه مترجم در این مورد. ارزش خواهد داشت
آی تی.
تفاوت نحوی دیگری بین لامبدا و معمولی وجود دارد
تعاریف تابع توابع لامبدا به یک واحد محدود می شوند
اصطلاح. این بدان معنی است که یک تابع لامبدا نمی تواند از دستورات یا استفاده کند
حاشیه نویسی – نه حتی یک بیانیه بازگشت.
چگونه مقادیر را از لامبدا برمی گردانید؟ اجرای لامبدا
تابع بیان خود را ارزیابی می کند و سپس به طور خودکار برمی گردد
نتیجه عبارت است، بنابراین همیشه یک حالت بازگشت ضمنی وجود دارد. به همین دلیل است که برخی افراد لامبدا را به عنوان یک عبارت واحد می نامند
کارکرد.

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

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

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

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

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

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

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

لینک کوتاه:
0