简体中文
Telegram

讨论串 def apply_twice(func, arg):

23 条消息 · –
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. ડ
          از حوصله ای که برا جواب دادن اونم با فلسفه 😁 خوشم اومدم واقعا
          1. M
            آقا اوج نامردیه شما استیکر بزاری ما نه ☹☹😭😭
      1. M
        ClassName.methodName( ); Is that what u say?
        1. M
          نه منظورشون این هست که توی خود پیاده سازی زبان پایتون OOP به صورت ۱۰۰ درصد رعایت شده و هر چیزی که توی پایتون هست یه ابجکت هست. کلاس ها هم خودشون ابجکت هستند. و همه چیز توی پایتون ابجکتی از کلاس فوق خودش هست و این قضیه ادامه پیدا میکنه تا اینکه به چیزی میرسند که خودش اون عنصر اولیه توی پایتون هست (دقیقاتر و درست تر بخوام بگم: همه چیز به یک چیز میرسه توی پایتون که یک وجهه و ماهیت ابجکتی و یک وجهه و ماهیت تایپی هست)

来自搜索索引的公开信息流 ChatCrawler ——“公开 Telegram 的 Google”;随着该社群被抓取而更新。 时间为 UTC。

仅限公开内容,使用 Telegram 官方 API。 关于 · 常见问题 · 索引限制 · 移除页面 · 目录 · 搜索 · 计算方法