<?xml version="1.0" encoding="UTF-8"?>

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

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/linearleopard/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя linearleopard]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Tue, 05 May 2026 16:58:01 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Приключения чисел в python и mypy или the numeric tower]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/682272/</guid>
      <link>https://habr.com/ru/articles/682272/?utm_campaign=682272&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fc6/741/f93/fc6741f93374fb89d5622c6050ea0ae1.png" /><p>Если вы когда-нибудь чувствовали, что вы погрязли в совещаниях и обсуждениях, которые всё длятся и длятся, а решения проблемы всё нет, знайте: в mypy есть 5-летний issue, о том что целое число не является числом.</p><p>В статье рассмотрим этот и несколько других забавных примеров того, что допустимо и нет использовать в python с точки зрения mypy и самого интерпретатора.</p> <a href="https://habr.com/ru/articles/682272/?utm_campaign=682272&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Read more</a>]]></description>
      
      <pubDate>Fri, 12 Aug 2022 15:28:52 GMT</pubDate>
      <dc:creator><![CDATA[LinearLeopard]]></dc:creator>
      <category><![CDATA[Python]]></category><category><![CDATA[Программирование]]></category>
      <category><![CDATA[python]]></category><category><![CDATA[mypy]]></category><category><![CDATA[типы данных]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как врать с помощью статистики]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/660269/</guid>
      <link>https://habr.com/ru/articles/660269/?utm_campaign=660269&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/bdc/1ca/b1f/bdc1cab1f39221e0f2abea7563f400cc.jpg" /><p><em>"Существуют три вида лжи: </em></p><p><em>- ложь</em></p><p><em>- наглая ложь</em></p><p><em>- <s>пропаганда</s> статистика</em></p><p><em>- источник цитаты в интернете"</em></p><p><s>Марк Твен</s> (ну или не <a href="https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%B6%D1%8C,_%D0%BD%D0%B0%D0%B3%D0%BB%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B6%D1%8C_%D0%B8_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0" rel="noopener noreferrer nofollow">он</a>)</p><p>В данной статье мы рассмотрим, как можно быстро доказать следующие утверждения, смотря на один и тот же источник данных:</p><p>- Лошади бегают по часовой стрелке быстрее чем против</p><p>- Лошади бегают против часовой стрелки быстрее чем по часовой</p><p>- Лошади бегают на более дальние дистанции быстрее (с большей скоростью), чем на короткие</p><p>- Лошади бегают на более дальние дистанции медленнее (с меньшей скоростью), чем на короткие</p><p>На картинке изображена лошадь на плато (что очень важно для текста статьи)</p><p></p> <a href="https://habr.com/ru/articles/660269/?utm_campaign=660269&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Read more</a>]]></description>
      
      <pubDate>Tue, 12 Apr 2022 06:32:02 GMT</pubDate>
      <dc:creator><![CDATA[LinearLeopard]]></dc:creator>
      <category><![CDATA[Python]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Визуализация данных]]></category>
      <category><![CDATA[python]]></category><category><![CDATA[статистика]]></category><category><![CDATA[визуализация данных]]></category><category><![CDATA[анализ данных]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Zython (python-wrapper для minizinc) после года разработки]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/649951/</guid>
      <link>https://habr.com/ru/articles/649951/?utm_campaign=649951&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/496/8a4/96e/4968a496e2c022c4911e2dc3663ebda6.png" /><p>Более года назад я начал создавать оболочку python для <a href="https://www.minizinc.org/" rel="noopener noreferrer nofollow">minizinc</a>. Это, пожалуй, самый популярный инструмент <a href="https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2_%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%D1%85" rel="noopener noreferrer nofollow">программирования в ограничениях</a>. Вы можете найти больше информации о том, что такое программирование с ограничениями, minizinc, для чего они используются в моей <a href="https://habr.com/en/post/537492/" rel="noopener noreferrer nofollow">предыдущей статье</a>.</p><p>В выпуске в январе 2021 года zython поддерживал объявление переменных и параметров, массивы, все типы решения (удовлетворение, максимизация, минимизация), множество предопределенных операций и ограничений (и, конечно, CI). Он мог решить ряд моделей, некоторые из которых были указаны в <a href="https://zython.readthedocs.io/en/latest/" rel="noopener noreferrer nofollow">документации</a>.</p><p>Но также в zython отсутствовали некоторые функции minizinc: поддержка вещественного типа (float), а так же множеств и типов перечеслений (enum). Я начал с поддержки float. </p> <a href="https://habr.com/ru/articles/649951/?utm_campaign=649951&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 06 Feb 2022 09:27:27 GMT</pubDate>
      <dc:creator><![CDATA[LinearLeopard]]></dc:creator>
      <category><![CDATA[Python]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Искусственный интеллект]]></category>
      <category>python</category><category>minizinc</category><category>constraint programming</category><category>zython</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Ещё одна статья о декораторах в python, или немного о том, как они работают и как они могут поменять синтаксис языка]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/587066/</guid>
      <link>https://habr.com/ru/articles/587066/?utm_campaign=587066&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/8a7/96a/b24/8a796ab24555958d635500a9e644e805.png" /><p>Декораторы в python являются одной из самых часто используемых возможностей языка. Множество библиотек и, особенно, веб-фреймворков предоставляют свой функционал в виде декораторов. У неопытного python разработчика уйдёт не так уж много времени, чтобы разобраться, как написать свой декоратор, благо существует огромное количество учебников и примеров, а опытный разработчик уже не раз писал свои декораторы, казалось бы, что ещё можно добавить и написать о них?</p><p>Я постараюсь раскрыть информацию о том, как работают стандартные декораторы <code>staticmethod</code>, <code>classmethod</code>, а так же сам интерпретатор python, как писать декораторы, принимающие аргументы без дважды вложенных функций, ну, и наконец, как немного поменять синтаксис python.</p> <a href="https://habr.com/ru/articles/587066/?utm_campaign=587066&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Read more</a>]]></description>
      
      <pubDate>Tue, 02 Nov 2021 19:16:17 GMT</pubDate>
      <dc:creator><![CDATA[LinearLeopard]]></dc:creator>
      <category><![CDATA[Python]]></category><category><![CDATA[Программирование]]></category>
      <category><![CDATA[декоратор]]></category><category><![CDATA[декораторы]]></category><category><![CDATA[синтаксис]]></category><category><![CDATA[python]]></category><category><![CDATA[реализация]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Constraint Programming или как решить задачу коммивояжёра, просто описав её]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/537492/</guid>
      <link>https://habr.com/ru/articles/537492/?utm_campaign=537492&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f81/c7c/7d2/f81c7c7d26c23f924d962f324319a7a7.png" /><p>Пожалуй, наиболее популярной парадигмой программирования является императивное программирование, но это не единственный вид программирования, широки известны функциональное и логическое программирование. Constraint Programming (Программирование в ограничениях/Ограниченное программирование) не так популярно. Но это очень мощный инструмент для решения комбинаторных задач. Вместо реализации алгоритма, который решает задачу, с последующей тратой кучи времени на его отладку, рефакторинг и оптимизацию, программирование с ограничениями позволяет вам просто описать модель в специальном синтаксисе, а особая программа (решатель) найдет решение для вас (или скажет, если их нет). Впечатляет не правда ли? Мне кажется, каждый программист должен знать о такой возможности. </p> <a href="https://habr.com/ru/articles/537492/?utm_campaign=537492&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Read more</a>]]></description>
      
      <pubDate>Fri, 15 Jan 2021 10:27:39 GMT</pubDate>
      <dc:creator><![CDATA[LinearLeopard]]></dc:creator>
      <category><![CDATA[Python]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Искусственный интеллект]]></category>
      <category>minizinc</category><category>python</category><category>constraint programming</category><category>программирование</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Реализация строкового типа в CPython]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/480324/</guid>
      <link>https://habr.com/ru/articles/480324/?utm_campaign=480324&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Продолжу неспешный разбор реализации базовых типов в CPython, ранее были рассмотрены <a href="https://habr.com/en/post/432996/">словари</a> и <a href="https://habr.com/en/post/455114/">целые числа</a>. Тем, кто думает, что в их реализации не может быть ничего интересного и хитрого, рекомендуется приобщиться к данным статьям. Те, же, кто уже их прочёл, знают, что CPython хранит в себе множество интересностей и особенностей реализации. Их может быть полезно знать при написании своих скриптов, так и в качестве пособия по архитектурным и алгоритмическим решениям. Не являются исключением здесь и строки.<br>
