بازدید: 207 بازدید

کار با توابع و ماژول ها در پایتون میتواند لذت برنامه نویسی را دو چندان کند. استفاده مجدد از کد یا به عبارتی، Code reuse یکی از مهمترین بخش های برنامه نویسی است.همواره افزایش حجم کد های یک برنامه، خوانایی آن را کاهش می دهد. برای این که یک پروژه برنامه نویسی در مقیاس بزرگ موفق شود، باید از قانون don’t repeat yourself یا به اختصار DRY پیوری شود. کاری که ماژول ها و توابع برای برنامه نویس می کنند، جزئی این قانون است. در مقابل قانون DRY قانون نه چندان جذاب WET قرار دارد یعنی write everything twice، خلاصه این که کدتون رو خشک نگه دارین.

 

در آموزش های قبلی از برخی توابع استفاده کردید مانند Range و یا Print این توابع با دریافت یک ورودی یک عمل خاص را انجام میدهند. هر جمله ای که در ادامه آن دو پرانتز باز و بسته قرار داشته باشد یک فراخوان تابع محسوب می شود.

 

range(12, 50)

print(“www.p30script.com”)

str(45)

 

کلمه ای که قبل از پرانتز قرار میگیرد، نام تابع است. پارامتر هایی که به وسیله ویرگول جداسازی شده و در داخل پرانتز قرار دارند آرگومان های تابع(function arguments) محسوب می شوند.

سین:

چگونه در پایتون تابع بنویسیم؟

چگونه در پایتون تابع با آرگومان تعریف کنیم؟

آیا می توان در پایتون از خروجی تابع برای دیگپر توابع استفاده کرد؟

جیم :

کار با توابع از پیش تعریف شده، آسان است اما باید همه جوانب آن تابع را بشناسید. باید بدانید چه آرگومان هایی را به عنوان ورودی قبول خواهد کرد پس قبل از استفاده از آرگومان ها، حتما مستندات(Documents) مربوط به آن تابع را مطالعه نمایید. اما اگر بخواهید تابع دلخواه خود را بنویسید، باید از def استفاده کنید. شرایط تعریف یک تابع ساده است، در ابتدا def قرار داده می شود و پس از آن نام تابه به همراه پرانتز باز و بسته و البته دو نقطه : در انتهای آن. می دانید که بلاک بندی در پایتون اهمیت فراوانی دارد، پس از تعریف تابع باید کد های خود را با فاصله یک بلاک معلوم از گوش سمت چپ قرار دهید.

 

def free_py():

print(“www.”)

print(“p30script”)

print(“.com”)

 

حالا اگر تابع free_py() را فراخوانی کنیم، در خروجی سه عبارت پرینت خواهد شد. حتما یادتان باشد که ابتدا باید تابع را در خطوط بالاتر کد خود تعریف کرده باشد. در غیر این صورت با خطا روبرو خواهید شد.

تعریف تابعی که هیچ آرگومان دریافت نکند، همیشه هم جالب نیست. اصل تعریف تابع، کم کردن تعداد تکرار کد نویسی است . شما می توانید در هنگام تعریف تابع، تعداد آرگومان های ورودی آن را نیز مشخص نمایید. برای این کار کافی است در زمان تعریف در داخل پرانتز ها نام های آرگومان های دلخواه را قرار دهید.

 

def do_something(x, y):

x=x*2

y=y+x

print(x+y-(x*y))

 

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

 

def maxi(x, y):

if x >=y:

return x

else:

return y

این تابع یک مقایسه گر است و بزرگترین ورودی را برمیگرداند. شما می توانید بارها را فراخوانی کنید کنید و هر بار از نتیجه آن در بخش خاصی به آن صورت که دوست دارید استفاده کنید.

 

print(maxi(16, 17))

z = max(42, 63)

print(z)

 

توجه داشته باشید که هرگاه در یک تابع به return برسید، عملا تابه ایست نموده و صرفا یک مقدار را برمیگردان و هر کد دیگر پس از return قرار داشته باشد، دیگر اجرا نخواهد شد.

سین:

چگونه در خواص یک تابع را به یک متغییر منتقل کنیم؟ارث بری؟

جیم:

از دیگر ویژگی های توابع در پایتون، این است که می تواند با توابع به مانند اشیا رفتار کند. به این صورت که می توانید یک تابع را به یک متغیر نسبت دهید و سپس آرگومان ها را به آن متغیر ارسال کنید.

 

def multi(x, y):

return x * y

a = 4

b = 7

operation = multi

print(operation(a, b)

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

def add(x, y):

return x + y

def do_twice(func, x, y):

return func(func(x, y), func(x, y))

a = 5

b = 10

print(do_twice(add, a, b))

سین:

ماژول چیست و گونه در پایتون از ماژول ها استفاده می کنند ؟

جیم:

ماژول ها (Moduls) قطعه کد هایی هستند که افراد دیگر آنها را نوشته اند هر کدام یه کار بخصوص را انجام می دهند، به مانند ایجاد اعداد تصادفی یا انجام عبارات ریاضی. ساده ترین راه فراخوانی ماژول ها، استفاده از import است. برای استفاده از یک ماژول در برنامه خود می بایست در ابتدای کار آن ماژول را فراخوانی کنید و در ادامه می توانید زیرمجموعه ای از آن ماژول را با یک نقطه فراخوانی کنید. قبل از استفاده از ماژول ها حتما مستندات آن ها را مطالعه کنید.

 

import random

for i in range(5):

value = random.randint(1, 6)

print(value)

 

این کد برای 5 بار و به صورت تصادفی اعدادی بین 1 تا 6 را در خروجی چاپ خواهد کرد. اگر بخواهید مستقیما یک تابع خاص از یک ماژول را فراخوانی و استفاده کنید، باید from را بکار ببرید و اگر میخواهید کلید واژه ای برای آن تابع تعریف کنید، کافی است در انتها as را قرار داده و سپس یک کلید واژه دلخواه قرار دهید.

from math import sqrt as sq

print(sq(100))

ادامه مطلب