{"id":7162,"date":"2022-04-08T09:00:03","date_gmt":"2022-04-08T06:00:03","guid":{"rendered":"https:\/\/kutaybilen.com.tr\/?p=7162"},"modified":"2022-04-08T09:00:03","modified_gmt":"2022-04-08T06:00:03","slug":"python-lisanindaki-uretecler-nedir-neden-kullanilmali","status":"publish","type":"post","link":"https:\/\/kutaybilen.com.tr\/?p=7162","title":{"rendered":"Python Lisan\u0131ndaki \u00dcrete\u00e7ler Nedir? Neden Kullan\u0131lmal\u0131?"},"content":{"rendered":"<p>Bir uygulaman\u0131n kodlanma s\u00fcreci, ziyadesiyle sorunlu bir s\u00fcre\u00e7tir. Yaz\u0131l\u0131mc\u0131lar, binlerce sat\u0131r kodlama yaparken bu kodlar\u0131n d\u00fczg\u00fcn olarak \u00e7al\u0131\u015fabilmesi i\u00e7in a\u011f\u0131r bir efor sarf ederler. Aksi takdirde yaz\u0131lan kodlar \u00e7al\u0131\u015fmayacakt\u0131r ve bu da yaz\u0131l\u0131mc\u0131lar i\u00e7in \u00f6nemli bir sorun te\u015fkil ediyor.<\/p>\n<p>Geli\u015ftiriciler, bir uygulamay\u0131 haz\u0131r hale getirebilmek i\u00e7in, uygulaman\u0131n kullan\u0131laca\u011f\u0131 platform kapsam\u0131nda \u00e7e\u015fitli yaz\u0131l\u0131m lisanlar\u0131 kullanabiliyorlar. &#8220;C&#8221;, &#8220;Java&#8221;,\u00a0&#8220;Swift&#8221; ve &#8220;Python&#8221; \u00fczere programlama lisanlar\u0131n\u0131 bu ba\u011flamda \u00f6rnek olarak g\u00f6sterebiliriz. Bu haberimizin konusu ise Python programa lisan\u0131nda kullan\u0131lan, \u0130ngilizce olarak &#8220;Generators&#8221;, T\u00fcrk\u00e7e kar\u015f\u0131l\u0131\u011f\u0131 ise &#8220;\u00dcrete\u00e7&#8221; olarak ge\u00e7en komutlardan bahsedece\u011fiz. <em>&#8220;\u00dcrete\u00e7ler nedir?&#8221;<\/em> ve <em>&#8220;Neden Kullan\u0131lmal\u0131?&#8221;\u00a0<\/em>sorular\u0131n\u0131n kar\u015f\u0131l\u0131klar\u0131n\u0131, bu haberimizde g\u00f6rebilece\u011fiz.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.webtekno.com\/images\/editor\/default\/0002\/12\/207b1a9ee103dfbe8cd449a8d486c5fc6393fa9e.png\"\/><\/p>\n<p>\u00dcrete\u00e7ler, Python yaz\u0131l\u0131m lisan\u0131nda kullan\u0131lan tesirli sistemlerden bir adedidir. Profesyonel geli\u015ftiriciler, bu komutlar\u0131 kullanarak hem daha g\u00fczel bir kod sistemine sahip oluyorlar hem de bu komutlar sayesinde uygulamalar daha rahat bir bi\u00e7imde \u00e7al\u0131\u015fabiliyor.<\/p>\n<p>Yaz\u0131l\u0131m geli\u015ftiriciler, bir kodlama s\u0131ras\u0131nda s\u0131ral\u0131 bilgilerden s\u0131k s\u0131k faydalan\u0131yorlar. Bu sayede bilgiler rahat bir halde kullan\u0131l\u0131yor, kimi vakit da veritabanlar\u0131nda depolan\u0131yor. Fakat bu durumun bir dezavantaj\u0131 bulunuyor. S\u0131ral\u0131 bilgilerde bulunan \u00f6\u011felerin say\u0131s\u0131 \u00f6n g\u00f6r\u00fclemez. Kimi vakit makul say\u0131larda \u00f6\u011feler bulunurken kimi vakitse \u00e7ok say\u0131da \u00f6\u011fe olabilir ve bu da uygulaman\u0131n \u00e7al\u0131\u015fma performans\u0131n\u0131 tesirler. Art\u0131k, s\u0131ral\u0131 bilgilerden ve listelerden olu\u015fan bir kod \u00f6rne\u011fini inceleyelim.<\/p>\n<p><strong>def<\/strong> <span>scale_to_log10<\/span>(till_number): \u00a0<br \/>  log10_number_seq = [] \u00a0<br \/>  <strong>for<\/strong> num<strong> in<\/strong> range(<span>1<\/span>, till_number): \u00a0<br \/>  log10_number_seq.append(math.log10(num)) \u00a0<br \/>  <strong>return<\/strong> log10_number_seq<\/p>\n<p>Bu kod, bak\u0131ld\u0131\u011f\u0131 vakit ziyadesiyle k\u0131sa \u00fczere g\u00f6r\u00fcnebilir. Fakat kodlar\u0131n ortas\u0131nda bulunan &#8220;range&#8221; komutu, yaz\u0131l\u0131mc\u0131ya daima bir d\u00f6ng\u00fc olu\u015fturacakt\u0131r. Bu d\u00f6ng\u00fc, sonsuz bir bellek alan\u0131nda meselesiz \u00e7al\u0131\u015fabilir lakin bu d\u00f6ng\u00fcn\u00fcn boyutu artmaya ba\u015flad\u0131\u011f\u0131 vakit i\u015fler b\u00fcsb\u00fct\u00fcn kar\u0131\u015facakt\u0131r. \u00d6rnek vermek gerekirse bu d\u00f6ng\u00fc 4 GB&#39;lik bir boyuta sahip olabilir. Lakin ayr\u0131lan bellek 2 GB olursa sistem \u00e7\u00f6kecek ve s\u00fcre\u00e7 yar\u0131da kalacakt\u0131r. \u0130\u015fte tam da bu noktada generators komutlar\u0131ndan faydalan\u0131l\u0131yor. Geli\u015ftiriciler, generators komutlar\u0131n\u0131 kullanarak yaln\u0131zca gereksinim oldu\u011fu vakit bu d\u00f6ng\u00fcn\u00fcn i\u00e7erisine giriyorlar ve bu da RAM ve i\u015flemci kullan\u0131m\u0131n\u0131 direkt etkiliyor. Bu prosed\u00fcr sayesinde uygulamalar, daha rahat bir halde \u00e7al\u0131\u015f\u0131yorlar ve rastgele bir \u00e7\u00f6kme durumu ya\u015fanm\u0131yor.<\/p>\n<p>Art\u0131k de geli\u015ftiricilerin, bu komutlar\u0131 nas\u0131l kulland\u0131klar\u0131na bakal\u0131m;<\/p>\n<p><strong>def<\/strong> <span>scale_to_log10<\/span>(till_number): \u00a0<br \/>  <strong>for<\/strong> num <strong>in<\/strong> xrange(till_number): \u00a0<br \/>  <strong>yield<\/strong> math.log10(num)<\/p>\n<p>Bu kod, temelde\u00a0yukar\u0131da bulunan kodlarla t\u0131pk\u0131 fonksiyonu g\u00f6r\u00fcyor. Yaln\u0131zca bu kodun \u00f6\u011feleri s\u00fcrece bi\u00e7imi biraz daha farkl\u0131. \u0130kinci koddaki ufak farklar, kod kesitinin yaln\u0131zca o an i\u015flenen \u00f6\u011feyi belle\u011fe aktar\u0131lmas\u0131n\u0131 sa\u011fl\u0131yor. Bu da hem gereksiz boyutlar\u0131 ortadan kald\u0131r\u0131yor hem de i\u015flemci ve RAM kullan\u0131m\u0131n\u0131n optimizasyonunu sa\u011fl\u0131yor.<\/p>\n<div> <\/div>\n<div>\n<div> <\/div>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bir uygulaman\u0131n kodlanma s\u00fcreci, ziyadesiyle sorunlu bir s\u00fcre\u00e7tir. Yaz\u0131l\u0131mc\u0131lar, binlerce sat\u0131r kodlama yaparken bu kodlar\u0131n d\u00fczg\u00fcn olarak &#8230;<\/p>\n","protected":false},"author":1,"featured_media":7163,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[854],"tags":[1590,974,1275,1237,932],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/kutaybilen.com.tr\/index.php?rest_route=\/wp\/v2\/posts\/7162"}],"collection":[{"href":"https:\/\/kutaybilen.com.tr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kutaybilen.com.tr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kutaybilen.com.tr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kutaybilen.com.tr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7162"}],"version-history":[{"count":1,"href":"https:\/\/kutaybilen.com.tr\/index.php?rest_route=\/wp\/v2\/posts\/7162\/revisions"}],"predecessor-version":[{"id":7164,"href":"https:\/\/kutaybilen.com.tr\/index.php?rest_route=\/wp\/v2\/posts\/7162\/revisions\/7164"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kutaybilen.com.tr\/index.php?rest_route=\/wp\/v2\/media\/7163"}],"wp:attachment":[{"href":"https:\/\/kutaybilen.com.tr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kutaybilen.com.tr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kutaybilen.com.tr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}