-
Notifications
You must be signed in to change notification settings - Fork 0
/
python-asterisk-nerede-ve-nasil.html
194 lines (164 loc) · 18.5 KB
/
python-asterisk-nerede-ve-nasil.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="utf-8">
<title> Python'da "*" Karakteri Nerede ve Nasıl Kullanılır
</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="author" content="0x656e" />
<meta name="description" content="Merhabalar, Vardiyalı çalıştığımdan dolayı bu ay nasıl olduysa 5 gün ard arda iznim olmuş. Bu tatili çok verimli geçirmek istediğimden dolayı çalışacağım konulara çalışmaya, yazacağım kodları yazmaya, bloguma özen vermeye çalıştım. Tabi burada oyun oynamaktan da vazgeçmedim :) İşte bu sebeple bu isteklerimin 3.cüsü olan bloguma özen vermeye çalışmanın bir …" />
<meta name="keywords" content="python3, python3 yıldız, python3 yıldız işareti, python3 asterisk, python3 args ve kwargs, python args, python kwargs">
<meta property="article:tag" content="python3" />
<meta property="article:tag" content="python3 yıldız" />
<meta property="article:tag" content="python3 yıldız işareti" />
<meta property="article:tag" content="python3 asterisk" />
<meta property="article:tag" content="python3 args ve kwargs" />
<meta property="article:tag" content="python args" />
<meta property="article:tag" content="python kwargs" />
<link rel="canonical" href="https://enesergun.net/python-asterisk-nerede-ve-nasil.html"/>
<meta name="description" content=""/>
<!-- og definitions -->
<meta property="og:type" content="article" />
<meta property="og:url" content="https://enesergun.net/python-asterisk-nerede-ve-nasil.html" />
<meta property="og:title" content="Python'da "*" Karakteri Nerede ve Nasıl Kullanılır" />
<meta property="og:description" content="Merhabalar, Vardiyalı çalıştığımdan dolayı bu ay nasıl olduysa 5 gün ard arda iznim olmuş. Bu tatili çok verimli geçirmek istediğimden dolayı çalışacağım konulara çalışmaya, yazacağım kodları..." />
<meta property="og:image" content="https://w0.peakpx.com/wallpaper/212/918/HD-wallpaper-virtual-world-sunset-80s-landscape-retro-theme-tron.jpg" />
<link rel="stylesheet" href="theme/style.css">
<link href="https://enesergun.net/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Enes Ergün Atom Feed" />
</head>
<body>
<div class="container">
<header class="blog-header">
<h1><a href="https://enesergun.net" class="glitch glow" data-text="Enes Ergün">Enes Ergün</a></h1>
<p> Chaotic Neutral / ISTP-T - 30 lvl rogue - Cyber Security </p>
<nav>
<a href="https://enesergun.net/">INDEX</a>
<a href="https://enesergun.net/archives">ARCHIVES</a>
<a href="https://enesergun.net/categories">CATEGORIES</a>
</nav>
</header>
<div class="post">
<header>
<h1>Python'da "*" Karakteri Nerede ve Nasıl Kullanılır</h1>
<p class="date">Written on <time datetime="2019-01-24T18:50:00+03:00">Jan 24, 2019</time></p>
</header>
<article>
<p>Merhabalar,</p>
<p>Vardiyalı çalıştığımdan dolayı bu ay nasıl olduysa 5 gün ard arda iznim olmuş. Bu tatili çok verimli geçirmek istediğimden dolayı çalışacağım konulara çalışmaya, yazacağım kodları yazmaya, bloguma özen vermeye çalıştım. Tabi burada oyun oynamaktan da vazgeçmedim :)</p>
<p>İşte bu sebeple bu isteklerimin 3.cüsü olan bloguma özen vermeye çalışmanın bir sonucu olarak bu yazıyı okuyucularıma veya araştırmacı arkadaşlara sunuyorum. Eksik gördüğünüz veya burası yanlış dediğiniz bir kısım var ise twitter veya mail üzerinden belirtmekten çekinmeyin lütfen.</p>
<p><a href="mailto:[email protected]">Mail</a></p>
<p><a href="twitter.com/0x656e">Twitter</a></p>
<p>Bu yazıyı okumadan önce eğer Python hakkında bir fikre sahip değilseniz, henüz dün okumuş olduğum ve çok beğendiğim Fatih ERİKLİ'nin yazısını sizlere önereyim.</p>
<p><a href="https://medium.com/@fthrkl/y%C4%B1lan-hikayesi-i%CC%87lk-b%C3%B6l%C3%BCm-869f212bb1a2">Yılan Hikayesi İlk Bölüm</a></p>
<h2>Nedir Bu "*" Karakteri</h2>
<p>Yıldız işareti ingilizce de asterisk olarak geçmektedir. Eğer kodlarınızı yazarken "*" işareti ile ilgili bir problem yaşarsanız asterisk diye aratarak, diğer arama sonuçlarından daha hızlı bir arama sonucuna ulaşabilirsiniz.</p>
<p><strong>Yıldız kelimesi İngilizce de star olarak, yıldız işareti kelimesi ise asterisk olarak geçer. </strong></p>
<h2>İlk Yıldız İşaretimizi Ne Zaman Gördük</h2>
<p>Python programlama dilinde yıldız işareti ilk olarak karşımıza <strong>Matematiksel Operatorler</strong> konusunda çıkmaktadır.</p>
<p>Bu işaret ile vermiş olduğumuz değişkenleri çarpabilir veya bu işareti iki kere kullanarak vermiş olduğumuz integer değerlerinin kuvvetini,üssünü(Power) alabiliriz.</p>
<p>Örnekle açıklamak gerekirse:</p>
<div class="highlight"><pre><span></span><code><span class="c1"># Çarpma</span>
<span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">]</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">a</span><span class="o">*</span><span class="mi">2</span> <span class="c1"># A değişkenine tanımlanmış olan liste veri tipini 2 ile çarpıyoruz.</span>
<span class="o">></span> <span class="p">[</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">4</span><span class="p">]</span>
<span class="c1"># Kuvvet Alma</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">a</span><span class="o">**</span><span class="mi">2</span> <span class="c1"># Eğer bu şekilde yaparsak listenin kuvvetini alamayacağından dolayı zaten hata verecektir.</span>
<span class="n">c</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span><span class="o">**</span><span class="mi">4</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">]</span> <span class="c1"># A değişkenini for döngüsüne sokarak tüm sonuçları c değişkenine atadım.</span>
<span class="o">></span> <span class="p">[</span><span class="mi">625</span><span class="p">,</span> <span class="mi">256</span><span class="p">]</span>
</code></pre></div>
<p>Yukarıdaki örnekte farketmiş olacağınız üzere "çarpma" örneğininde bize içinde ki karakterleri değil değişkene tanımlamış olduğumuz değeri 2 ile çarpacaktır. </p>
<div class="highlight"><pre><span></span><code><span class="n">a</span> <span class="o">=</span> <span class="s2">"enes"</span>
<span class="nb">print</span><span class="p">(</span><span class="n">a</span><span class="o">*</span><span class="mi">2</span><span class="p">)</span>
<span class="o">></span> <span class="n">enesenes</span>
<span class="n">a</span> <span class="o">=</span> <span class="mi">3</span>
<span class="nb">print</span><span class="p">(</span><span class="n">a</span><span class="o">*</span><span class="mi">2</span><span class="p">)</span>
<span class="o">></span><span class="mi">6</span>
</code></pre></div>
<p>Yine yukarıdaki örneklere ait benzer bir işlem yaptık fakat burada liste değil string veri tipinde bir değer tanımladık. İlk çarpma işlemimizde gördüğünüz gibi stringi iki kere çarparak yan yana yazdı. İkinci işlemimizde ise direkt olarak integer değer verdiğimizden dolayı matematiksel bir işleme sokup bize çıktısını üretti.</p>
<h2>Gelelim Yıldız İşaretinin Gelişmiş Kullanımlarına</h2>
<p>Asterisk yani yıldız işaretini bir liste veya sözlük veri tiplerini açarken(unpacking) kullanabiliriz. Burada sözlük ve liste olarak bahsettim fakat iterable olan tüm veri tiplerinde de bu işareti kullanabiliriz. Iterable'ın türkçesi olarak direkt bir çeviri yok bildiğim kadarıyla ama bu konuda en güzel açıklamayı ekşisözlükte "aaron" kullanıcısı entry olarak girmiş. Direkt olarak yazılan entry'i aşağıda belirtiyorum.</p>
<p>"bir döngü vasıtası ile üzerinde dönülebilen elemanların oluşturduğu bir nesnedir."</p>
<p><strong>R.I.P Aaron Swartz</strong></p>
<p><a href="https://eksisozluk.com/iterable--5154245">İterable</a></p>
<p><strong>Örnek 1 </strong></p>
<div class="highlight"><pre><span></span><code><span class="n">isimler</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'Enes'</span><span class="p">,</span><span class="s1">'Yasin'</span><span class="p">,</span><span class="s1">'Emir'</span><span class="p">,</span><span class="s1">'Basri'</span><span class="p">,</span><span class="s1">'Mustafa'</span><span class="p">]</span>
<span class="c1"># Burada isimleri yazdırabilmek için string'e çevirip yazdırabiliriz pek tabii fakat konumuz "*" ve bu yolun pekte efektif olduğu söylenemez.</span>
<span class="nb">print</span><span class="p">(</span><span class="o">*</span><span class="n">isimler</span><span class="p">)</span> <span class="c1">#Unpacking </span>
<span class="nb">print</span><span class="p">(</span><span class="s1">' '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">isimler</span><span class="p">))</span> <span class="c1"># List to str</span>
</code></pre></div>
<p>Yukarıdaki örnekte eğer bir listeyi yazdıracaksak bize cidden büyük bir kolaylık sağlıyor. Şimdi diğer örneklerle ve açıklamalarıyla birlikte devam edelim.</p>
<p><strong>Örnek 2</strong></p>
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">yazdir</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span><span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">ogrenci</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'İsim'</span><span class="p">:</span><span class="s1">'Enes'</span><span class="p">,</span> <span class="s1">'Soyisim'</span><span class="p">:</span><span class="s1">'Ergün'</span><span class="p">,</span> <span class="s1">'Okul No'</span><span class="p">:</span> <span class="s1">'1234'</span><span class="p">}</span>
<span class="n">yazdir</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="s2">"Enes"</span><span class="p">,</span><span class="n">b</span><span class="o">=</span><span class="s2">"0x656e"</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">ogrenci</span><span class="p">)</span>
<span class="o">></span> <span class="p">{</span><span class="s1">'a'</span><span class="p">:</span> <span class="s1">'Enes'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">:</span> <span class="s1">'0x656e'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'İsim'</span><span class="p">:</span> <span class="s1">'Enes'</span><span class="p">,</span> <span class="s1">'Soyisim'</span><span class="p">:</span> <span class="s1">'Ergün'</span><span class="p">,</span> <span class="s1">'Okul No'</span><span class="p">:</span> <span class="s1">'1234'</span><span class="p">}}</span>
</code></pre></div>
<p><strong>Örnek 2.1</strong></p>
<div class="highlight"><pre><span></span><code><span class="k">def</span> <span class="nf">yazdir</span><span class="p">(</span><span class="o">*</span><span class="n">utanırım</span><span class="p">,</span><span class="o">**</span><span class="n">ben</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="n">utanırım</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">ben</span><span class="p">)</span>
<span class="n">ogrenci</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'İsim'</span><span class="p">:</span><span class="s1">'Enes'</span><span class="p">,</span> <span class="s1">'Soyisim'</span><span class="p">:</span><span class="s1">'Ergün'</span><span class="p">,</span> <span class="s1">'Okul No'</span><span class="p">:</span> <span class="s1">'1234'</span><span class="p">}</span>
<span class="n">yazdir</span><span class="p">(</span><span class="n">a</span><span class="o">=</span><span class="s2">"Enes"</span><span class="p">,</span><span class="n">b</span><span class="o">=</span><span class="s2">"0x656e"</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">ogrenci</span><span class="p">)</span>
</code></pre></div>
<p>Burada ki kullanımda bir fonksiyonu çağırırken alabileceği tüm argümanları yakalamak için yıldız karakterini kullanıyoruz ama örnekte 2 farklı kullanım görmekteyiz. Bunları açıklamak istersek eğer:</p>
<ol>
<li>Args değerinde kullandığımız tek yıldız argüman olarak vereceğimiz tüm değerleri yakalayacaktır. Burada *args kullanımı zorunlu değildir. İsterseniz <code>*selamnaber</code> bile kullanabilirsiniz. </li>
<li>Kwargs değerinde kullandığımız 2 yıldız ise buradaki unpacking işleminin keyworded arguments ile olacağını belirtiyor. Bu ne demek? Fonksiyona göndermiş olduğumuz parametrelerin anahtar kelimelere sahip parametreler olacağını söylüyor.</li>
</ol>
<p><strong>Örnek 3</strong></p>
<div class="highlight"><pre><span></span><code><span class="n">ogrenci</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'İsim'</span><span class="p">:</span><span class="s1">'Enes'</span><span class="p">,</span> <span class="s1">'Soyisim'</span><span class="p">:</span><span class="s1">'Ergün'</span><span class="p">,</span> <span class="s1">'Okul No'</span><span class="p">:</span> <span class="s1">'1234'</span><span class="p">}</span>
<span class="n">ogrenci_karnenotu</span> <span class="o">=</span> <span class="s2">"Okulumuz öğrencilerinden {Okul No} okul numarasına sahip </span><span class="si">{İsim}</span><span class="s2"> </span><span class="si">{Soyisim}</span><span class="s2"> adlı öğrenci mezun olmaya hak kazanmıştır."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="n">ogrenci</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">ogrenci_karnenotu</span><span class="p">)</span>
<span class="o">></span> <span class="n">Okulumuz</span> <span class="n">öğrencilerinden</span> <span class="mi">1234</span> <span class="n">okul</span> <span class="n">numarasına</span> <span class="n">sahip</span> <span class="n">Enes</span> <span class="n">Ergünadlı</span> <span class="n">öğrenci</span> <span class="n">mezun</span> <span class="n">olmaya</span> <span class="n">hak</span> <span class="n">kazanmıştır</span><span class="o">.</span>
</code></pre></div>
<p>Buradaki kullanımda yine bir unpacking ile karşı karşıyayız. Bu örnekte Sözlük veri tipindeki bir değişkeni string formatting işlemi sırasında açıyoruz. Burada tek tek <code>ogrenci['İsim']</code> yazmaktansa bu şekilde bir kullanım bize büyük kolaylıklar sağlayabilir.</p>
<h2>Kapanış</h2>
<p>Sanırım diğer yazılara görece daha kısa bir yazı oldu ama blogun temasını değiştirmek için bir yazı yazma fikrine ihtiyacım vardı. Bu arada yeni tema nasıl? Temayı MinimalXY ile Onur'un Medius temasını birleştirerek yaptım.</p>
<p>Ayrıca yine bir klasiğim olan yazı sonu şarkısı paylaşmadan edemeyeceğim. Bu sefer 2 adet şarkı paylaşıyorum.</p>
<p><a href="https://www.youtube.com/watch?v=RF0HhrwIwp0"><img alt="Kings of Leon - Sex on Fire" src="https://i.ytimg.com/vi/RF0HhrwIwp0/hqdefault.jpg"></a></p>
<p><a href="https://www.youtube.com/watch?v=3oMb06O2wXo"><img alt="Frazey Ford - One More Cup Of Coffee" src="https://i.ytimg.com/vi/3oMb06O2wXo/hqdefault.jpg"></a></p>
</article>
<footer>
<p>This entry is posted in <a href="https://enesergun.net/category/python.html">python</a>.</p>
</footer>
<div class="comments">
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = '0x656e';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
</div>
<footer class="blog-footer">
<ul class="nav">
<li><a href="https://devilinside.me/"> Eşelyon</a></li>
<li><a href="https://medium.com/@brkalbyrk"> Berk Albayrak</a></li>
<li><a href="https://ahmtglr.wordpress.com/"> Ahmet Güler</a></li>
<li><a href="https://kaganisildak.com/"> Kağan Işıldak</a></li>
<li><a href="https://eybisi.run/"> Eybisi</a></li>
<li><a href="https://onur.im/"> Onur Aslan</a></li>
<li><a href="https://canyoupwn.me/"> Canyoupwn.me</a></li>
<li><a href="https://www.oguzozkeroglu.com"> Oğuz Özkeroğlu</a></li>
<li><a href="https://aligoren.com"> Ali Gören</a></li>
<li><a href="https://0xf61.gitlab.io/"> Emir Kurt</a></li>
<br>
<li><a href="www.twitter.com/eness_ergun">Twitter</a></li>
<li><a href="[email protected]">Mail</a></li>
</ul>
<p class="disclaimer">
Built with <a href="http://getpelican.com">Pelican</a>, and <a href="https://github.com/ka1nsha/MBPelican">MB Pelican</a> theme.
</p>
</footer>
</div>
</body>
</html>