loading...

اخبار برنامه نويسي

اخبار برنامه نويسي

بازدید : 297
11 زمان : 1399:2


دكوراتورها مضمون‌ خيلي بي آلايش و در عين اكنون كاربردي مي باشند كه براي مثال اگه با فلسك كار بكنيد حتما نياز خواهيد داشت كه ازش به كار گيري بكنيد . اما با وجود اين كه دكوراتورها خيلي معمولي ميباشند البته بعضيا حقيقتا درك‌ش نمي‌كنند!
خب ايده اينه كه بتونيم از روش يك تابع , كاركرد يك تابع ديگه رو تغيير‌و تحول بديم و يا اين كه خوب تر بگيم كه يه تابع رو توسعه بديم .
فكر كنيد تابع ۱ رو داريد و تابع ۲ … حال مي‌خوايد از روش تابع ۱ , كاري بكنيد كه تابع ۲ شغل هاي بيشتري رو انجام بده .
بياييد يه نمونه بي آلايش رو در لحاظ بگيريم :
فكر كنيد اينجانب يه تابع دارم به نام style كه هر متني كه واردش بشه رو به صورتي قشنگ برمي‌گردونه!
فكر كنيد يه تابع ديگه نيز دارم كه نوشته رو چاپ مي‌كنه . درحال حاضر مي‌خوام بجاي اين كه فرآيند چاپ نوشته معمولي انجام بشه , از اقتدار تابع style براي اين كار به كارگيري بكنم .
پس نياز است كه تابع style تحت عنوان محل ورود يك تابع ديگر رو بگيره :
1234def style ( func1 ) :
print ( ' - - - - - - - - - - - - - - - - - - - - ' )
func1 ( )
print ( ' - - - - - - - - - - - - - - - - - - - - ' )
درحال حاضر تابع دوممون رو كه صرفا قراره يه نوشته بي آلايش رو چاپ بكنه تعريف مي كنيم :
12def print _ some _ text ( ) :
print ( ( Hello World ( )
اكنون نياز ميباشد كه تابع دوم رو تحت عنوان آرگومان براي تابع اولمون گزينش كنيم :
1style ( print _ some _ text )
مسئله نماد @ چيه؟
اين شد يه چيزي! پايتون يه ميانبر معمولي برامون ساخت كرده كه از روش اون مي‌تونيم فارغ از فراخواني نصيب انتها , دكوراتور رو اعمال بكنيم . براي اينكار كافيه قبلي از تعريف تابع دو‌مين @ را همراه با اسم تابع

اولي بنويسيد:

1234567@style
 
def print_some_text():
print("Hello World")
 
 
print_some_text()

حالا يه مشكل پيش مياد. تابع اصلي كه نوشتيم يا همون style يه بخش مهمي نداره! قسمت return … اينطوري يه تايپ ارور مي‌گيريم چرا كه تابع مقدار NoneType رو برمي‌گردونه! براي اين كار مي‌تونيم يه تابع ديگه داشته باشيم كه اون تابع كارهاي استايل دهي رو انجام مي‌ده و در نهايت تابع style همون تابع رو برمي‌گردونه. براي اين كار به تعريف تابع style برمي گرديم و مثل زير ويرايشش مي‌كنيم:

1234567def style(func1):
def final():
print('------------')
func1()
print('------------')
 
return final

حالا كد رو اجرا كنيد متوجه مي‌شيد كه همه چيز بدون مشكل اجرا ميشه!


دكوراتورها مضمون‌ خيلي بي آلايش و در عين اكنون كاربردي مي باشند كه براي مثال اگه با فلسك كار بكنيد حتما نياز خواهيد داشت كه ازش به كار گيري بكنيد . اما با وجود اين كه دكوراتورها خيلي معمولي ميباشند البته بعضيا حقيقتا درك‌ش نمي‌كنند!
خب ايده اينه كه بتونيم از روش يك تابع , كاركرد يك تابع ديگه رو تغيير‌و تحول بديم و يا اين كه خوب تر بگيم كه يه تابع رو توسعه بديم .
فكر كنيد تابع ۱ رو داريد و تابع ۲ … حال مي‌خوايد از روش تابع ۱ , كاري بكنيد كه تابع ۲ شغل هاي بيشتري رو انجام بده .
بياييد يه نمونه بي آلايش رو در لحاظ بگيريم :
فكر كنيد اينجانب يه تابع دارم به نام style كه هر متني كه واردش بشه رو به صورتي قشنگ برمي‌گردونه!
فكر كنيد يه تابع ديگه نيز دارم كه نوشته رو چاپ مي‌كنه . درحال حاضر مي‌خوام بجاي اين كه فرآيند چاپ نوشته معمولي انجام بشه , از اقتدار تابع style براي اين كار به كارگيري بكنم .
پس نياز است كه تابع style تحت عنوان محل ورود يك تابع ديگر رو بگيره :
1234def style ( func1 ) :
print ( ' - - - - - - - - - - - - - - - - - - - - ' )
func1 ( )
print ( ' - - - - - - - - - - - - - - - - - - - - ' )
درحال حاضر تابع دوممون رو كه صرفا قراره يه نوشته بي آلايش رو چاپ بكنه تعريف مي كنيم :
12def print _ some _ text ( ) :
print ( ( Hello World ( )
اكنون نياز ميباشد كه تابع دوم رو تحت عنوان آرگومان براي تابع اولمون گزينش كنيم :
1style ( print _ some _ text )
مسئله نماد @ چيه؟
اين شد يه چيزي! پايتون يه ميانبر معمولي برامون ساخت كرده كه از روش اون مي‌تونيم فارغ از فراخواني نصيب انتها , دكوراتور رو اعمال بكنيم . براي اينكار كافيه قبلي از تعريف تابع دو‌مين @ را همراه با اسم تابع

اولي بنويسيد:

1234567@style
 
def print_some_text():
print("Hello World")
 
 
print_some_text()

حالا يه مشكل پيش مياد. تابع اصلي كه نوشتيم يا همون style يه بخش مهمي نداره! قسمت return … اينطوري يه تايپ ارور مي‌گيريم چرا كه تابع مقدار NoneType رو برمي‌گردونه! براي اين كار مي‌تونيم يه تابع ديگه داشته باشيم كه اون تابع كارهاي استايل دهي رو انجام مي‌ده و در نهايت تابع style همون تابع رو برمي‌گردونه. براي اين كار به تعريف تابع style برمي گرديم و مثل زير ويرايشش مي‌كنيم:

1234567def style(func1):
def final():
print('------------')
func1()
print('------------')
 
return final

حالا كد رو اجرا كنيد متوجه مي‌شيد كه همه چيز بدون مشكل اجرا ميشه!

نظرات این مطلب

تعداد صفحات : 2

درباره ما
موضوعات
آمار سایت
  • کل مطالب : 32
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • بازدید امروز : 31
  • بازدید کننده امروز : 1
  • باردید دیروز : 3
  • بازدید کننده دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 32
  • بازدید ماه : 103
  • بازدید سال : 289
  • بازدید کلی : 11821
  • <
    پیوندهای روزانه
    آرشیو
    اطلاعات کاربری
    نام کاربری :
    رمز عبور :
  • فراموشی رمز عبور؟
  • خبر نامه


    معرفی وبلاگ به یک دوست


    ایمیل شما :

    ایمیل دوست شما :



    کدهای اختصاصی