Italiano
Apri in Telegram

Conversazione def apply_twice(func, arg):

23 messaggi · –
M
def apply_twice(func, arg): return func(func(arg)) def add_five(x): return x + 5 print(apply_twice(add_five, 10)) سلام خط دوم و اخر رو میشه توضیح بدید
  1. A
    دوبار بهش پنجتا اضافه میکنه فک کنم
  2. A
    print(apply_twice(add_five, 10))= adad_five(adad_five(10))
  3. M
    قبل اینکه سوالت رو جواب بدم یه توضیح مختصر نیاز هست بدم در مورد پایتون. در پایتون همه چیز ابجکت هست و در واقع استرینگ ، لیست، و توابع و حتی خود ابجکت هم ابجکت هست😯(یکم این قسمت پیادسازی پایتون فلسفی هست). پس در واقع وقتی داریم یه تابع مینویسیم، در حال ساختن یک ابجکت از نوع و کلاس تابع هستیم. در نتیجه تمامی متدها، متغییرها و ویژگی‌های این کلاس رو میتونیم توی تابعی که ساختیم استفاده کنیم. این قابلیت باعث میشه تابع توی پایتون صرفا تابع نباشه و یک غول قوی باشه که خیلی کارها رو بتونیم باهاش انجام بدیم. مثلا با *arg و **kwargs که در واقع متعلق به کلاس تابع هست، میتونیم به تابعی که ساختیم، تعداد نامحدودی متغیر و لیست و دیکشنری پاس بدیم. یکی دیگه از قابلیتهای تابع این هست که میتونی تابع به تابع پاس بدی. (دقیقا با توجه به همین توضیحاتی که گفتم بهت) توی خط اول دو تا متغییر تعریف کردی و توی خط دوم یکی از متغییر رو به عنوان متغییر برای تابعی که از متغییر اول میسازی تعریف کردی و retrun این تابع رو دوباره به عنوان ورودی همون تابع که از متغییر میسازی دوباره استفاده کردی. با این کار در واقع هر تابعی که به عنوان متغییر به تابعت پاس میدی ۲ بار ران میشه. البته این دو خط کدت رو : def apply_twice(func, arg): return func(func(arg)) میشد ساده تر هم نوشت : def apply_twice( func, arg): first_run = func(arg) second_run = func(first_run) return second_run حالا وقتی این تابع رو تعریف کردی: def add_five(x): return x + 5 و خواستی تابعت رو پاس بدی به اون تابع که بالا تعریف کردی میگی: print(apply_twice(add_five, 10)) که در واقع دو بار تابع add_five داخل شکم apply_twice ران میشه و دو تا پنج به عدد ۱۰ اضافه میشه و سپس چاپ میشه. #RA #function #OOP_In_Python
    1. M
      خیلی زحمت کشیدی ممنون❤️❤️❤️❤️❤️❤️
      1. M
        قربونت داداش ایشالا کارت رو راه انداخته باشه
        1. M
          از صبح تا حالا درگیرش بودم
          1. M
            ببین الان حله اگه درگیری که بیا پیوی توضیح بدم بازم
      1. M
        قربونت داداش. یه خورده مباحث عمیق در فسلفه پایتون هم داشت 😂
        1. ડ
          از حوصله ای که برا جواب دادن اونم با فلسفه 😁 خوشم اومدم واقعا
          1. M
            آقا اوج نامردیه شما استیکر بزاری ما نه ☹☹😭😭
      1. M
        ClassName.methodName( ); Is that what u say?
        1. M
          نه منظورشون این هست که توی خود پیاده سازی زبان پایتون OOP به صورت ۱۰۰ درصد رعایت شده و هر چیزی که توی پایتون هست یه ابجکت هست. کلاس ها هم خودشون ابجکت هستند. و همه چیز توی پایتون ابجکتی از کلاس فوق خودش هست و این قضیه ادامه پیدا میکنه تا اینکه به چیزی میرسند که خودش اون عنصر اولیه توی پایتون هست (دقیقاتر و درست تر بخوام بگم: همه چیز به یک چیز میرسه توی پایتون که یک وجهه و ماهیت ابجکتی و یک وجهه و ماهیت تایپی هست)
PPython + Linux ExpertsPython + Linux Experts@PythonLinuxExperts · gruppo · Tecnologia
4 287membri21scrivono in 30 giorni
Feed della community Apri in Telegram

Un feed pubblico aperto dall'indice di ricerca ChatCrawler — «Google per il Telegram pubblico»; si aggiorna man mano che la community viene scansionata. Orari in UTC.

Solo contenuti pubblici, API ufficiale di Telegram. Informazioni · FAQ · Limiti dell'indice · Rimuovi una pagina · Catalogo · Ricerca · Come calcoliamo