<br>
<img src="https://habrastorage.org/webt/3m/lq/kc/3mlqkcmwvt31uagvuvhdqek1rp4.png"><br> <a href="https://habr.com/ru/articles/480324/?utm_campaign=480324&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Sat, 28 Dec 2019 19:16:14 GMT</pubDate>
      <dc:creator><![CDATA[LinearLeopard]]></dc:creator>
      <category><![CDATA[Программирование]]></category><category><![CDATA[Python]]></category>
      <category><![CDATA[python]]></category><category><![CDATA[realization]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Реализация целого типа в CPython]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/455114/</guid>
      <link>https://habr.com/ru/articles/455114/?utm_campaign=455114&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[На Хабре уже были статьи о подробностях реализации <a href="https://habr.com/en/company/ruvds/blog/441568/">менеджера памяти</a> CPython, <a href="https://habr.com/en/company/ruvds/blog/442516/">Pandas</a>, я написал статью про <a href="https://habr.com/en/post/432996/">реализацию словаря</a>.<br>
<br>
Казалось бы, что можно написать про обычный целочисленный тип? Однако тут не всё так просто и целочисленный тип не такой уж и очевидный.<br>
<br>
Если вам интересно, почему <a href="https://stackoverflow.com/questions/37053379/times-two-faster-than-bit-shift-for-python-3-x-integers">x * 2 быстрее x &lt;&lt; 1</a>. <br>
<br>
И как провернуть следующий трюк:<br>
<br>
<pre><code class="python">&gt;&gt;&gt; 42 == 4
True
&gt;&gt;&gt; 42
4
&gt;&gt;&gt; 1 + 41
4
</code></pre><br>
То вам стоит ознакомиться с данной статьёй.<br> <a href="https://habr.com/ru/articles/455114/?utm_campaign=455114&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Mon, 24 Jun 2019 19:22:20 GMT</pubDate>
      <dc:creator><![CDATA[LinearLeopard]]></dc:creator>
      <category><![CDATA[Программирование]]></category><category><![CDATA[Python]]></category>
      <category><![CDATA[python]]></category><category><![CDATA[python3]]></category><category><![CDATA[реализация]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Немного внутренностей словарей в CPython (и PyPy)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/432996/</guid>
      <link>https://habr.com/ru/articles/432996/?utm_campaign=432996&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Внутреннее устройство словарей в Python не ограничивается одними лишь бакетами и закрытым хешированием. Это удивительный мир разделяемых ключей, кеширования хешей, DKIX_DUMMY и быстрого сравнения, которое можно сделать ещё быстрее (ценой бага с примерной вероятностью в 2^-64).<br/>
<br/>
Если вы не знаете количество элементов в только что созданном словаре, сколько памяти расходуется на каждый элемент, почему теперь (CPython 3.6 и далее) словарь реализован двумя массивами и как это связано с сохранением порядка вставки, или просто не смотрели презентацию Raymond Hettinger «Modern Python Dictionaries A confluence of a dozen great ideas». Тогда добро пожаловать.<br/>
<br/>
<div class="oembed"><div><div style="left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.2493%;"><iframe src="https://www.youtube.com/embed/p33CVV29OG8?rel=0&amp;showinfo=1&amp;hl=en-US" style="border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;" allowfullscreen scrolling="no"></iframe></div></div></div><br/>
Впрочем, люди знакомые с лекцией, тоже могут найти немного подробностей и свежей информации, и для совсем новичков, не знакомых с бакетами и закрытым хешированием, статья тоже будет интересна. <br/>
 <a href="https://habr.com/ru/articles/432996/?utm_campaign=432996&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut"></a>]]></description>
      
      <pubDate>Thu, 13 Dec 2018 19:36:54 GMT</pubDate>
      <dc:creator><![CDATA[LinearLeopard]]></dc:creator>
      <category><![CDATA[Программирование]]></category><category><![CDATA[Python]]></category>
      <category><![CDATA[python]]></category><category><![CDATA[python3]]></category><category><![CDATA[внутреннее устройство]]></category><category><![CDATA[словарь]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Интересности и полезности python. Часть 3]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/422951/</guid>
      <link>https://habr.com/ru/articles/422951/?utm_campaign=422951&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В <a href="https://habr.com/post/422311/">предыдущих частях</a> мы рассмотрели срезы, распаковку\упаковку коллекций и некоторые особенности булевых операций и типов.<br>
