پایتون برای همه | 24 | توابع در برنامه‌نویسی

پایتون برای همه پایتون 3

اشتراک وفاداری (ماهی یک چایی)

می‌توانید از محتویات این باکس بگذرید و یک‌راست به سراغ نوشته اصلی بروید. قبل از خرید اشتراک وفاداری، مزایای آن را از طریق این پیوند مشاهده کنید. لطفا تنها بعد از خواندن «مزایای خرید اشتراک» اقدام به خرید کنید.

احضار توابع در برنامه‌نویسی

در برنامه‌نویسی، یک فانکشن یا تابع، سلسله‌ای از گزاره‌ها تحت نام یا عنوانی‌ست که یک محاسبه‌ی خاص را انجام می‌دهد. زمانی که شما یک تابع را تعریف می‌کنید، در حقیقت یک نامی برای آن انتخاب کرده و سپس تحت آن نام یک سری گزاره را می‌گنجانید. در ادامه می‌توانید آن‌ها را توسط همان نام «کال» یا «فراخوانی» کنید. ما پیشتر فراخوانی توابع را دیده‌ایم. به مثال زیر دقت کنید:

>>> type(32)
<type 'int'>

نام تابع در مثال بالا type است. عبارتی که در پرانتز آمده «آرگویمنتِ» آن تابع به حساب می‌آید. اگر آرگویمنت شامل یک متغیر یا مقدار شود، ما آن‌ها را به تابع – به مانند مثال بالا – ارسال می‌کنیم. نتیجه‌ی احضار تابع type در مثال بالا، نشان دادن نوع داده‌ی آرگویمنتی‌ست که به آن ارسال کرده‌ایم.

معمولا می‌گویند که یک تابع آرگیومنتی را «می‌گیرد» ونتیجه‌ای را «برمی‌گرداند.»

توابع توکاری شده

پایتون تعدادی از توابع مهم را در خودش دارد و لازم نیست که برای احضارشان، ابتدا آن‌ها را تعریف کنیم. سازنده‌ی پایتون، یک سری تابع برای حل مسائل معمول نوشته و در داخل پایتون برای استفاده‌ی ما قرار داده است.

مثلا تابع max و min بیشترین و کمترین مقدار موجود در یک لیست را برمی‌گرداند.

>>> max('Hello world')
'w'
>>> min('Hello world')
' '
>>>

تابع max به ما بزرگترین کاراکتر موجود در رشته را نشان می‌دهد و کاراکتر min کوچیکترین را که در مثال بالا یک فاصله یا space است.

یک تابع بسیار پرکاربرد دیگر len نام دارد. این تابع آیتم‌های موجود در آرگیومنت را شمارش می‌کند و نتیجه را برمی‌گرداند. مثلا تعداد کاراکترهای یک رشته را شمرده و به صورت یک عدد صحیح آن را برمی‌گرداند:

>>> len('Hello world')
11
>>>

این توابع فقط محدود به رشته‌ها نیستند و می‌توانند روی هر مقداری محاسبات لازم را انجام و جواب پس بدهند.

به یاد داشته باشید که اسم توابع توکاری شده را به عنوان نام متغیر استفاده نکنید. به عنوان مثال اسم متغیر خود را max نگذارید.

تابع‌های تبدیل نوع

پایتون شامل تابع‌هایی برای تبدیل یک مقدار به «نوع» دیگر می‌شود. برای نمونه تابع int یک مقدار را از شما گرفته، و در صورت واجد شرایط بودنش، یک عدد صحیح تحویل شما می‌دهد. اگر هم مقدار واجد شرایط نباشد، این تابع به شما در خصوص مشکل گزارش خواهد داد:

>>> int(’32’)
32
>>> int(‘Hello’)
ValueError: invalid literal for int() with base 10: ‘Hello’

تابع int می‌تواند یک عدد اعشاری را نیز به عدد صحیح تبدیل کند. البته کارش گِرد کردن نیست، بلکه قسمت اعشاری را می‌بُرد:

>>> int(3.99999)
3
>>> int(-2.3)
-2

