قبل اینکه سوالت رو جواب بدم یه توضیح مختصر نیاز هست بدم در مورد پایتون.
در پایتون همه چیز ابجکت هست و در واقع استرینگ ، لیست، و توابع و حتی خود ابجکت هم ابجکت هست😯(یکم این قسمت پیادسازی پایتون فلسفی هست).
پس در واقع وقتی داریم یه تابع مینویسیم، در حال ساختن یک ابجکت از نوع و کلاس تابع هستیم. در نتیجه تمامی متدها، متغییرها و ویژگیهای این کلاس رو میتونیم توی تابعی که ساختیم استفاده کنیم. این قابلیت باعث میشه تابع توی پایتون صرفا تابع نباشه و یک غول قوی باشه که خیلی کارها رو بتونیم باهاش انجام بدیم. مثلا با *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
نه منظورشون این هست که توی خود پیاده سازی زبان پایتون OOP به صورت ۱۰۰ درصد رعایت شده و هر چیزی که توی پایتون هست یه ابجکت هست. کلاس ها هم خودشون ابجکت هستند. و همه چیز توی پایتون ابجکتی از کلاس فوق خودش هست و این قضیه ادامه پیدا میکنه تا اینکه به چیزی میرسند که خودش اون عنصر اولیه توی پایتون هست (دقیقاتر و درست تر بخوام بگم: همه چیز به یک چیز میرسه توی پایتون که یک وجهه و ماهیت ابجکتی و یک وجهه و ماهیت تایپی هست)
Ein offener öffentlicher Feed aus dem Suchindex
ChatCrawler — „Google für das öffentliche Telegram“; wird aktualisiert, während die Community gecrawlt wird.
Zeiten in UTC.