<br>
В <a href="https://habr.com/post/422311/#comment_19078215">комментариях</a> упоминалась возможность умножения коллекций на скаляр:<br>
<br>
<pre><code class="python">a = [0] * 3
s = 'a' * 2
print(a, s)  # -&gt; [0, 0, 0], 'aa'
</code></pre><br>
Более-менее опытный разработчик на языке python знает, что в нём отсутствует механизм <a href="https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%B8_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8">копирования при записи</a><br>
<br>
<pre><code class="python">a = [0]
b = a
b[0] = 1
print(a, b)  # -&gt; [1], [1]
</code></pre><br>
Что же тогда выведет следующий код?<br>
<br>
<pre><code class="python">b = a * 2
b[0] = 2
print(a, b)
</code></pre> <a href="https://habr.com/ru/articles/422951/?utm_campaign=422951&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Tue, 11 Sep 2018 11:39:52 GMT</pubDate>
      <dc:creator><![CDATA[LinearLeopard]]></dc:creator>
      <category><![CDATA[Программирование]]></category><category><![CDATA[Python]]></category>
      <category><![CDATA[python]]></category><category><![CDATA[полезные приёмы]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Интересности и полезности python. Часть 2]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/422311/</guid>
      <link>https://habr.com/ru/articles/422311/?utm_campaign=422311&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[В <a href="https://habr.com/post/421993">предыдущей статье</a> мы рассмотрели несколько интересных моментов языка python, разумеется, одной статьёй они не исчерпываются, поэтому продолжим.<br>