تابع float یک عدد صحیح یا رشته را گرفته و به عدد اعشاری تبدیل می‌کند:

>>> float(32)
32.0
>>> float('3.14159')
3.14159

در نهایت تابع str یک آرگیومنت را دریافت و به رشته مبدل می‌کند:

>>> str(32)
'32'
>>> str(3.14159)
'3.14159'

اعداد تصادفی

ورودی یکسانی به برنامه‌های کامپیوتری بدهید و هر بار خروجی یکسانی تحویل بگیرید. قطعی بودن پاسخ، معمولا یه ویژگی خوب به حساب می‌آید، چرا که ما انتظار محاسبات یکسانی از عملیات‌های کامپیوتری داریم. ولی گاهی برای برخی از برنامه‌ها نیاز به رفتار غیرقابل پیش‌بینی احساس می‌شود. مثلا بازی‌ها یک مثال واضح از این امرند.

ساخت یک برنامه‌ای که کاملا در مقابل یک محاسبه‌ی جبری و قطعی قرار بگیرد کار ساده‌ای نخواهد بود. حداقل به نظر می‌آید که نیست. یکی از این روش‌ها استفاده از الگوریتم‌هایی‌ست که اعداد شبه‌تصادفی ایجاد می‌کنند. اعداد شبه‌تصادفی، واقعا تصادفی نیستند و بر اساس محاسبات جبری به دست می‌آیند ولی برای ما و شما، تشخیص غیرتصادفی بودن آن‌ها غیرممکن است.

ماژول random، توابعی را فراهم می‌کند که پایتون بتواند این اعداد شبه تصادفی را ایجاد نماید. ما در اینجا به اعداد شبه تصادفی، اعداد تصادفی می‌گوییم.

تابع random در پایتون، یک عدد اعشاری بین 0.0‎ و ‎1.0 ایجاد می‌کند که شامل خود عدد 1.0‎ نمی‌شود. هر زمانی که random را فراخوانی کنید، یک عدد تصادفیِ بلند در این محدوده دریافت می‌کنید. برای نمونه نگاهی به اسکریپت زیر بیندازید (می‌توانید این کدها را در حالت تعاملی پایتون نیز وارد کنید):

import random

for i in range(10):
    x = random.random()
    print(x)

با اجرای این اسکریپت ده عدد تصادفی بین 0.0‎ و 1.0‎ ایجاد خواهد شد. در پایین اسکریپت به همراه خروجی برنامه را آورده‌ایم:

>>> import random
>>> for i in range(10):
...     x = random.random()
...     print(x)
... 
0.597816151859746
0.14302601179310193
0.21502653599314525
0.6998553060747957
0.9475634141321392
0.014420883720896227
0.03784440862132332
0.08296168390036773
0.09072806706955494
0.07216573611640587
>>>

تمرین ۱: برنامه را بر روی سیستم خود اجرا کنید و ببینید چه اعدادی دریافت خواهید کرد. چند بار این کار را تکرار کنید و نگاهی به اعدادی که دریافت کرده‌اید بیندازید.

تابع random یکی از چندین توابعی‌ست که کارهای مرتبط با اعداد تصادفی را انجام می‌دهد. تابع randint پارامترهای low و high را گرفته و یک عدد صحیح بین آن‌ها برمی‌گرداند:

>>> random.randint(5, 10)
5
>>> random.randint(5, 10)
9

برای انتخاب یک عنصر از میان یک سلسله آیتم می‌توانید از choice استفاده کنید:

>>> t = [1, 2, 3]
>>> random.choice(t)
2
>>> random.choice(t)
3

ماژول random همچنین توابعی را برای ساخت مقادیر تصادفی از توزیع‌های پیوسته – شامل توزیع نرمال، نمایی، گاما و چند نمونه‌ی دیگر – در خود دارد.

این نوشته تحت مجوز کرییتیو کامنز BY – NC و حمایت موسسه تحقیقاتی رامونا ارائه می‌شود. شما می‌توانید با توجه به مفاد این گواهی از آن استفاده کنید.

اولین نفری باشید که نظر می‌گذارد

پاسخ دهید

ایمیل شما نمایش داده نخواهد شد