توابع را می توان در ساختارهای داده ذخیره کرد
از آنجایی که توابع شهروندان درجه یک هستند، می توانید آنها را در داده ها ذخیره کنید ساختارها، درست مانند آنچه می توانید با اشیاء دیگر. به عنوان مثال، شما می توانید اضافه کردن توابع به یک لیست:>>> funcs >>> funcs = [bark, str.lower, str.capitalize] [<function yell at 0x10ff96510>, <method ‘capitalize’ of ‘str’ objects>]دسترسی به اشیاء تابع ذخیره شده در لیست مانند آن عمل می کند با هر نوع شی دیگری:>>> for f in funcs: <method ‘lower’ of ‘str’ objects>, … print(f, f(‘hey there’)) <method ‘lower’ of ‘str’ objects> ‘hey there’ <method ‘capitalize’ of ‘str’ objects> ‘Hey there’حتی می توانید یک شی تابع ذخیره شده در لیست را بدون اینکه ابتدا آن را به عنوان یک متغیر امضا کنید فراخوانی کنید. شما می توانید جستجو و سپس بلافاصله انجام دهید شیء تابع “ناجسم” حاصل را در یک عبارت فراخوانی کنید: >>> funcs0 <function yell at 0x10ff96510> ‘HEY THERE!’ ‘HEYHO!’از آنجایی که توابع اشیاء هستند، می توانید آنها را به عنوان آرگومان به آنها ارسال کنید توابع دیگر در اینجا یک تابع greet است که یک رشته تبریک را قالب بندی می کند با استفاده از تابع تابع ارسال شده به آن و سپس چاپ آن: def greet(func): توابع را می توان به توابع دیگر منتقل کرد greeting = func(‘Hi, I am a Python program’) print(greeting)شما می توانید با عبور در توابع مختلف بر احوالپرسی حاصل تأثیر بگذارید. اگر تابع bark را برای احوالپرسی رد کنید چه اتفاقی می افتد:’HI, I AM A PYTHON PROGRAM!’البته، شما همچنین می توانید یک تابع جدید برای ایجاد طعم متفاوتی از تبریک تعریف کنید. برای مثال تابع whisper زیر اگر نمی خواهید برنامه های پایتون شما صدا داشته باشند، ممکن است بهتر کار کنند مانند Optimus Prime:def whisper(text): >>> greet(bark) return text.lower() + ‘…’ ‘hi, i am a python program…’توانایی انتقال اشیاء تابع به عنوان آرگومان به توابع دیگر است قدرتمند این به شما اجازه می دهد تا رفتار خود را انتزاع کنید و از آن عبور کنید برنامه های شما در این مثال، تابع greet ثابت می ماند اما >>> greet(whisper) شما می توانید با عبور در رفتارهای مختلف احوالپرسی بر خروجی آن تأثیر بگذارید. توابعی که می توانند توابع دیگر را به عنوان آرگومان بپذیرند نیز نامیده می شوند توابع مرتبه بالاتر آنها برای سبک برنامه نویسی کاربردی ضروری هستند. مثال کلاسیک برای توابع درجه بالاتر در پایتون، تابع نقشه داخلی است. یک شی تابع و یک تکرارپذیر می گیرد و سپس تابع هر عنصر در تکرارپذیر را فراخوانی می کند و نتایج را به دست می دهد در اینجا نحوه فرمت یک توالی خوشامدگویی به یکباره آمده است نگاشت تابع پوست به آنها:>>> list(map(bark, [‘hello’, ‘hey’, ‘hi’])) همانطور که پیش می رود. [‘HELLO!’, ‘HEY!’, ‘HI!’]همانطور که دیدید، نقشه کل لیست را مرور کرد و تابع پوسته را برای هر عنصر اعمال کرد. در نتیجه، اکنون یک شی فهرست جدید با آن داریم.
قوانین ارسال دیدگاه در سایت