<br>
В <a href="https://habr.com/post/421993/#comment_19061195">одном из комментариев </a> рассматривался следующий код:<br>
<br>
<pre><code class="python">SEX = 'Female', 'Male'
sex = SEX[True]  # -&gt; Male
sex = SEX[False] # -&gt; Female
</code></pre> <a href="https://habr.com/ru/articles/422311/?utm_campaign=422311&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Tue, 04 Sep 2018 20:13:34 GMT</pubDate>
      <dc:creator><![CDATA[LinearLeopard]]></dc:creator>
      <category><![CDATA[Python]]></category><category><![CDATA[Программирование]]></category>
      <category><![CDATA[python]]></category><category><![CDATA[полезные приёмы]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Интересности и полезности python]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/421993/</guid>
      <link>https://habr.com/ru/articles/421993/?utm_campaign=421993&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Я уже несколько лет программирую на python, однако, недавно осознал, что множество полезных приёмов и интересных моментов прошли мимо меня, возможно, я не один такой, поэтому решил перечислить их здесь, надеюсь, данные приёмы пригодятся кому-то в работе или побудят познакомиться с этим языком поближе.<br> <a href="https://habr.com/ru/articles/421993/?utm_campaign=421993&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше →</a>]]></description>
      
      <pubDate>Sat, 01 Sep 2018 11:37:12 GMT</pubDate>
      <dc:creator><![CDATA[LinearLeopard]]></dc:creator>
      <category><![CDATA[Программирование]]></category><category><![CDATA[Python]]></category>
      <category><![CDATA[python]]></category><category><![CDATA[полезные приёмы]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
