http://wiki.math.bme.hu/history/Informatika2-2015/Eloadas_4_Python-4_Referenciak,_Objektumok?feed=atom&Informatika2-2015/Eloadas 4 Python-4 Referenciak, Objektumok - Laptörténet2024-03-29T00:45:46ZAz oldal laptörténete a wikibenMediaWiki 1.18.1http://wiki.math.bme.hu/index.php?title=Informatika2-2015/Eloadas_4_Python-4_Referenciak,_Objektumok&diff=10633&oldid=prevCsirke, 2015. április 4., 16:37-n2015-04-04T16:37:17Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td>
<td colspan='2' style="background-color: white; color:black;">A lap 2015. április 4., 16:37-kori változata</td>
</tr><tr><td colspan="2" class="diff-lineno">52. sor:</td>
<td colspan="2" class="diff-lineno">52. sor:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>print kisszam</python></div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>print kisszam</python></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>Ez teljesen <del class="diffchange diffchange-inline">legikus</del>, remélem mindenki számára érthető. Most egy alternatív megoldás, ami a beépített [https://docs.python.org/2/library/functions.html#reduce reduce()] függvényt használja:</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>Ez teljesen <ins class="diffchange diffchange-inline">logikus</ins>, remélem mindenki számára érthető. Most egy alternatív megoldás, ami a beépített [https://docs.python.org/2/library/functions.html#reduce reduce()] függvényt használja:</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div><python>def oszt(a, b):</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div><python>def oszt(a, b):</div></td></tr>
</table>Csirkehttp://wiki.math.bme.hu/index.php?title=Informatika2-2015/Eloadas_4_Python-4_Referenciak,_Objektumok&diff=10632&oldid=prevCsirke, 2015. április 4., 16:36-n2015-04-04T16:36:37Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td>
<td colspan='2' style="background-color: white; color:black;">A lap 2015. április 4., 16:36-kori változata</td>
</tr><tr><td colspan="2" class="diff-lineno">165. sor:</td>
<td colspan="2" class="diff-lineno">165. sor:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  4.0  2.0  1.33  1.0  0.8   </div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  4.0  2.0  1.33  1.0  0.8   </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  5.0  2.5  1.67  1.25  1.0</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  5.0  2.5  1.67  1.25  1.0</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">== Tiszta függvény ==</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">Általános (nem csak python-os) fogalom a a tiszta függvény. Tiszta függvénynek azt hívjuk aminek a kimenete csak a paramétereitől függ, és nincsen másra hatása. Például bármelyik függvény, ami print-el, már nem lehet tiszta függvény, mert hatása van a program kimenetére.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">Példa a tiszta függvényre:</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"><python>def tiszta(n):</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">    return n**2</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">    </del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">print tiszta(5)</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">print tiszta(5)</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">print tiszta(5)</python></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">És a nem tisztára</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"><python>a = 1</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">def novel():</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">    global a</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">    a = a + 1</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">    return a</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">    </del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">print novel()</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">print novel()</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">print novel()</python></del></div></td><td colspan="2"> </td></tr>
</table>Csirkehttp://wiki.math.bme.hu/index.php?title=Informatika2-2015/Eloadas_4_Python-4_Referenciak,_Objektumok&diff=10530&oldid=prevCsirke, 2015. március 4., 12:12-n2015-03-04T12:12:23Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td>
<td colspan='2' style="background-color: white; color:black;">A lap 2015. március 4., 12:12-kori változata</td>
</tr><tr><td colspan="2" class="diff-lineno">165. sor:</td>
<td colspan="2" class="diff-lineno">165. sor:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  4.0  2.0  1.33  1.0  0.8   </div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  4.0  2.0  1.33  1.0  0.8   </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  5.0  2.5  1.67  1.25  1.0</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  5.0  2.5  1.67  1.25  1.0</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">== Tiszta függvény ==</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Általános (nem csak python-os) fogalom a a tiszta függvény. Tiszta függvénynek azt hívjuk aminek a kimenete csak a paramétereitől függ, és nincsen másra hatása. Például bármelyik függvény, ami print-el, már nem lehet tiszta függvény, mert hatása van a program kimenetére.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Példa a tiszta függvényre:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>def tiszta(n):</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    return n**2</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">print tiszta(5)</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">print tiszta(5)</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">print tiszta(5)</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">És a nem tisztára</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>a = 1</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">def novel():</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    global a</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    a = a + 1</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    return a</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">print novel()</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">print novel()</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">print novel()</python></ins></div></td></tr>
</table>Csirkehttp://wiki.math.bme.hu/index.php?title=Informatika2-2015/Eloadas_4_Python-4_Referenciak,_Objektumok&diff=10527&oldid=prevCsirke: Informatika2-2015/Eloadas 4 Python-4 lapot átneveztem Informatika2-2015/Eloadas 4 Python-4 Referenciak, Objektumok névre2015-03-04T11:50:10Z<p><a href="/view/Informatika2-2015/Eloadas_4_Python-4" class="mw-redirect" title="Informatika2-2015/Eloadas 4 Python-4">Informatika2-2015/Eloadas 4 Python-4</a> lapot átneveztem <a href="/view/Informatika2-2015/Eloadas_4_Python-4_Referenciak,_Objektumok" title="Informatika2-2015/Eloadas 4 Python-4 Referenciak, Objektumok">Informatika2-2015/Eloadas 4 Python-4 Referenciak, Objektumok</a> névre</p>
<table class='diff diff-contentalign-left'>
<tr valign='top'>
<td colspan='1' style="background-color: white; color:black;">←Régebbi változat</td>
<td colspan='1' style="background-color: white; color:black;">A lap 2015. március 4., 11:50-kori változata</td>
</tr></table>Csirkehttp://wiki.math.bme.hu/index.php?title=Informatika2-2015/Eloadas_4_Python-4_Referenciak,_Objektumok&diff=10526&oldid=prevCsirke, 2015. március 4., 11:49-n2015-03-04T11:49:19Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td>
<td colspan='2' style="background-color: white; color:black;">A lap 2015. március 4., 11:49-kori változata</td>
</tr><tr><td colspan="2" class="diff-lineno">95. sor:</td>
<td colspan="2" class="diff-lineno">95. sor:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Hát ez lehet hogy egy táblázat, de nem túl átlátható. Mennyivel jobb lenne, ha így nézne ki:</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Hát ez lehet hogy egy táblázat, de nem túl átlátható. Mennyivel jobb lenne, ha így nézne ki:</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>  <del class="diffchange diffchange-inline">0001</del>.0 <del class="diffchange diffchange-inline">0000</del>.<del class="diffchange diffchange-inline">5 </del>0.<del class="diffchange diffchange-inline">3333 000</del>.<del class="diffchange diffchange-inline">25 0000</del>.<del class="diffchange diffchange-inline">2</del></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>  <ins class="diffchange diffchange-inline">1</ins>.000 <ins class="diffchange diffchange-inline">0</ins>.<ins class="diffchange diffchange-inline">500 </ins>0.<ins class="diffchange diffchange-inline">333 0</ins>.<ins class="diffchange diffchange-inline">250 0</ins>.<ins class="diffchange diffchange-inline">200</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>  <del class="diffchange diffchange-inline">0002</del>.0 <del class="diffchange diffchange-inline">0001</del>.0 0.<del class="diffchange diffchange-inline">6667 0000.5 0000.4</del></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>  <ins class="diffchange diffchange-inline">2</ins>.000 <ins class="diffchange diffchange-inline">1.000 0</ins>.<ins class="diffchange diffchange-inline">667 </ins>0<ins class="diffchange diffchange-inline">.500 </ins>0.<ins class="diffchange diffchange-inline">400</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>  <del class="diffchange diffchange-inline">0003</del>.0 <del class="diffchange diffchange-inline">0001</del>.<del class="diffchange diffchange-inline">5 0001</del>.0 <del class="diffchange diffchange-inline">000</del>.<del class="diffchange diffchange-inline">75 0000</del>.<del class="diffchange diffchange-inline">6</del></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>  <ins class="diffchange diffchange-inline">3</ins>.000 <ins class="diffchange diffchange-inline">1</ins>.<ins class="diffchange diffchange-inline">500 1</ins>.000 <ins class="diffchange diffchange-inline">0</ins>.<ins class="diffchange diffchange-inline">750 0</ins>.<ins class="diffchange diffchange-inline">600</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>  <del class="diffchange diffchange-inline">0004</del>.<del class="diffchange diffchange-inline">0 0002</del>.0 <del class="diffchange diffchange-inline">01</del>.<del class="diffchange diffchange-inline">333 0001</del>.<del class="diffchange diffchange-inline">0 </del>0000.<del class="diffchange diffchange-inline">8</del></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>  <ins class="diffchange diffchange-inline">4</ins>.<ins class="diffchange diffchange-inline">000 2</ins>.000 <ins class="diffchange diffchange-inline">1</ins>.<ins class="diffchange diffchange-inline">330 1</ins>.<ins class="diffchange diffchange-inline">000 </ins>0.<ins class="diffchange diffchange-inline">800</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>  <del class="diffchange diffchange-inline">0005</del>.<del class="diffchange diffchange-inline">0 0002</del>.<del class="diffchange diffchange-inline">5 01</del>.<del class="diffchange diffchange-inline">667 001</del>.<del class="diffchange diffchange-inline">25 0001</del>.0</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>  <ins class="diffchange diffchange-inline">5</ins>.<ins class="diffchange diffchange-inline">000 2</ins>.<ins class="diffchange diffchange-inline">500 1</ins>.<ins class="diffchange diffchange-inline">670 1</ins>.<ins class="diffchange diffchange-inline">250 1</ins>.000</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Vagy esetleg így:</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Vagy esetleg így:</div></td></tr>
<tr><td colspan="2" class="diff-lineno">108. sor:</td>
<td colspan="2" class="diff-lineno">108. sor:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  5.0    2.5    1.667  1.25  1.0   </div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>  5.0    2.5    1.667  1.25  1.0   </div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>Többek között erre használható a karakterlánc osztály (angol neve ''string'') [https://docs.python.org/2.7/library/stdtypes.html#str.format format()] metódusa.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>Többek között erre használható a karakterlánc osztály (angol neve ''string<ins class="diffchange diffchange-inline">'', a python osztály neve ''str</ins>'') [https://docs.python.org/2.7/library/stdtypes.html#str.format format()] metódusa.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>[https://docs.python.org/2.7/library/string.html#formatexamples Hivatalos példák.]</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>[https://docs.python.org/2.7/library/string.html#formatexamples Hivatalos példák.]</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Az az alapvetés, hogy a ''format()'' metódus visszaad egy másik stringet, amiben a ''{}'' (kapcsos zárójeles) dolgok ki vannak cserélve az oda illő értékekre. (A ''format()'' metódus nem tudja azt az ''str'' objektumot módosítani amin meghívják, mert az ''str'' egy immutable típus, tehát nem módosítható.) Egyszerű példa:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>felhasznalo = "Csirke"</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">domain = "BME Matematika Intézet"</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">print "Üdvözöllek {} a {} wikin!".format(felhasznalo, domain)</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Ebben az esetben csak arra használtam a ''format''-ot, hogy a szöveg változtatható részeit különválogattam, ami már magában hasznos. Persze mivel ez egy metódus, ezért ilyen formában is lehet hívni:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>felhasznalo = "Csirke"</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">domain = "BME Matematika Intézet"</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">udvozles = "Üdvözöllek {} a {} wikin!"</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">print udvozles.format(felhasznalo, domain)</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Általában a korábbi formát használják. Néha azonban jól jöhet ez, és az első dolog amit a behelyettesítési helyeken meg lehet adni, pl. ha ugyanezt a kódot szeretném más nyelvű honlap létrehozására is használni:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>felhasznalo = "Csirke"</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">domain = "BME Matematika Intézet"</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">udvozles = "Welcome to {1} wiki, {0}!"</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">print udvozles.format(felhasznalo, domain)</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Mint látható, az itt megadott angol szövegben más sorrendben voltak a behelyettesítendő paraméterek, de ez megoldható volt azzal, hogy explicit megmondtuk, hogy hányadik paramétert kérjük, nem az alapértelmezett sorrendet használtuk. Így elég volt csak az üdvözlő szöveget változtatni a kódban. (Ez fontos, mert ha kódot is kell módosítani a különböző nyelvek használatához, azt sokkal bonyolultabb kezelni, mint ha csak egy adatbázisból a megfelelő szövegeket kell kiolvasni.)</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Na de nézzük még milyen dolgokat lehet megadni. Lehet válogatni a paraméterek közül nem csak számokkal, hanem más módon is, ez annyira nem érdekes nekünk, ha valamikor mégis kellene, elolvashatjátok a dokumentációt. Ami érdekesebb nekünk, a táblázatos esetnél például, hogy ha a kapcsos zárójelen belülre teszünk egy kettőspontot, akkor az után pedig a beillesztett dolog formáját lehet változtatni. Legegyszerűbb eset ha csak egy számot teszünk oda, akkor az azt jelenti, hogy legalább annyi betűből fog állni az a mező. Ez minden fajta bemenettel működik:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>>>> "b{:5}b".format("a")</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">'ba    b'</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">>>> "b{:5}b".format(5)</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">'b    5b'</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Valós számoknál még meg lehet adni, hogy hány tizedesjegy pontossággal írja oda a dolgokat, egy pont után:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>>>> "b{:5.2}b".format(5.12345)</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">'b  5.1b'</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">További dolgok amiket használhatunk itt: Az elejére írva hogy "<", "^" vagy ">", megmondhatjuk, hogy melyik oldalra legyen rendezve a fix hosszon belül a szám. Ha odaírunk egy "0"-t, akkor a szabad helyeket 0-kkal tölti fel.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Így a táblázat egy lehetséges megoldása:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>for i in range(1, 6):</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    for j in range(1, 6):</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">        print "{:<5.3}".format(i / float(j)),</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    print</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Aminek kimenete:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 1.0  0.5  0.333 0.25  0.2  </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 2.0  1.0  0.667 0.5  0.4  </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 3.0  1.5  1.0  0.75  0.6  </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 4.0  2.0  1.33  1.0  0.8  </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 5.0  2.5  1.67  1.25  1.0</ins></div></td></tr>
</table>Csirkehttp://wiki.math.bme.hu/index.php?title=Informatika2-2015/Eloadas_4_Python-4_Referenciak,_Objektumok&diff=10505&oldid=prevCsirke, 2015. március 4., 09:39-n2015-03-04T09:39:11Z<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td>
<td colspan='2' style="background-color: white; color:black;">A lap 2015. március 4., 09:39-kori változata</td>
</tr><tr><td colspan="2" class="diff-lineno">18. sor:</td>
<td colspan="2" class="diff-lineno">18. sor:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Ebben az esetben létrehoztam a ''datetime.date'' osztály egy példányát, egy objektumot, ami el tud tárolni egy dátumot, ebben az esetben a mai dátumot. A ''ma'' nevű változó egy referencia, ami erre az objektumra mutat. Megtudható a ''datetime.date'' osztály dokumentációjából, hogy ennek az osztálynak van pl. egy ''year'' nevű tagváltozója, és egy ''weekday()'' nevű metódusa, így ezek elérhetőek a referencián keresztül.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Ebben az esetben létrehoztam a ''datetime.date'' osztály egy példányát, egy objektumot, ami el tud tárolni egy dátumot, ebben az esetben a mai dátumot. A ''ma'' nevű változó egy referencia, ami erre az objektumra mutat. Megtudható a ''datetime.date'' osztály dokumentációjából, hogy ennek az osztálynak van pl. egy ''year'' nevű tagváltozója, és egy ''weekday()'' nevű metódusa, így ezek elérhetőek a referencián keresztül.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Az osztályoknak egy speciális metódusa a '''konstruktor'''a. Amikor létrehozom az osztály egy példányát, akkor ezt a metódust hívom meg, tehát az számít, hogy ennek a metódusnak milyen paraméterei vannak. Ennek ellenére csak az osztály nevét kell leírni, és aztán a paramétereket a '''példányosítás'''hoz. Pl. a ''datetime.date'' osztály konstruktorának 3 paramétere az év, hónap és nap, ilyen sorrendben. (Kivéve azt a néhány osztályt aminek speciális szintakszisa van a létrehozáshoz, mint a lista meg a szótár.)</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Itt mindjárt láthatunk is egy fontos különbséget a modulokhoz képest. A modulnál a bele tartozó függvények meghívásához csak a modulra volt szükségem, azt mondhattam a ''math'' modulnál hogy ''math.sin(1)''. Azonban a ''datetime.date'' osztályra nem mondhatom azt hogy ''datetime.date.weekday()'', szükségem van az objektum egy példányára, hogy a metódust azon tudjam meghívni.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Itt mindjárt láthatunk is egy fontos különbséget a modulokhoz képest. A modulnál a bele tartozó függvények meghívásához csak a modulra volt szükségem, azt mondhattam a ''math'' modulnál hogy ''math.sin(1)''. Azonban a ''datetime.date'' osztályra nem mondhatom azt hogy ''datetime.date.weekday()'', szükségem van az objektum egy példányára, hogy a metódust azon tudjam meghívni.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Vannak olyan függvények is, amiket magán az osztályon lehet hívni, és nem egy példányon. Pythonban ezeket ''"class method"''-nek és ''"class attribute"''-nak hívják, ellenben azokkal amiket az előbb említettem, amiket pontosabban ''"instance method"''-nek és ''"instance attribute"''-nak hívnak. Ezeket az "osztálymetódus"-okat akkor használják, ha valamely függvény/változó szervesen kapcsolódik az adott osztályhoz, de nem egy konkrét példányhoz. Lényegében úgy érhetőek el, mint ha lenne az osztály nevével egy azonos nevű modul is, és abban lennének. Itt példa a ''datetime.date.min'', ami a lehetséges legkisebb dátum amit a ''datetime.date'' osztály tárolni tud: ez az érték az osztály minden példányára ugyanaz, és szükségünk lehet már akkor rá amikor még nem hoztunk létre egy példányt se, ezért az osztályhoz tartozik, nem az egyes objektumokhoz. De ez csak plusz lehetőség, továbbra is elérhető az objektumokon keresztül is, pl. a korábbi példában a ''ma.min'' is működne, és ugyanezt adná. Alapból ha ''metódus''ról beszélünk, az "instance method"-öt értjük alatta.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>Vannak olyan függvények is, amiket magán az osztályon lehet hívni, és nem egy példányon. Pythonban ezeket ''"class method"''-nek és ''"class attribute"''-nak hívják, ellenben azokkal amiket az előbb említettem, amiket pontosabban ''"instance method"''-nek és ''"instance attribute"''-nak hívnak. Ezeket az "osztálymetódus"-okat akkor használják, ha valamely függvény/változó szervesen kapcsolódik az adott osztályhoz, de nem egy konkrét példányhoz. Lényegében úgy érhetőek el, mint ha lenne az osztály nevével egy azonos nevű modul is, és abban lennének. Itt példa a ''datetime.date.min'', ami a lehetséges legkisebb dátum amit a ''datetime.date'' osztály tárolni tud: ez az érték az osztály minden példányára ugyanaz, és szükségünk lehet már akkor rá amikor még nem hoztunk létre egy példányt se, ezért az osztályhoz tartozik, nem az egyes objektumokhoz. De ez csak plusz lehetőség, továbbra is elérhető az objektumokon keresztül is, pl. a korábbi példában a ''ma.min'' is működne, és ugyanezt adná. Alapból ha ''metódus''ról beszélünk, az "instance method"-öt értjük alatta.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Laboron majd fogunk nézni néhány objektum osztályt a beépített könyvtárból.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">== Függvény objektumok ==</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">A python-ban a függvények is objektumok. Hasonlóan a listához és a szótárhoz, speciális szintaxis van a létrehozására, a ''def'' parancs. Nézzünk egy példát:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><wikiframe width="1100" height="700" frameborder="1" src="http://pythontutor.com/iframe-embed.html#code=def+kartya_sorrend(kartya_a,+kartya_b)%3A%0D%0A++++%22%22%22Megmondja+az+elso+kartya+kisebb-e.+%22%22%22%0D%0A++++szin_a,+szam_a+%3D+kartya_a%0D%0A++++szin_b,+szam_b+%3D+kartya_b%0D%0A++++if+szam_a+%3C+szam_b%3A%0D%0A++++++++return+-1%0D%0A++++elif+szam_b+%3C+szam_a%3A%0D%0A++++++++return+1%0D%0A++++else%3A%0D%0A++++++++return+cmp(szin_a,+szin_b)%0D%0A%0D%0Akartyak+%3D+%5B(%22pikk%22,+5),+(%22kor%22,+7),+(%22karo%22,+3)%5D%0D%0Akartyak.sort(cmp%3Dkartya_sorrend)%0D%0Aprint+kartyak%0D%0A%0D%0Aprint+kartya_sorrend.__doc__&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&textReferences=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0&codeDivWidth=500&codeDivHeight=400"/> [http://pythontutor.com/visualize.html#code=def+kartya_sorrend(kartya_a,+kartya_b)%3A%0D%0A++++%22%22%22Megmondja+az+elso+kartya+kisebb-e.+%22%22%22%0D%0A++++szin_a,+szam_a+%3D+kartya_a%0D%0A++++szin_b,+szam_b+%3D+kartya_b%0D%0A++++if+szam_a+%3C+szam_b%3A%0D%0A++++++++return+-1%0D%0A++++elif+szam_b+%3C+szam_a%3A%0D%0A++++++++return+1%0D%0A++++else%3A%0D%0A++++++++return+cmp(szin_a,+szin_b)%0D%0A%0D%0Akartyak+%3D+%5B(%22pikk%22,+5),+(%22kor%22,+7),+(%22karo%22,+3)%5D%0D%0Akartyak.sort(cmp%3Dkartya_sorrend)%0D%0Aprint+kartyak%0D%0A%0D%0Aprint+kartya_sorrend.__doc__&mode=display&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&textReferences=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0 link]</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Tegyük fel hogy a program más, már korábban megírt részeiben így használjuk a kártyákat, hogy a színük van előbb, és utána a számuk. De aztán itt szeretnénk a számuk szerint sorba rendezni őket, de a ''sort()'' a párokat magától az első tagja alapján rendezi. A megoldás egy függvény objektum használata.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Egyik dolog amit itt látunk, hogy a lista ''sort()'' metódusának van egy ''cmp'' nevű opcionális paramétere, ami egy függvény objektumot vár. A [https://docs.python.org/2.7/library/stdtypes.html#mutable-sequence-types sort() dokumentációja] leírja, hogy olyan függvényt vár, ami ha a lista két elemét kapja paraméterként, akkor negatív számot ad vissza ha az első kisebb, pozitívat ha a második kisebb, és nullát ha egyenlőek. (Tehát két egész számnál elég lenne a kettő különbségét visszaadni.) Ezért megírtuk így a ''kartya_sorrend()'' függvényt és azt adtuk oda.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">A függvény objektumok alapvető tulajdonsága, hogy meghívhatóak. Ez azt jelenti, hogy a függvény neve után tehetek egy zárójelet, abba a függvény paramétereit, és akkor lefut a függvény kódja azokkal a paraméterekkel. De ezen kívül van néhány más tagváltozója és metódusa is, például itt láthatjuk hogy a ''__doc__'' tagváltozóban megtalálható a docstring-ben megadott dokumentáció.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">== Lambda függvények ==</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Nézzünk egy másik példát: van egy nagy számunk, és egy listában megvan már néhány osztója. Szeretnénk megnézni, hogy mi a szám ami marad ha ezekkel már elosztottuk. Egy lehetséges megoldás:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>szam = 30000</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">osztok = [2, 2, 3, 5]</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">kisszam = szam</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">for oszto in osztok:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    kisszam = kisszam / oszto</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">print kisszam</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Ez teljesen legikus, remélem mindenki számára érthető. Most egy alternatív megoldás, ami a beépített [https://docs.python.org/2/library/functions.html#reduce reduce()] függvényt használja:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>def oszt(a, b):</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    return a/b</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">kisszam = reduce(oszt, osztok, szam)</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Sikeresen elértem, hogy a megoldás 3 sor helyett... továbbra is három sor. De, a függvény objektumok létrehozására nem csak egy speciális szintaxis van, hanem kettő is! Ha egy függvény csak egy sorból áll, ami ''return''-öl valamit, akkor azt így is le lehet írni, lambda függvénnyel:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>oszt = lambda a, b : a / b</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">kisszam = reduce(oszt, osztok, szam)</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Ez pontosan ugyanazt jelenti mint az előző változat. De akkor már nem is kell ezt külön eltárolni egy változóba, egyből oda lehet adni paraméternek:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>kisszam = reduce(lambda a, b : a / b, osztok, szam)</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Így már csak egy soros lett.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Ez fölösleges bonyolításnak tűnhet most számotokra, de amikor az ember már sokezredjére ír kódot ami végigmegy egy listán, akkor próbálja elkerülni :) De komolyabban mondva, a [https://docs.python.org/2/library/functions.html#reduce reduce()], [https://docs.python.org/2/library/functions.html#filter filter()] és [https://docs.python.org/2/library/functions.html#map map()] beépített függvények mind egy-egy sztenderd esetet kezelnek, amihez normálisan végig kéne menni egy listán. Ha ezek közül a függvények közül használjuk valamelyiket, akkor a kód olvasója egyből láthatja, hogy ez az a tipikus eset, míg ha csak azt látná hogy "for", akkor meg kéne néznie a belső kódot is. Így segítheti is az érthetőséget, bár persze a tömörségével nehezíti is.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">= Kisebb témák =</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">== Szöveg formatálás ==</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Nézzük a következő kódot, ami egy "osztótáblát" ír ki:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"><python>for i in range(1, 6):</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    for j in range(1, 6):</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">        print i / float(j),</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">    print</python></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Ennek a kimenete így néz ki:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 1.0 0.5 0.333333333333 0.25 0.2</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 2.0 1.0 0.666666666667 0.5 0.4</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 3.0 1.5 1.0 0.75 0.6</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 4.0 2.0 1.33333333333 1.0 0.8</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 5.0 2.5 1.66666666667 1.25 1.0</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">(Mellesleg, azt hogy a print nem tesz újsort, ha a végén van egy vessző, tudtátok? Hasznos!)</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Hát ez lehet hogy egy táblázat, de nem túl átlátható. Mennyivel jobb lenne, ha így nézne ki:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 0001.0 0000.5 0.3333 000.25 0000.2</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 0002.0 0001.0 0.6667 0000.5 0000.4</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 0003.0 0001.5 0001.0 000.75 0000.6</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 0004.0 0002.0 01.333 0001.0 0000.8</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 0005.0 0002.5 01.667 001.25 0001.0</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Vagy esetleg így:</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 1.0    0.5    0.3333 0.25  0.2  </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 2.0    1.0    0.6667 0.5    0.4  </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 3.0    1.5    1.0    0.75  0.6  </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 4.0    2.0    1.333  1.0    0.8  </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> 5.0    2.5    1.667  1.25  1.0  </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Többek között erre használható a karakterlánc osztály (angol neve ''string'') [https://docs.python.org/2.7/library/stdtypes.html#str.format format()] metódusa.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">[https://docs.python.org/2.7/library/string.html#formatexamples Hivatalos példák.]</ins></div></td></tr>
</table>Csirkehttp://wiki.math.bme.hu/index.php?title=Informatika2-2015/Eloadas_4_Python-4_Referenciak,_Objektumok&diff=10502&oldid=prevCsirke: Új oldal, tartalma: „= Referenciák, objektumok = == Alapvető fogalmak == Emlékezzünk vissza két előadással korábban amit a mutable típusokról mondtunk. Hogy a listáknál/szót…”2015-03-04T01:37:50Z<p>Új oldal, tartalma: „= Referenciák, objektumok = == Alapvető fogalmak == Emlékezzünk vissza két előadással korábban amit a mutable típusokról mondtunk. Hogy a listáknál/szót…”</p>
<p><b>Új lap</b></p><div>= Referenciák, objektumok =<br />
<br />
== Alapvető fogalmak ==<br />
<br />
Emlékezzünk vissza két előadással korábban amit a mutable típusokról mondtunk. Hogy a listáknál/szótáraknál előfordulhat pl. hogy két változó ugyanarra a listára vonatkozik, ha módosítom az egyiket, a másik is módosul.<br />
<br />
<wikiframe width="800" height="500" frameborder="1" src="http://pythontutor.com/iframe-embed.html#code=l1+%3D+%5B2,+3,+5,+7%5D%0Al2+%3D+l1%0Al3+%3D+l1%0A%0Ad1+%3D+%7B1%3A2,+2%3A3,+3%3A5,+4%3A7%7D%0Ad2+%3D+d1%0A%0Al3+%3D+l1%5B%3A%5D%0Al1.append(11)%0A%0Ad3+%3D+d1.copy()%0Ad1%5B5%5D+%3D+11&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&textReferences=false&py=2&rawInputLstJSON=%5B%5D&curInstr=5&codeDivWidth=350&codeDivHeight=400"/>[http://pythontutor.com/visualize.html#code=l1+%3D+%5B2,+3,+5,+7%5D%0Al2+%3D+l1%0Al3+%3D+l1%0A%0Ad1+%3D+%7B1%3A2,+2%3A3,+3%3A5,+4%3A7%7D%0Ad2+%3D+d1%0A%0Al3+%3D+l1%5B%3A%5D%0Al1.append(11)%0A%0Ad3+%3D+d1.copy()%0Ad1%5B5%5D+%3D+11&mode=display&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&textReferences=false&py=2&rawInputLstJSON=%5B%5D&curInstr=5 link]<br />
<br />
Ezt értelmezhetjük úgy, hogy van egy lista, ami létezik valahol a számítógép memóriájában, és több változó is ugyanara a listára hivatkozik. Bevezetünk néhány szakkifejezést, ami segít ezeket a fogalmakat kezelni.<br />
<br />
Egy ilyen dolog, ami a memóriában valahol létezik, egy '''objektum'''. Az objektumnak van egy '''típusa''', vagy más szóval '''osztálya''', ami megmondja, hogy az az objektum éppen lista, szótár, vagy valami más. A konkrét változók amik erre az objektumra hivatkoznak, azok '''referenciák''', és úgy mondhatjuk, hogy erre az objektumra '''mutatnak'''.<br />
<br />
Az objektumnak a legfontosabb, alapvető, tulajdonsága az osztálya. Ez mondja meg, hogy milyen dolgokat tudunk vele tenni. Például, hogy a listának ki tudjuk venni a valahányadik elemét a szögletes zárójellel, vagy hogy a szótárnak van egy ''has_key()'' nevű metódusa, amivel meg lehet nézni hogy egy bizonyos kulcs szerepel-e benne. Hasonlóan egy modulhoz, egy osztály is alapvetően kétfajta elemet tartalmazhat: változókat, ezeket hívhatjuk az osztály '''tagváltozóinak''', és függvényeket, ezeket hívhatjuk az osztály '''metódusainak'''.<br />
<br />
Nézzünk egy példát:<br />
<br />
<wikiframe width="800" height="500" frameborder="1" src="http://pythontutor.com/iframe-embed.html#code=import+datetime%0A%0Ama+%3D+datetime.date(2015,+3,+4)%0A%0Aprint+ma.year%0Aprint+ma.weekday()&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&textReferences=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0&codeDivWidth=350&codeDivHeight=400"/> [http://pythontutor.com/visualize.html#code=import+datetime%0A%0Ama+%3D+datetime.date(2015,+3,+4)%0A%0Aprint+ma.year%0Aprint+ma.weekday()&mode=display&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&textReferences=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0 link]<br />
<br />
Ebben az esetben létrehoztam a ''datetime.date'' osztály egy példányát, egy objektumot, ami el tud tárolni egy dátumot, ebben az esetben a mai dátumot. A ''ma'' nevű változó egy referencia, ami erre az objektumra mutat. Megtudható a ''datetime.date'' osztály dokumentációjából, hogy ennek az osztálynak van pl. egy ''year'' nevű tagváltozója, és egy ''weekday()'' nevű metódusa, így ezek elérhetőek a referencián keresztül.<br />
<br />
Itt mindjárt láthatunk is egy fontos különbséget a modulokhoz képest. A modulnál a bele tartozó függvények meghívásához csak a modulra volt szükségem, azt mondhattam a ''math'' modulnál hogy ''math.sin(1)''. Azonban a ''datetime.date'' osztályra nem mondhatom azt hogy ''datetime.date.weekday()'', szükségem van az objektum egy példányára, hogy a metódust azon tudjam meghívni.<br />
<br />
Vannak olyan függvények is, amiket magán az osztályon lehet hívni, és nem egy példányon. Pythonban ezeket ''"class method"''-nek és ''"class attribute"''-nak hívják, ellenben azokkal amiket az előbb említettem, amiket pontosabban ''"instance method"''-nek és ''"instance attribute"''-nak hívnak. Ezeket az "osztálymetódus"-okat akkor használják, ha valamely függvény/változó szervesen kapcsolódik az adott osztályhoz, de nem egy konkrét példányhoz. Lényegében úgy érhetőek el, mint ha lenne az osztály nevével egy azonos nevű modul is, és abban lennének. Itt példa a ''datetime.date.min'', ami a lehetséges legkisebb dátum amit a ''datetime.date'' osztály tárolni tud: ez az érték az osztály minden példányára ugyanaz, és szükségünk lehet már akkor rá amikor még nem hoztunk létre egy példányt se, ezért az osztályhoz tartozik, nem az egyes objektumokhoz. De ez csak plusz lehetőség, továbbra is elérhető az objektumokon keresztül is, pl. a korábbi példában a ''ma.min'' is működne, és ugyanezt adná. Alapból ha ''metódus''ról beszélünk, az "instance method"-öt értjük alatta.</div>Csirke