
مشاهده ویدیو قفل است
برای مشاهده مشاهده ویدیو، ابتدا این دوره را خریداری کنید.
متن فیلم
در این ویدیو، ما توابع را پوشش خواهیم داد. شما یاد خواهید گرفت که چگونه از برخی از توابع built-in (داخلی) پایتون استفاده کنید و همچنین در مورد نحوه ساخت توابع خودتون صحبت میکنیم. توابع چند پارامتر ورودی دریافت میکنند، سپس یک خروجی تولید یا تغییراتی اعمال میکنند. تابع فقط یک تکه از کد است که میتوانید بارها استفاده کنید. شما میتوانید تابع خود را پیادهسازی کنید، اما در بسیاری موارد، از توابع دیگران استفاده میکنید. در این مورد، شما فقط باید بدانید که تابع چگونه کار میکند و در برخی موارد، باید نحوه import کردن توابع را بدانید. اجازه دهید مربعهای نارنجی و زرد نشان دهنده بلوکهای مشابه از کد باشند. ما میتوانیم کد را با استفاده از تعدادی ورودی اجرا کنیم و یک خروجی دریافت کنیم. اگر ما یک تابع را برای انجام یک وظیفه تعریف کنیم، بعد از آن باید تابع را فراخوانی کنیم. اجازه دهید مربعهای کوچک خطوط کدی را نشان دهندکه برای فراخوانی تابع استفاده میشوند. ما میتوانیم این خطوط طولانی کد را فقط با چند بار فراخوانی تابع جایگزین کنیم. حالا فقط لازم است تابع را فراخوانی کنیم. کد ما خیلی کوتاهتر شده است. کد همان کار را انجام میدهد. شما میتوانید به این صورت به فرایند فکر کنید. وقتی تابع f1 را فراخوانی میکنیم، ورودی را به تابع میدهیم. این مقادیر به تمام خطوط کدی که نوشتید داده میشوند. تابع یک مقدار را برمیگرداند. میتوانید از این مقدار استفاده کنید. به عنوان مثال، شما میتوانید این مقدار را به یک تابع جدید، f2 وارد کنید. هنگامی که ما این تابع جدید f2 را فراخوانی میکنیم، مقدار به مجموعه دیگری از خطوط کد منتقل میشود. تابع یک مقدار را برمیگرداند. فرآیند تکرار میشود و مقادیر را به تابعی که فراخوانی میکنید منتقل میکند. شما میتوانید این توابع را ذخیره کرده و از آنها استفاده مجدد کنید، یا از توابع دیگران استفاده کنید. پایتون دارای توابع داخلی زیادی است. لازم نیست بدانید که این توابع چگونه کار میکنند یا پیادهسازی شدهاند، بلکه فقط کافی است بدانید که این توابع چه وظیفهای را انجام میدهند. تابع len یک ورودی از نوع دنباله، مانند یک رشته یا لیست یا نوع مجموعه، مانند یکdictionary یا set را دریافت میکند و طول آن دنباله یا مجموعه را بازمیگرداند. لیست زیر را در نظر بگیرید. تابع len این لیست را به عنوان یک آرگومان میگیرد و ما نتیجه را به متغیر L اختصاص میدهیم. تابع میگوید که هشت آیتم در لیست وجود دارد، پس طول لیست را که هشت است بازمیگرداند. تابع sum یک تاپل یا لیست را میگیرد و مجموع تمام عناصر را بازمیگرداند. لیست زیر را در نظر بگیرید. ما لیست را به تابع sum منتقل میکنیم و نتیجه را به متغیر S اختصاص میدهیم. تابع مجموع تمام عناصر را تعیین میکند و سپس آن را برمیگرداند. در این مورد، نتیجه 70 است. دو راه برای مرتب کردن یک لیست وجود دارد. اولین مورد استفاده از تابع sorted است. ما همچنین میتوانیم از متد لیست، sort استفاده کنیم. متدها شبیه توابع هستند. بیایید از این مثال برای نشان دادن تفاوت استفاده کنیم. تابع sorted لیست یا تاپل مرتب شده جدیدی را برمیگرداند. لیست album_ratings را در نظر بگیرید. ما میتوانیم تابع sorted را به لیست album_ratings اعمال کنیم و لیست sorted_album_rating را دریافت کنیم. نتیجه یک لیست مرتب شده جدید است. اگر به لیست album_ratings نگاه کنیم، هیچ چیز تغییر نکرده است. به طور کلی، توابع یک ورودی را دریافت میکنند، در این مورد، یک لیست. آنها یک خروجی جدید تولید میکنند، در این مورد، یک لیست مرتب شده. اگر از متد sort استفاده کنیم، لیست album_ratings تغییر خواهد کرد و هیچ لیست جدیدی ایجاد نخواهد شد. بیایید از دایاگرام برای کمک به نشان دادن فرآیند استفاده کنیم. در این مورد، مستطیل نشان دهنده لیست album_ratings است. هنگامی که متد sort را به لیست اعمال میکنیم، لیست album_ratings تغییر میکند. برخلاف مورد قبلی، ما میبینیم که لیست album_ratings تغییر کرده است. در این مورد، هیچ لیست جدیدی ایجاد نمیشود. اکنون که نحوه استفاده از توابع در پایتون را بررسی کردیم، بیایید ببینیم چگونه توابع خودمان را بسازیم. ما اکنون شما را در ساختن توابع خودتان در پایتون راهنمایی خواهیم کرد. این نمونهای از یک تابع در پایتون است که مقدار ورودی خود را به علاوه یک باز میگرداند. برای تعریف یک تابع، ما با کلمه کلیدی def شروع میکنیم. نام تابع باید توصیفی از آنچه انجام میدهد باشد. ما پارامتر ورودی رسمی a را در پرانتز داریم و پس از آن یک دو نقطه قرار دارد. ما یک بلوک کد با یک تورفتگی داریم. در این مورد، ما یک را به a اضافه میکنیم و آن را به b اختصاص میدهیم. مقدار b را برمیگردانیم یا خروجی میدهیم. پس از تعریف تابع، میتوانیم آن را فراخوانی کنیم. این تابع یک را به پنج اضافه میکند و شش را برمیگرداند. ما میتوانیم تابع را دوباره فراخوانی کنیم، این بار آن را به متغیر c اختصاص میدهیم. مقدار c یازده است. بیایید این موضوع را بیشتر بررسی کنیم. بیایید مثالی را بررسی کنیم که در آن تابعی را فراخوانی میکنید. باید توجه داشت که این یک مدل سادهشده از پایتون است. ما این تابع را فراخوانی میکنیم و به آن ورودی پنج میدهیم. این روش به شما کمک میکند مقدار پنج را هنگام انتقال به تابع تصور کنید. در حال حاضر توالی دستورات اجرا میشوند. ارزش a پنج است. به b مقدار شش اختصاص داده میشود. سپس مقدار b را برمیگردانیم. در این مورد، همانطور که به b مقدار شش اختصاص داده شد، تابع شش را برمیگرداند. اگر ما این تابع را دوباره فراخوانی کنیم، فرآیند از ابتدا شروع میشود. ما هشت را به عنوان ورودی میدهیم. عملیات بعدی اجرا میشود. هر آنچه در آخرین فراخوانی اتفاق افتاد، با مقدار متفاوت از a، دوباره اتفاق میافتد. تابع یک مقدار، در این مورد، 9 را بازمیگرداند. بیایید سعی کنیم این تابع را پیچیدهتر کنیم. معمولاً تابع را در چند خط اول مستند میکنند که به هر کس که از این تابع استفاده میکند میگوید که چه کاری انجام میدهد. این مستندات در نقل قولهای سه گانه احاطه شده است. شما میتوانید از دستورhelp در تابع برای نمایش مستندسازی به شرح زیر استفاده کنید. این کار نام تابع و مستندات را چاپ میکند. ما مستندسازی را در بقیه مثالها استفاده نخواهیم کرد. یک تابع میتواند چندین پارامتر داشته باشد. تابع mult دو عدد را ضرب میکند. به عبارت دیگر، ضرب آنها را محاسبه میکند. اگر عدد صحیح دو و سه را به تابع بدهیم، نتیجه یک عدد صحیح جدید است. اگر عدد صحیح 10 و اعشار 3.14 را بدهیم، نتیجه یک عدد اعشار 31.4 است. اگر عدد صحیح 2 و رشته Michael Jackson را بدهیم، رشته Michael Jackson دو بار تکرار میشود. این به این دلیل است که نماد ضرب همچنین میتواند به معنای تکرار یا توالی باشد. اگر به طور تصادفی یک عدد صحیح را با یک رشته به جای دو عدد صحیح ضرب کنید، خطا دریافت نخواهید کرد. در عوض، شما یک رشته دریافت خواهید کرد و برنامه شما ادامه پیدا میکند. اما بعداً به طور بالقوه شکست میخورد زیرا رشتهای دارید که انتظار داشتید یک عدد صحیح در آن داشته باشید. این ویژگی کدگذاری را ساده تر میکند، اما شما باید کد خود را کاملاً آزمایش کنید. در بسیاری از موارد، یک تابع عبارتreturn ندارد. در این موارد، پایتون شیء ویژه none را بازمیگرداند. به طور عملی، اگر تابع شما هیچ عبارتreturn نداشته باشد، میتوانید با آن طوری برخورد کنید که انگار تابع اصلاً هیچ چیز را بازنمیگرداند. تابع MJ به سادگی نام Michael Jackson را چاپ میکند. ما این تابع را فراخوانی میکنیم. این تابع Michael Jackson را چاپ میکند. بیایید تابع NoWork را تعریف کنیم که هیچ وظیفهای انجام نمیدهد. پایتون اجازه نمیدهد که یک تابع بدنه خالی داشته باشد، بنابراین میتوانیم از کلمه کلیدی pass استفاده کنیم که هیچ کاری انجام نمیدهد، اما نیاز به داشتن یک بدنه غیر خالی را برآورده میکند. اگر ما تابع را فراخوانی کنیم و آن را چاپ کنیم، تابع none را برمیگرداند. در پس زمینه، اگر عبارت return فراخوانی نشود، پایتون به طور خودکار none را برمیگرداند. مشاهده تابع NoWork با عبارت return زیر مفید است. معمولا توابع بیش از یک کار را انجام میدهند. این تابع یک عبارت را چاپ میکند و سپس یک مقدار را بازمیگرداند. بیایید از این جدول برای نشان دادن مقادیر مختلف هنگامی که تابع فراخوانی میشود استفاده کنیم. ما این تابع را با ورودی 2 فراخوانی میکنیم. ما مقدار b را پیدا میکنیم. تابع عبارت را با مقدار a و b چاپ میکند. در نهایت، تابع مقدار b را برمیگرداند، در این مورد 3. ما میتوانیم از حلقهها در توابع استفاده کنیم. این تابع مقادیر و اندیسهای یک حلقه یا تاپل را چاپ میکند. ما این تابع را با لیست album_ratings به عنوان ورودی فراخوانی میکنیم. بیایید لیست را در سمت راست با اندیس مربوطه آن نشان دهیم. Stuff به عنوان ورودی برای تابع enumerate است. این عملیات اندیس را به i و مقدار موجود در لیست را به s منتقل میکند. تابع شروع به تکرار از طریق حلقه میکند. این تابع اولین اندیس و اولین مقدار در لیست را چاپ میکند. ما به تکرار از طریق حلقه ادامه میدهیم. مقادیر i و s به روز میشوند. نوبت عبارتprint میشود. به طور مشابه، مقادیر بعدی لیست و اندیس چاپ میشوند. این فرآیند تکرار میشود. مقادیر i و s به روز میشوند. ما تکرار را ادامه میدهیم تا مقادیر نهایی در لیست چاپ شود. پارامترهای متغیر به ما اجازه میدهند تعداد متغیری از عناصر را وارد کنیم. تابع زیر را در نظر بگیرید. این تابع دارای یک ستاره در کنار پارامتر ورودی names است. هنگامی که ما این تابع را فراخوانی میکنیم، سه پارامتر در تاپل names بسته بندی میشوند. سپس از طریق حلقه تکرار میکنیم. مقادیر بر این اساس چاپ میشوند. اگر ما همان تابع را با تنها دو پارامتر به عنوان ورودی فراخوانی کنیم، نام متغیرها تنها حاوی دو عنصر هستند. نتیجه این است که تنها دو مقدار چاپ میشود. scope یا حوزه یک متغیر، آن بخشی از برنامه است که در آن، آن متغیر قابل دسترسی است. گفته میشود. متغیرهایی که خارج از هر تابعی تعریف میشوند، در حوزه سراسری هستند، به این معنی که پس از تعریف شدن میتوان به آنها در هر نقطه دسترسی پیدا کرد. در اینجا ما یک تابع داریم که رشته DC را به پارامتر X اضافه میکند. وقتی به قسمتی رسیدیم که مقدار x را برابر با AC قرار دهیم، به این معنا است که در حوزه سراسری قرار میگیرد، یعنی x از هر نقطه قابل دسترسی است. متغیر تعریف شده در حوزه سراسری متغیر سراسری نامیده میشود. وقتی تابع را فراخوانی میکنیم، به یک حوزه جدید یا حوزه AddDC وارد میشویم. ما به عنوان آرگومان ac را به تابع AddDC ارسال میکنیم. در حوزه تابع، مقدار ACDC به x داده میشود. تابع مقدار را برمیگرداند و به z اختصاص داده میشود. در حوزه سراسری، مقدار z به ACDC تنظیم میشود. پس از بازگرداندن مقدار، حوزه تابع حذف میشود. متغیرهای محلی فقط در حوزه یک تابع وجود دارند. تابع Thriller را در نظر بگیرید. تاریخ متغیر محلی به 1982 تنظیم شده است. وقتی تابع را فراخوانی میکنیم، یک حوزه جدید ایجاد میکنیم. در این حوزه تابع، مقدار تاریخ به 1982 تنظیم شده است. مقدار تاریخ در حوزه سراسری وجود ندارد. متغیرهای درون حوزه سراسری میتوانند نام مشابه متغیرهای موجود در حوزه محلی بدون تعارض داشته باشند. تابع Thriller را در نظر بگیرید. تاریخ متغیر محلی به 1982 تنظیم شده است. تاریخ متغیر سراسری به 2017 تنظیم شده است. وقتی تابع را فراخوانی میکنیم، یک حوزه جدید ایجاد میکنیم. در این حوزه، مقدار تاریخ به 1982 تنظیم شده است. اگر ما تابع را فراخوانی کنیم، مقدار تاریخ را در حوزه محلی بازمیگرداند. در این مورد، ۱۹۸۲. هنگامی که در حوزه سراسری چاپ میکنیم، از مقدار متغیر سراسری استفاده میکنیم. مقدار متغیر سراسری 2017 است. بنابراین، مقدار به 2017 تنظیم شده است. اگر یک متغیر در یک تابع تعریف نشود، پایتون حوزه سراسری را بررسی میکند. تابع ACDC را در نظر بگیرید. این تابع دارای متغیر rating بدون مقدار اختصاص داده شده است. اگر متغیر rating را در حوزه سراسری تعریف کنیم، سپس تابع را فراخوانی کنیم، پایتون متوجه خواهد شد که هیچ مقداری برای متغیر rating وجود ندارد. در نتیجه، پایتون حوزه را ترک میکند و بررسی میکند که آیا متغیر rating در حوزه سراسری وجود دارد یا خیر. از مقدار rating در حوزه سراسری در حوزه ACDC استفاده خواهد کرد. در این تابع، ما یک 9 را چاپ خواهیم کرد. همانطور که 1 را اضافه کردیم، مقدار z در حوزه سراسری 10 خواهد بود. مقدار rating در حوزه سراسری بدون تغییر خواهد بود. تابع PinkFloyd را در نظر بگیرید. اگر متغیرClaimedSales را با کلمه کلیدی global تعریف کنیم، متغیر یک متغیر سراسری خواهد بود. ما تابع PinkFloyd را فراخوانی میکنیم. متغیرClaimedSales به رشته 45 million در حوزه سراسری تنظیم شده است. وقتی متغیر را چاپ میکنیم، مقدار 45 million دریافت میکنیم. کارهای بیشتری وجود دارد که میتوانید با توابع انجام دهید. برای نمونههای بیشتر آزمایشگاهها را بررسی کنید.
توابع
توضیحات
در این ویدئو، ما توابع را پوشش میدهیم. شما یاد خواهید گرفت که چگونه از برخی از توابع داخلی پایتون استفاده کنید، و همچنین چگونه تابع خودتان را بسازید.
برای مشاهده کامل این قسمت، دوره را تهیه کنید
پس از خرید، به همه قسمتهای این دوره دسترسی خواهید داشت.