forked from yazbel/python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfstring.html
More file actions
239 lines (211 loc) · 15.9 KB
/
fstring.html
File metadata and controls
239 lines (211 loc) · 15.9 KB
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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
<!DOCTYPE html>
<html lang="tr">
<html lang="tr">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta content="Buğra İşgüzar <biisguzar@gmail.com>" name="author" />
<meta content="Bu bölümde Python'daki f-string yapısından ve özelliklerinden söz edeceğiz." name="description" />
<meta content="python, f-string, formatted string" name="keywords" />
<title>f-string — Python 3 için Türkçe Kılavuz</title>
<link rel="stylesheet" href="_static/pyramid.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/language_data.js"></script>
<script src="_static/translations.js"></script>
<link rel="search" title="Ara" href="search.html" />
<link rel="next" title="Listeler ve Demetler" href="listeler_ve_demetler.html" />
<link rel="prev" title="Karakter Dizilerini Biçimlendirmek" href="karakter_dizilerini_bicimlendirmek.html" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
</head><body>
<div class='header'><a href='https://yazbel.com'>yazbel.com</a></div>
<ul class='navbar'>
<li><a href="#"><del>pdf desteği sonlanmıştır</del></a></li>
<li class="forum"><a href="http://forum.yazbel.com">forum</a></li>
</ul>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="listeler_ve_demetler.html" title="Listeler ve Demetler"
accesskey="N">sonraki</a></li>
<li class="right" >
<a href="karakter_dizilerini_bicimlendirmek.html" title="Karakter Dizilerini Biçimlendirmek"
accesskey="P">önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">f-string</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="body" role="main">
<div class="section" id="f-string">
<h1>f-string<a class="headerlink" href="#f-string" title="Bu başlık için kalıcı bağlantı">¶</a></h1>
<p>Daha önceki bölümlerde <strong>format()</strong> fonksiyonuyla karakter dizilerini nasıl biçimlendirebileceğimizi görmüştük. 3.6 sürümü ile Python’a eklenen f-string yapısı da buna benzer bir şekilde çalışıyor. Öncelikle format() fonksiyonunu nasıl kullandığımızı hatırlayalım:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">isim</span> <span class="o">=</span> <span class="s1">'Buğra'</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Selam </span><span class="si">{kime}</span><span class="s1">!'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">kime</span><span class="o">=</span><span class="n">isim</span><span class="p">))</span>
</pre></div>
</div>
<p>Burada öncelikle <em>isim</em> adında bir değişken tanımladık ve bu değişkene <em>Buğra</em> değerini atadık. Daha sonra da <em>‘Selam {isim}!’</em> diye bir karakter dizisini ekrana yazdırdık. format() fonksiyonunu kullanarak Python’a yazdırma işlemini yapmadan önce karakter dizimizdeki <em>kime</em> kısımını <em>isim</em> değişkeninin değeri ile değiştirmesi gerektiğini söyledik.</p>
<p>format() fonksiyonumuz kendisine verdiğimiz değerleri kapsama alanı içerisinde uygun yerlere yerleştirir. Hatırlarsanız format() fonksiyonunu ilgilendiren kısımları süslü parantezlerin içine yazıyorduk. Yukarıdaki örneği şu şekilde de yapabiliriz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">isim</span> <span class="o">=</span> <span class="s1">'Buğra'</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Selam </span><span class="si">{}</span><span class="s1">!'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">isim</span><span class="p">))</span>
</pre></div>
</div>
<p>Bu sefer format() fonksiyonuna belirli bir yer göstermediğimiz için sırasıyla ilgili alanlara verdiğimiz parametreleri dolduracak. Zaten bir parametre ve bir alan olduğu için yukarıdaki örnekle aynı çıktıyı alacağız. format() fonksiyonunu bu kadar hatırlamak yeter, hadi f-string’lere geçelim!</p>
<div class="section" id="kullanim">
<h2>Kullanım<a class="headerlink" href="#kullanim" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>String nedir hepimiz biliyoruz, Türkçeye karakter dizisi olarak çeviriyoruz. Bu yapıya da f-string diyoruz çünkü bu yapıyı kullanmak istediğimiz stringin (karakter dizisinin) başına <strong>f</strong> veya <strong>F</strong> ekliyoruz. Yani bir ön ek ekleyerek Python’a artık onun normal, sıradan bir karakter dizisi olmadığını ve bir ön işlemden geçmesi gerektiğini belirtiyoruz.:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="s2">"Selam Dünya!"</span> <span class="c1"># Normal bir karakter dizisi</span>
<span class="sa">f</span><span class="s2">"Selam Dünya!"</span> <span class="c1"># Bu artık bir f-string</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Not</p>
<p>f-string’leri kullanabilmeniz için Python 3.6 ya da daha yeni bir sürüm kullanmamız gerektiğini unutmayalım!</p>
</div>
<p>Bu örnekte f-string’imizin normal bir karakter dizisinden farkı yok gibi görünüyor. Aslında şuanlık bir farkı yok. Çünkü biz <strong>f-string</strong>’in özelliklerini henüz kullanmadık. Yukarıda format() fonksiyonu için yazdığımız örneği bir de f-string için yazalım.:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">isim</span> <span class="o">=</span> <span class="s1">'Buğra'</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Selam </span><span class="si">{</span><span class="n">isim</span><span class="si">}</span><span class="s1">!'</span><span class="p">)</span>
</pre></div>
</div>
<p>Bu örneği de çalıştırdığınızda yukarıdaki örneklerin çıktılarıyla aynı çıktıyı verdiğini göreceksiniz. Ama çok daha düzenli bir görünümle elde ettik bu sefer aynı çıktıyı. format() fonksiyonuna ilgileneceği kısımları, işlem yapacağı kısımları, süslü parantezler ile belirttiğimizi biliyoruz. f-string için de aynı şey geçerli ancak ufak bir farkla. Artık harici bir işlem yapılıp karakter dizimiz düzenlenmiyor, işlemler doğrudan karakter dizimiz içinde gerçekleştirilip yerini kendi alıyor!</p>
<p>Bir örnek daha hazırlayalım ve üzerinde konuşalım.:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">isim</span> <span class="o">=</span> <span class="s1">'Buğra'</span>
<span class="gp">>>> </span><span class="n">yas</span> <span class="o">=</span> <span class="mi">18</span>
<span class="gp">>>> </span><span class="sa">f</span><span class="s1">'Onun adı </span><span class="si">{</span><span class="n">isim</span><span class="si">}</span><span class="s1"> ve o </span><span class="si">{</span><span class="n">yas</span><span class="si">}</span><span class="s1"> yaşında.'</span>
<span class="go">'Onun adı Buğra ve o 18 yaşında.'</span>
</pre></div>
</div>
<dl>
<dt>Aynı örneği format() fonksiyonu ile de yazıp arasındaki farka bakalım.::</dt><dd><div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">isim</span> <span class="o">=</span> <span class="s1">'Buğra'</span>
<span class="gp">>>> </span><span class="n">yas</span> <span class="o">=</span> <span class="mi">18</span>
<span class="gp">>>> </span><span class="s2">"Onun adı </span><span class="si">{}</span><span class="s2"> ve o </span><span class="si">{}</span><span class="s2"> yaşında."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">isim</span><span class="p">,</span> <span class="n">yas</span><span class="p">)</span>
<span class="go">'Onun adı Buğra ve o 18 yaşında.'</span>
</pre></div>
</div>
</dd>
</dl>
<p>Yukarıdaki kodu en basit haliyle değişken isimleri kullanmadan yazdım, yani değişkenleri sırasıyla ilgili yerlere yerleştirecek. Buna rağmen f-string örneğimizdekinden çok daha uzun oldu ve okunabilirlik azaldı.</p>
<dl>
<dt>Aynı zamanda f-string’lerin içinde Python işlemleri de yapabiliriz.::</dt><dd><div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">birinci_rakam</span> <span class="o">=</span> <span class="mi">5</span>
<span class="gp">>>> </span><span class="n">ikinci_rakam</span> <span class="o">=</span> <span class="mi">3</span>
<span class="gp">>>> </span><span class="sa">f</span><span class="s1">'Rakamların toplamı </span><span class="si">{</span><span class="n">birinci_rakam</span> <span class="o">+</span> <span class="n">ikinci_rakam</span><span class="si">}</span><span class="s1"> eder.'</span>
<span class="go">'Rakamların toplamı 8 eder.'</span>
</pre></div>
</div>
</dd>
</dl>
<p>Hadi sadece toplama işlemi yapan bir hesap makinesi yapalım.:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">birinci_sayi</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s1">'Birinci sayıyı girin: '</span><span class="p">))</span>
<span class="n">ikinci_sayi</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s1">'İkinci sayıyı girin: '</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span>
<span class="sa">f</span><span class="s1">'Sayıların toplamı </span><span class="si">{</span><span class="n">birinci_sayi</span><span class="o">+</span><span class="n">ikinci_sayi</span><span class="si">}</span><span class="s1"> eder.'</span>
<span class="p">)</span>
</pre></div>
</div>
<p>Kullanıcının girdiği sayıları toplayan bir hesap makinesi yaptık. Az önce f-string’lerin içinde Python kodu yazabildiğimizi öğrenmiştik. Bu bilgimizi de kullanıp bu basit programı daha güncel hale getirelim.:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="sa">f</span><span class="s1">'Sayıların toplamı </span><span class="si">{</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s2">"Birinci sayıyı girin: "</span><span class="p">))</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s2">"İkinci sayıyı girin: "</span><span class="p">))</span> <span class="si">}</span><span class="s1"> eder.'</span>
<span class="go">Birinci sayıyı girin: 10</span>
<span class="go">İkinci sayıyı girin: 7</span>
<span class="go">'Sayıların toplamı 17 eder.'</span>
</pre></div>
</div>
<p>Kullanıcıdan girdileri f-string’in içinde alarak tek satırlık bir hesap makinesi yazmış olduk.</p>
<div class="admonition note">
<p class="admonition-title">Not</p>
<p>f-string’in içinde Python kodu yazmak her zaman en iyi yol olmayabilir.</p>
</div>
</div>
</div>
<div class='glyph'><a href='https://yazbel.com'>♣</a></div>
<div class='extrarelbar'>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="listeler_ve_demetler.html" title="Listeler ve Demetler"
>sonraki</a></li>
<li class="right" >
<a href="karakter_dizilerini_bicimlendirmek.html" title="Karakter Dizilerini Biçimlendirmek"
>önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">f-string</a></li>
</ul>
</div> </div>
<div class='addcomment'>Yorumlar</div>
<div class='how-to-use'>
<h3>Önemli Not</h3>
Eğer yazdığınız yorum içinde kod kullanacaksanız, kodlarınızı
<span class='tag'><pre><code></span> etiketleri içine alın. Örneğin:
<pre>
<span class='tag'><pre><code class="python"></span>
<span class='keyword'>print</span>(<span class='string'>"Merhaba Dünya!"</span>)
<span class='tag'></code></pre></span>
</pre>
</div>
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES * * */
var disqus_shortname = 'istihza';
/* * * DON'T EDIT BELOW THIS LINE * * */
(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="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4eca48eb2d83faf9" async="async"></script>
<div class="clearer"></div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="listeler_ve_demetler.html" title="Listeler ve Demetler"
>sonraki</a></li>
<li class="right" >
<a href="karakter_dizilerini_bicimlendirmek.html" title="Karakter Dizilerini Biçimlendirmek"
>önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">f-string</a></li>
</ul>
</div>
<div class="footer">
© Copyright 2007-2020, Fırat Özgül | <a href="https://yazbel.com">yazbel.com</a>.
Son güncelleme: 08.08.2020.
<a href="http://sphinx-doc.org/">Sphinx</a> 3.2.0 kullanılarak oluşturuldu.
<br>
<br>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img
alt="Creative Commons License" style="border-width:0"
src="https://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" /></a><br />
<br>
</div>
<!-- Start of StatCounter Code for Default Guide -->
<script type="text/javascript">
var sc_project=10396326;
var sc_invisible=1;
var sc_security="fb5cd679";
var scJsHost = (("https:" == document.location.protocol) ?
"https://secure." : "http://www.");
document.write("<sc"+"ript type='text/javascript' src='" +
scJsHost+
"statcounter.com/counter/counter.js'></"+"script>");
</script>
<noscript><div class="statcounter"><a title="hit counter"
href="http://statcounter.com/" target="_blank"><img
class="statcounter"
src="http://c.statcounter.com/10396326/0/fb5cd679/1/"
alt="hit counter"></a></div></noscript>
<!-- End of StatCounter Code for Default Guide -->
</body>
</html>