<?xml version="1.0" encoding="utf-8" ?><!-- generator="bbPress" -->

<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>

<channel>
<title>Програмиране с Python</title>
<link>http://oldfmi.py-bg.net/forums/</link>
<description>Последни 35 отговора във форумите на курса Програмиране с Python</description>
<language>en</language>
<pubDate>Fri, 27 Sep 2013 19:09:05 +0000</pubDate>

<item>
<title>exabyte on "оператори is и =="</title>
<link>http://oldfmi.py-bg.net/forums/topic/10#post-108</link>
<pubDate>Fri, 23 Mar 2007 23:27:25 +0000</pubDate>
<dc:creator>exabyte</dc:creator>
<guid isPermaLink="false">108@http://oldfmi.py-bg.net/forums/</guid>
<description>&#60;p&#62;Между другото, ефекта с pointer-и до константи в C е същия. Така че това не е нещо специфично за Python :)
&#60;/p&#62;</description>
</item>
<item>
<title>ObiWan on "оператори is и =="</title>
<link>http://oldfmi.py-bg.net/forums/topic/10#post-64</link>
<pubDate>Mon, 19 Mar 2007 18:35:37 +0000</pubDate>
<dc:creator>ObiWan</dc:creator>
<guid isPermaLink="false">64@http://oldfmi.py-bg.net/forums/</guid>
<description>&#60;p&#62;ок, мерси много за отговора. Аз между другото за да &#34;избегна&#34; такива присвоявания на еднакви стойности на различни обекти първо ги дефинирах с различни стойности и чак след поне 2-3 аритметични операции ги нагласях да станат едни и същи ... тоя оптимизатор явно много го бива. А какво прави компилатора отдолу всъщност? За всяка новополучена целочислена стойност създава нов обект и когато някоя друга променлива се изчисли към същата стойност я &#34;насочва&#34; към същия вече създаден обект? Всъщност е логично щом всички променливи са просто записи в таблица &#34;име - адрес&#34;:)
&#60;/p&#62;</description>
</item>
<item>
<title>djv on "оператори is и =="</title>
<link>http://oldfmi.py-bg.net/forums/topic/10#post-61</link>
<pubDate>Mon, 19 Mar 2007 17:10:46 +0000</pubDate>
<dc:creator>djv</dc:creator>
<guid isPermaLink="false">61@http://oldfmi.py-bg.net/forums/</guid>
<description>&#60;blockquote&#62;&#60;p&#62;&#34;различни(като адрес) обекти също връщат true когато имат еднакви стойности&#34;
&#60;/p&#62;&#60;/blockquote&#62;
&#60;p&#62;не е така, 'is' показва точно дали адресите са еднакви
&#60;/p&#62;</description>
</item>
<item>
<title>nb on "оператори is и =="</title>
<link>http://oldfmi.py-bg.net/forums/topic/10#post-59</link>
<pubDate>Mon, 19 Mar 2007 16:26:03 +0000</pubDate>
<dc:creator>nb</dc:creator>
<guid isPermaLink="false">59@http://oldfmi.py-bg.net/forums/</guid>
<description>&#60;p&#62;Да, операторът &#60;code&#62;is&#60;/code&#62;, наистина проверява дали два обекта са един и същи. Обаче има една малка особеност на присвояването в Python.&#60;/p&#62;
&#60;p&#62;Първо &#38;mdash; ще предположа, че си правил опитите си главно с низове и числа, нали? :)&#60;br /&#62;
Те имат едно много важно свойство &#38;mdash; веднъж създадени, не могат да бъдат променяни (immutable). Python използва това доколкото е възможно за оптимизации. Ето един малък пример:&#60;/p&#62;
&#60;pre&#62;
0 &#38;gt;&#38;gt;&#38;gt; baba = 42
1 &#38;gt;&#38;gt;&#38;gt; dyado = 42
2 &#38;gt;&#38;gt;&#38;gt; baba is dyado
True
3&#38;gt;&#38;gt;&#38;gt; baba = [42, 69]
4 &#38;gt;&#38;gt;&#38;gt; dyado = [42, 69]
5 &#38;gt;&#38;gt;&#38;gt; baba is dyado
False
&#60;/pre&#62;
&#60;p&#62;На ред 0 се създава обект, който съдържа числото 42. На ред 1, обаче няма смисъл да се създава нов обект, тъй като той съществува в паметта и стойността му никога не може да бъде променена (42 си е 42 дори и атомна бомба да направи всички теменужки оранжеви). Тогава Python просто насочва името &#60;code&#62;dyado&#60;/code&#62; към вече създадения обект, към който по чиста случайност сочи и &#60;code&#62;baba&#60;/code&#62;. Заради това &#60;code&#62;is&#60;/code&#62; ти връща истина.&#60;/p&#62;
&#60;p&#62;Във втория случай Python обаче не си позволява такива волности и при двете присвоявания създава нови и различни обекти. Не защото не иска да пести ресурси &#38;mdash; просто ако насочи и двете имена към един и същи обект, когато променим обекта зад едното, ще променим обекта и зад другото, а ние искаме те да си живеят отделно и независимо.
&#60;/p&#62;</description>
</item>
<item>
<title>aquarius on "оператори is и =="</title>
<link>http://oldfmi.py-bg.net/forums/topic/10#post-58</link>
<pubDate>Mon, 19 Mar 2007 15:07:39 +0000</pubDate>
<dc:creator>aquarius</dc:creator>
<guid isPermaLink="false">58@http://oldfmi.py-bg.net/forums/</guid>
<description>&#60;p&#62;Не, различни са. Ако ми каже</description>
</item>
<item>
<title>ObiWan on "оператори is и =="</title>
<link>http://oldfmi.py-bg.net/forums/topic/10#post-55</link>
<pubDate>Mon, 19 Mar 2007 14:06:27 +0000</pubDate>
<dc:creator>ObiWan</dc:creator>
<guid isPermaLink="false">55@http://oldfmi.py-bg.net/forums/</guid>
<description>&#60;p&#62;Здравейте,&#60;br /&#62;
наскоро попаднах на пример с оператор is и се поразрових из документацията за него. Единственият ред в който е споменат казва че op1 is op2 връща true ако op1 и op2 са един и същ обект. Чудя се какво се има предвид под един и същ обект, малкото тестове които направих показват че различни(като адрес) обекти също връщат true когато имат еднакви стойности, така че единственото ми заключение може да бъде че is е напълно еквивалентно на ==, само че в такъв случай защо ще го включват в езика? Ако някой знае нещо повече по въпроса ще ми е интересно да науча и аз.
&#60;/p&#62;</description>
</item>

</channel>
</rss>
