پایتون ترفند

بسم الله الرحمن الرحیم

پایتون ترفند

بسم الله الرحمن الرحیم

سلام خوش آمدید

پیاده کردن سه تابع توکار پایتون

پنجشنبه, ۲۳ شهریور ۱۴۰۲، ۰۲:۰۲ ب.ظ

بسم الله الرحمن الرحیم 

سلام!

امروز میخوام سه تابع توکار پایتون رو با هم مجدد پیاده سازی کنیم:

این سه تابع عبارت اند از:

۱_ abs

۲_ range

۳_ print

حالا میریم سراغ آموزش.

اما قبلش، باید بگم که چرا اینکارو کردم؟ چه نیاز به پیاده سازی توابع داخلی پایتون هست؟

این کار برای من یه جور تمرین بود، و برای شما میتونه باشه.

امیدوارم مفید واقع بشه.

 

تابع اول (abs):

اسم این تابع abs هست و برای گرفتن قدر مطلق یه عدد تو پایتون کاربرد داره.

قدر مطلق رو حتما میدونید ولی اگه نمیدونید به زبان ساده یعنی اگه عدد مثبت بود یا صفر بود خودشو بر میگردونه در غیر این صورت(اگه منفی بود) علامتشو عوض میکنه(قرینه).

حالا چند مثال:

print(abs(4)) # 4
print(abs(0)) # 0
print(abs(-4)) # 4

 

حالا کاربردش تو برنامه نویسی چیه! معمولا برای خنثی کردن منفی ها استفاده میشه.

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

حالا بریم پیاده سازی :

 

def my_abs(x):
    if x >= 0:
        return x
    return (-1) * x

تو خط اول اومدم تابع رو تعریف کردم. یه ورودی x هم داره. در خط بعد گفتم اگه x صفر یا بزرگتر از صفر (مثبت) باشه خودش رو خروجی بده. حالا اگه نبود منفی یک رو در x ضرب کنه( یعنی x قرینه بشه (در واقع علامتش عوض میشه))

حالا یه سوال پیش میاد، چرا از else استفاده نشد؟؟ جواب اینه که اگه شرط درست باشه بقیه تابع اجرا نمیشه پس نیازی به else نیست.

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

my_abs2 = lambda x : x if x >= 0 else (-1) * x

عجب! دیدید؟ تا جایی که میشه باید کد رو در خطوط کمتری نوشت. البته بهتره از تابع قبل استفاده کنید.

 

تابع دوم ( range ) :

این تابع کی کاربرد داره؟ وقتی میخوایم یه لیست از اعداد بسازیم. مخصوصا در حلقه for کاربرد داره. خیلی توضیح نمیدم چون تابع معروفی هست و همه تون احتمالا بلدید.

بریم پیاده سازی :

def my_range(start = 0,stop = 1,step = 1):
    while stop > start:
        yield start
        start += step

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

حالا چرا yield؟ تفاوتش با return چیه؟

اگه از return استفاده کنیم ، مقدار برمیگرده و اجرای تابع متوقف میشه. اما اگه از yield استفاده کنیم، مقدار برمیگرده اما اجرای تابع متوقف نمیشه. به عبارتی اجرای تابع همچنان ادامه داره.

حالا بریم سراغ تابع آخر.

 

تابع سوم ( print ) :

print("hello world!")

کد بالا برای شما آشنا نیست؟

بله! تابع print تقریبا اولین چیزیه که تو پایتون یاد گرفتیم. خیلی هم پر کاربرده.

برای چاپ یک مقدار در خروجی( کنسول) استفاده میشه.

def my_print(*options,spec=" "):
    options = spec.join(options)
    import os
    os.system(f"echo {options}")

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

بعدش با استفاده از join کاری کردم که اگه ورودی یک چند تایی (tuple) بود به رشته (str) تبدیل بشه.

حالا کتابخانه os رو وارد کردم.

در خط بعد گفتم از تابع os.system استفاده بشه. این تابع به ما امکان میده دستورات سیستم رو اجرا کنیم. دستور echo باعث چاپ متن در خروجی میشه.

اون f چیه اونجا؟ برای قالب بندی رشته ازش استفاده میشه و یکی از سه راه قالب بندی رشته هست. اگه ازش استفاده بشه هر جا تو رشته آکولاد {} گذاشتیم میشه بین آکولاد ها متغیر گذاشت و محتوای اونا دقیقا همونجا به رشته اضافه میشه.

 

جمع بندی :

من سه تا تابع رو گفتم و پیاده سازی کردم. شما هم سعی کنید توابع دیگه رو بازنویسی کنید و حتی توابع کاربردی جدیدی بنویسید!

 

خدانگهدار!!!

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی

بسم الله الرحمن الرحیم. سلام دوست عزیز. اینجا پایتون ترفنده! شاید بعضی وقتا مطالبی اینجا بگذارم!حالا تو میتونی جستجو کنی!

آخرین نظرات