{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Decorator Fonksiyonların Oluşturulması ve Kullanılması\n", "\n", "Bu konuda decorator konseptini anlamaya çalışacağız. \n", "\n", "Decorator fonksiyonlar, Pythonda fonksiyonlarımıza dinamik olarak ekstra özellik eklediğimiz fonksiyonlardır ve decorator fonksiyonların kullanımı kod tekrarı yapmamızı engeller. Pythonda decorator fonksiyonlar **Flask** gibi frameworklerde oldukça fazla kullanılır." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bu fonksiyon 0.14309906959533691 saniye sürdü.\n", "Bu fonksiyon 0.1360929012298584 saniye sürdü.\n" ] } ], "source": [ "import time\n", " \n", "def kareleri_hesapla(sayılar):\n", " sonuç = []\n", " baslama = time.time()\n", " \n", " for i in sayılar:\n", " sonuç.append(i ** 2)\n", " print(\"Bu fonksiyon \" + str(time.time() - baslama) + \" saniye sürdü.\")\n", " \n", "def küpleri_hesapla(sayılar):\n", " sonuç = []\n", " baslama = time.time()\n", " for i in sayılar:\n", " sonuç.append(i ** 3)\n", " print(\"Bu fonksiyon \" + str(time.time() - baslama) + \" saniye sürdü.\")\n", "\n", " \n", "\n", "kareleri_hesapla(range(100000))\n", "\n", "küpleri_hesapla(range(100000))\n", " \n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu iki fonksiyonda fonksiyonların çalışma sürelerini ölçmek için time modülünü kullandık. Ancak dikkat ederseniz, hem bu fonksiyonlara ekstradan iş yaptırdık , hem de 2 fonksiyonda da aynı satırları yazdık. Yani, aslında kod tekrarına düştük. Ancak eğer bu fonksiyonlara ekstra özellik ekleyen **decorator** bir fonksiyonumuz olsaydı, burada ne kod tekrarına düşecektik ne de fonksiyonlara ekstradan satır ekleyecektik. İşte **decoratorların** tam olarak önemi budur. İsterseniz **zaman_hesapla** isimli decorator'ımızı ilk önce yazalım. Daha sonra **decoratorları** açıklamaya çalışalım." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "kareleri_hesapla 0.1340925693511963 saniye sürdü.\n", "küpleri_hesapla 0.13509273529052734 saniye sürdü.\n" ] }, { "data": { "text/plain": [ "[0,\n", " 1,\n", " 8,\n", " 27,\n", " 64,\n", " 125,\n", " 216,\n", " 343,\n", " 512,\n", " 729,\n", " 1000,\n", " 1331,\n", " 1728,\n", " 2197,\n", " 2744,\n", " 3375,\n", " 4096,\n", " 4913,\n", " 5832,\n", " 6859,\n", " 8000,\n", " 9261,\n", " 10648,\n", " 12167,\n", " 13824,\n", " 15625,\n", " 17576,\n", " 19683,\n", " 21952,\n", " 24389,\n", " 27000,\n", " 29791,\n", " 32768,\n", " 35937,\n", " 39304,\n", " 42875,\n", " 46656,\n", " 50653,\n", " 54872,\n", " 59319,\n", " 64000,\n", " 68921,\n", " 74088,\n", " 79507,\n", " 85184,\n", " 91125,\n", " 97336,\n", " 103823,\n", " 110592,\n", " 117649,\n", " 125000,\n", " 132651,\n", " 140608,\n", " 148877,\n", " 157464,\n", " 166375,\n", " 175616,\n", " 185193,\n", " 195112,\n", " 205379,\n", " 216000,\n", " 226981,\n", " 238328,\n", " 250047,\n", " 262144,\n", " 274625,\n", " 287496,\n", " 300763,\n", " 314432,\n", " 328509,\n", " 343000,\n", " 357911,\n", " 373248,\n", " 389017,\n", " 405224,\n", " 421875,\n", " 438976,\n", " 456533,\n", " 474552,\n", " 493039,\n", " 512000,\n", " 531441,\n", " 551368,\n", " 571787,\n", " 592704,\n", " 614125,\n", " 636056,\n", " 658503,\n", " 681472,\n", " 704969,\n", " 729000,\n", " 753571,\n", " 778688,\n", " 804357,\n", " 830584,\n", " 857375,\n", " 884736,\n", " 912673,\n", " 941192,\n", " 970299,\n", " 1000000,\n", " 1030301,\n", " 1061208,\n", " 1092727,\n", " 1124864,\n", " 1157625,\n", " 1191016,\n", " 1225043,\n", " 1259712,\n", " 1295029,\n", " 1331000,\n", " 1367631,\n", " 1404928,\n", " 1442897,\n", " 1481544,\n", " 1520875,\n", " 1560896,\n", " 1601613,\n", " 1643032,\n", " 1685159,\n", " 1728000,\n", " 1771561,\n", " 1815848,\n", " 1860867,\n", " 1906624,\n", " 1953125,\n", " 2000376,\n", " 2048383,\n", " 2097152,\n", " 2146689,\n", " 2197000,\n", " 2248091,\n", " 2299968,\n", " 2352637,\n", " 2406104,\n", " 2460375,\n", " 2515456,\n", " 2571353,\n", " 2628072,\n", " 2685619,\n", " 2744000,\n", " 2803221,\n", " 2863288,\n", " 2924207,\n", " 2985984,\n", " 3048625,\n", " 3112136,\n", " 3176523,\n", " 3241792,\n", " 3307949,\n", " 3375000,\n", " 3442951,\n", " 3511808,\n", " 3581577,\n", " 3652264,\n", " 3723875,\n", " 3796416,\n", " 3869893,\n", " 3944312,\n", " 4019679,\n", " 4096000,\n", " 4173281,\n", " 4251528,\n", " 4330747,\n", " 4410944,\n", " 4492125,\n", " 4574296,\n", " 4657463,\n", " 4741632,\n", " 4826809,\n", " 4913000,\n", " 5000211,\n", " 5088448,\n", " 5177717,\n", " 5268024,\n", " 5359375,\n", " 5451776,\n", " 5545233,\n", " 5639752,\n", " 5735339,\n", " 5832000,\n", " 5929741,\n", " 6028568,\n", " 6128487,\n", " 6229504,\n", " 6331625,\n", " 6434856,\n", " 6539203,\n", " 6644672,\n", " 6751269,\n", " 6859000,\n", " 6967871,\n", " 7077888,\n", " 7189057,\n", " 7301384,\n", " 7414875,\n", " 7529536,\n", " 7645373,\n", " 7762392,\n", " 7880599,\n", " 8000000,\n", " 8120601,\n", " 8242408,\n", " 8365427,\n", " 8489664,\n", " 8615125,\n", " 8741816,\n", " 8869743,\n", " 8998912,\n", " 9129329,\n", " 9261000,\n", " 9393931,\n", " 9528128,\n", " 9663597,\n", " 9800344,\n", " 9938375,\n", " 10077696,\n", " 10218313,\n", " 10360232,\n", " 10503459,\n", " 10648000,\n", " 10793861,\n", " 10941048,\n", " 11089567,\n", " 11239424,\n", " 11390625,\n", " 11543176,\n", " 11697083,\n", " 11852352,\n", " 12008989,\n", " 12167000,\n", " 12326391,\n", " 12487168,\n", " 12649337,\n", " 12812904,\n", " 12977875,\n", " 13144256,\n", " 13312053,\n", " 13481272,\n", " 13651919,\n", " 13824000,\n", " 13997521,\n", " 14172488,\n", " 14348907,\n", " 14526784,\n", " 14706125,\n", " 14886936,\n", " 15069223,\n", " 15252992,\n", " 15438249,\n", " 15625000,\n", " 15813251,\n", " 16003008,\n", " 16194277,\n", " 16387064,\n", " 16581375,\n", " 16777216,\n", " 16974593,\n", " 17173512,\n", " 17373979,\n", " 17576000,\n", " 17779581,\n", " 17984728,\n", " 18191447,\n", " 18399744,\n", " 18609625,\n", " 18821096,\n", " 19034163,\n", " 19248832,\n", " 19465109,\n", " 19683000,\n", " 19902511,\n", " 20123648,\n", " 20346417,\n", " 20570824,\n", " 20796875,\n", " 21024576,\n", " 21253933,\n", " 21484952,\n", " 21717639,\n", " 21952000,\n", " 22188041,\n", " 22425768,\n", " 22665187,\n", " 22906304,\n", " 23149125,\n", " 23393656,\n", " 23639903,\n", " 23887872,\n", " 24137569,\n", " 24389000,\n", " 24642171,\n", " 24897088,\n", " 25153757,\n", " 25412184,\n", " 25672375,\n", " 25934336,\n", " 26198073,\n", " 26463592,\n", " 26730899,\n", " 27000000,\n", " 27270901,\n", " 27543608,\n", " 27818127,\n", " 28094464,\n", " 28372625,\n", " 28652616,\n", " 28934443,\n", " 29218112,\n", " 29503629,\n", " 29791000,\n", " 30080231,\n", " 30371328,\n", " 30664297,\n", " 30959144,\n", " 31255875,\n", " 31554496,\n", " 31855013,\n", " 32157432,\n", " 32461759,\n", " 32768000,\n", " 33076161,\n", " 33386248,\n", " 33698267,\n", " 34012224,\n", " 34328125,\n", " 34645976,\n", " 34965783,\n", " 35287552,\n", " 35611289,\n", " 35937000,\n", " 36264691,\n", " 36594368,\n", " 36926037,\n", " 37259704,\n", " 37595375,\n", " 37933056,\n", " 38272753,\n", " 38614472,\n", " 38958219,\n", " 39304000,\n", " 39651821,\n", " 40001688,\n", " 40353607,\n", " 40707584,\n", " 41063625,\n", " 41421736,\n", " 41781923,\n", " 42144192,\n", " 42508549,\n", " 42875000,\n", " 43243551,\n", " 43614208,\n", " 43986977,\n", " 44361864,\n", " 44738875,\n", " 45118016,\n", " 45499293,\n", " 45882712,\n", " 46268279,\n", " 46656000,\n", " 47045881,\n", " 47437928,\n", " 47832147,\n", " 48228544,\n", " 48627125,\n", " 49027896,\n", " 49430863,\n", " 49836032,\n", " 50243409,\n", " 50653000,\n", " 51064811,\n", " 51478848,\n", " 51895117,\n", " 52313624,\n", " 52734375,\n", " 53157376,\n", " 53582633,\n", " 54010152,\n", " 54439939,\n", " 54872000,\n", " 55306341,\n", " 55742968,\n", " 56181887,\n", " 56623104,\n", " 57066625,\n", " 57512456,\n", " 57960603,\n", " 58411072,\n", " 58863869,\n", " 59319000,\n", " 59776471,\n", " 60236288,\n", " 60698457,\n", " 61162984,\n", " 61629875,\n", " 62099136,\n", " 62570773,\n", " 63044792,\n", " 63521199,\n", " 64000000,\n", " 64481201,\n", " 64964808,\n", " 65450827,\n", " 65939264,\n", " 66430125,\n", " 66923416,\n", " 67419143,\n", " 67917312,\n", " 68417929,\n", " 68921000,\n", " 69426531,\n", " 69934528,\n", " 70444997,\n", " 70957944,\n", " 71473375,\n", " 71991296,\n", " 72511713,\n", " 73034632,\n", " 73560059,\n", " 74088000,\n", " 74618461,\n", " 75151448,\n", " 75686967,\n", " 76225024,\n", " 76765625,\n", " 77308776,\n", " 77854483,\n", " 78402752,\n", " 78953589,\n", " 79507000,\n", " 80062991,\n", " 80621568,\n", " 81182737,\n", " 81746504,\n", " 82312875,\n", " 82881856,\n", " 83453453,\n", " 84027672,\n", " 84604519,\n", " 85184000,\n", " 85766121,\n", " 86350888,\n", " 86938307,\n", " 87528384,\n", " 88121125,\n", " 88716536,\n", " 89314623,\n", " 89915392,\n", " 90518849,\n", " 91125000,\n", " 91733851,\n", " 92345408,\n", " 92959677,\n", " 93576664,\n", " 94196375,\n", " 94818816,\n", " 95443993,\n", " 96071912,\n", " 96702579,\n", " 97336000,\n", " 97972181,\n", " 98611128,\n", " 99252847,\n", " 99897344,\n", " 100544625,\n", " 101194696,\n", " 101847563,\n", " 102503232,\n", " 103161709,\n", " 103823000,\n", " 104487111,\n", " 105154048,\n", " 105823817,\n", " 106496424,\n", " 107171875,\n", " 107850176,\n", " 108531333,\n", " 109215352,\n", " 109902239,\n", " 110592000,\n", " 111284641,\n", " 111980168,\n", " 112678587,\n", " 113379904,\n", " 114084125,\n", " 114791256,\n", " 115501303,\n", " 116214272,\n", " 116930169,\n", " 117649000,\n", " 118370771,\n", " 119095488,\n", " 119823157,\n", " 120553784,\n", " 121287375,\n", " 122023936,\n", " 122763473,\n", " 123505992,\n", " 124251499,\n", " 125000000,\n", " 125751501,\n", " 126506008,\n", " 127263527,\n", " 128024064,\n", " 128787625,\n", " 129554216,\n", " 130323843,\n", " 131096512,\n", " 131872229,\n", " 132651000,\n", " 133432831,\n", " 134217728,\n", " 135005697,\n", " 135796744,\n", " 136590875,\n", " 137388096,\n", " 138188413,\n", " 138991832,\n", " 139798359,\n", " 140608000,\n", " 141420761,\n", " 142236648,\n", " 143055667,\n", " 143877824,\n", " 144703125,\n", " 145531576,\n", " 146363183,\n", " 147197952,\n", " 148035889,\n", " 148877000,\n", " 149721291,\n", " 150568768,\n", " 151419437,\n", " 152273304,\n", " 153130375,\n", " 153990656,\n", " 154854153,\n", " 155720872,\n", " 156590819,\n", " 157464000,\n", " 158340421,\n", " 159220088,\n", " 160103007,\n", " 160989184,\n", " 161878625,\n", " 162771336,\n", " 163667323,\n", " 164566592,\n", " 165469149,\n", " 166375000,\n", " 167284151,\n", " 168196608,\n", " 169112377,\n", " 170031464,\n", " 170953875,\n", " 171879616,\n", " 172808693,\n", " 173741112,\n", " 174676879,\n", " 175616000,\n", " 176558481,\n", " 177504328,\n", " 178453547,\n", " 179406144,\n", " 180362125,\n", " 181321496,\n", " 182284263,\n", " 183250432,\n", " 184220009,\n", " 185193000,\n", " 186169411,\n", " 187149248,\n", " 188132517,\n", " 189119224,\n", " 190109375,\n", " 191102976,\n", " 192100033,\n", " 193100552,\n", " 194104539,\n", " 195112000,\n", " 196122941,\n", " 197137368,\n", " 198155287,\n", " 199176704,\n", " 200201625,\n", " 201230056,\n", " 202262003,\n", " 203297472,\n", " 204336469,\n", " 205379000,\n", " 206425071,\n", " 207474688,\n", " 208527857,\n", " 209584584,\n", " 210644875,\n", " 211708736,\n", " 212776173,\n", " 213847192,\n", " 214921799,\n", " 216000000,\n", " 217081801,\n", " 218167208,\n", " 219256227,\n", " 220348864,\n", " 221445125,\n", " 222545016,\n", " 223648543,\n", " 224755712,\n", " 225866529,\n", " 226981000,\n", " 228099131,\n", " 229220928,\n", " 230346397,\n", " 231475544,\n", " 232608375,\n", " 233744896,\n", " 234885113,\n", " 236029032,\n", " 237176659,\n", " 238328000,\n", " 239483061,\n", " 240641848,\n", " 241804367,\n", " 242970624,\n", " 244140625,\n", " 245314376,\n", " 246491883,\n", " 247673152,\n", " 248858189,\n", " 250047000,\n", " 251239591,\n", " 252435968,\n", " 253636137,\n", " 254840104,\n", " 256047875,\n", " 257259456,\n", " 258474853,\n", " 259694072,\n", " 260917119,\n", " 262144000,\n", " 263374721,\n", " 264609288,\n", " 265847707,\n", " 267089984,\n", " 268336125,\n", " 269586136,\n", " 270840023,\n", " 272097792,\n", " 273359449,\n", " 274625000,\n", " 275894451,\n", " 277167808,\n", " 278445077,\n", " 279726264,\n", " 281011375,\n", " 282300416,\n", " 283593393,\n", " 284890312,\n", " 286191179,\n", " 287496000,\n", " 288804781,\n", " 290117528,\n", " 291434247,\n", " 292754944,\n", " 294079625,\n", " 295408296,\n", " 296740963,\n", " 298077632,\n", " 299418309,\n", " 300763000,\n", " 302111711,\n", " 303464448,\n", " 304821217,\n", " 306182024,\n", " 307546875,\n", " 308915776,\n", " 310288733,\n", " 311665752,\n", " 313046839,\n", " 314432000,\n", " 315821241,\n", " 317214568,\n", " 318611987,\n", " 320013504,\n", " 321419125,\n", " 322828856,\n", " 324242703,\n", " 325660672,\n", " 327082769,\n", " 328509000,\n", " 329939371,\n", " 331373888,\n", " 332812557,\n", " 334255384,\n", " 335702375,\n", " 337153536,\n", " 338608873,\n", " 340068392,\n", " 341532099,\n", " 343000000,\n", " 344472101,\n", " 345948408,\n", " 347428927,\n", " 348913664,\n", " 350402625,\n", " 351895816,\n", " 353393243,\n", " 354894912,\n", " 356400829,\n", " 357911000,\n", " 359425431,\n", " 360944128,\n", " 362467097,\n", " 363994344,\n", " 365525875,\n", " 367061696,\n", " 368601813,\n", " 370146232,\n", " 371694959,\n", " 373248000,\n", " 374805361,\n", " 376367048,\n", " 377933067,\n", " 379503424,\n", " 381078125,\n", " 382657176,\n", " 384240583,\n", " 385828352,\n", " 387420489,\n", " 389017000,\n", " 390617891,\n", " 392223168,\n", " 393832837,\n", " 395446904,\n", " 397065375,\n", " 398688256,\n", " 400315553,\n", " 401947272,\n", " 403583419,\n", " 405224000,\n", " 406869021,\n", " 408518488,\n", " 410172407,\n", " 411830784,\n", " 413493625,\n", " 415160936,\n", " 416832723,\n", " 418508992,\n", " 420189749,\n", " 421875000,\n", " 423564751,\n", " 425259008,\n", " 426957777,\n", " 428661064,\n", " 430368875,\n", " 432081216,\n", " 433798093,\n", " 435519512,\n", " 437245479,\n", " 438976000,\n", " 440711081,\n", " 442450728,\n", " 444194947,\n", " 445943744,\n", " 447697125,\n", " 449455096,\n", " 451217663,\n", " 452984832,\n", " 454756609,\n", " 456533000,\n", " 458314011,\n", " 460099648,\n", " 461889917,\n", " 463684824,\n", " 465484375,\n", " 467288576,\n", " 469097433,\n", " 470910952,\n", " 472729139,\n", " 474552000,\n", " 476379541,\n", " 478211768,\n", " 480048687,\n", " 481890304,\n", " 483736625,\n", " 485587656,\n", " 487443403,\n", " 489303872,\n", " 491169069,\n", " 493039000,\n", " 494913671,\n", " 496793088,\n", " 498677257,\n", " 500566184,\n", " 502459875,\n", " 504358336,\n", " 506261573,\n", " 508169592,\n", " 510082399,\n", " 512000000,\n", " 513922401,\n", " 515849608,\n", " 517781627,\n", " 519718464,\n", " 521660125,\n", " 523606616,\n", " 525557943,\n", " 527514112,\n", " 529475129,\n", " 531441000,\n", " 533411731,\n", " 535387328,\n", " 537367797,\n", " 539353144,\n", " 541343375,\n", " 543338496,\n", " 545338513,\n", " 547343432,\n", " 549353259,\n", " 551368000,\n", " 553387661,\n", " 555412248,\n", " 557441767,\n", " 559476224,\n", " 561515625,\n", " 563559976,\n", " 565609283,\n", " 567663552,\n", " 569722789,\n", " 571787000,\n", " 573856191,\n", " 575930368,\n", " 578009537,\n", " 580093704,\n", " 582182875,\n", " 584277056,\n", " 586376253,\n", " 588480472,\n", " 590589719,\n", " 592704000,\n", " 594823321,\n", " 596947688,\n", " 599077107,\n", " 601211584,\n", " 603351125,\n", " 605495736,\n", " 607645423,\n", " 609800192,\n", " 611960049,\n", " 614125000,\n", " 616295051,\n", " 618470208,\n", " 620650477,\n", " 622835864,\n", " 625026375,\n", " 627222016,\n", " 629422793,\n", " 631628712,\n", " 633839779,\n", " 636056000,\n", " 638277381,\n", " 640503928,\n", " 642735647,\n", " 644972544,\n", " 647214625,\n", " 649461896,\n", " 651714363,\n", " 653972032,\n", " 656234909,\n", " 658503000,\n", " 660776311,\n", " 663054848,\n", " 665338617,\n", " 667627624,\n", " 669921875,\n", " 672221376,\n", " 674526133,\n", " 676836152,\n", " 679151439,\n", " 681472000,\n", " 683797841,\n", " 686128968,\n", " 688465387,\n", " 690807104,\n", " 693154125,\n", " 695506456,\n", " 697864103,\n", " 700227072,\n", " 702595369,\n", " 704969000,\n", " 707347971,\n", " 709732288,\n", " 712121957,\n", " 714516984,\n", " 716917375,\n", " 719323136,\n", " 721734273,\n", " 724150792,\n", " 726572699,\n", " 729000000,\n", " 731432701,\n", " 733870808,\n", " 736314327,\n", " 738763264,\n", " 741217625,\n", " 743677416,\n", " 746142643,\n", " 748613312,\n", " 751089429,\n", " 753571000,\n", " 756058031,\n", " 758550528,\n", " 761048497,\n", " 763551944,\n", " 766060875,\n", " 768575296,\n", " 771095213,\n", " 773620632,\n", " 776151559,\n", " 778688000,\n", " 781229961,\n", " 783777448,\n", " 786330467,\n", " 788889024,\n", " 791453125,\n", " 794022776,\n", " 796597983,\n", " 799178752,\n", " 801765089,\n", " 804357000,\n", " 806954491,\n", " 809557568,\n", " 812166237,\n", " 814780504,\n", " 817400375,\n", " 820025856,\n", " 822656953,\n", " 825293672,\n", " 827936019,\n", " 830584000,\n", " 833237621,\n", " 835896888,\n", " 838561807,\n", " 841232384,\n", " 843908625,\n", " 846590536,\n", " 849278123,\n", " 851971392,\n", " 854670349,\n", " 857375000,\n", " 860085351,\n", " 862801408,\n", " 865523177,\n", " 868250664,\n", " 870983875,\n", " 873722816,\n", " 876467493,\n", " 879217912,\n", " 881974079,\n", " 884736000,\n", " 887503681,\n", " 890277128,\n", " 893056347,\n", " 895841344,\n", " 898632125,\n", " 901428696,\n", " 904231063,\n", " 907039232,\n", " 909853209,\n", " 912673000,\n", " 915498611,\n", " 918330048,\n", " 921167317,\n", " 924010424,\n", " 926859375,\n", " 929714176,\n", " 932574833,\n", " 935441352,\n", " 938313739,\n", " 941192000,\n", " 944076141,\n", " 946966168,\n", " 949862087,\n", " 952763904,\n", " 955671625,\n", " 958585256,\n", " 961504803,\n", " 964430272,\n", " 967361669,\n", " 970299000,\n", " 973242271,\n", " 976191488,\n", " 979146657,\n", " 982107784,\n", " 985074875,\n", " 988047936,\n", " 991026973,\n", " 994011992,\n", " 997002999,\n", " ...]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import time\n", "def zaman_hesapla(fonksiyon):\n", " def wrapper(sayılar):\n", " \n", " \n", " baslama = time.time()\n", " sonuç = fonksiyon(sayılar)\n", " bitis = time.time()\n", " print(fonksiyon.__name__ + \" \" + str(bitis-baslama) + \" saniye sürdü.\")\n", " return sonuç\n", " return wrapper\n", " \n", "@zaman_hesapla\n", "def kareleri_hesapla(sayılar):\n", " sonuç = []\n", " for i in sayılar:\n", " sonuç.append(i ** 2)\n", " return sonuç\n", "@zaman_hesapla\n", "def küpleri_hesapla(sayılar):\n", " sonuç = []\n", " for i in sayılar:\n", " sonuç.append(i ** 3)\n", " return sonuç\n", " \n", "\n", "kareleri_hesapla(range(100000))\n", "\n", "küpleri_hesapla(range(100000))\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Burada **zaman_hesapla()** isimli decorator bir fonksiyon yazdık. Örneğin ***kareleri_hesapla(range(100000))*** fonksiyonu çağrılırken aslında senaryomuz şu şekilde çalışıyor;\n", "\n", " 1. kareleri_hesapla fonksiyonu zaman_hesapla fonksiyonuna argüman olarak gidiyor.\n", " 2. wrapper fonksiyonu kareleri_hesapla fonksiyonuna argüman olarak gönderilen \n", " \"sayılar\" argümanını argüman olarak alıyor.sd\n", " 3. wrapper fonksiyonu hem zaman hesaplama işlemini gerçekleştiriyor,hem de gönderilen\n", " fonksiyonu çalıştırıyor. Böylelikle bu fonksiyona ekstra özellik ekliyor.\n", " 4.zaman_hesaplama fonksiyonu en son işlem olarak wrapper fonksiyonumuzu dönüyor.\n", " \n", " \n", "İşte decorator fonksiyonlarımızın aslında işlevi tamamıyla bu şekilde. Burada gördüğümüz gibi decoratorlar sayesinde, hem kod tekrarından kurtulduk, hem de zaman hesaplama işlemimizi decorator fonksiyonumuzda gerçekleştirdik." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }