{"id":3016,"date":"2025-09-21T05:09:44","date_gmt":"2025-09-21T03:09:44","guid":{"rendered":"https:\/\/davidka.net\/ru\/?p=3016"},"modified":"2025-09-22T02:05:12","modified_gmt":"2025-09-22T00:05:12","slug":"capturing-stdout-without-external-libraries","status":"publish","type":"post","link":"https:\/\/ru.davidka.net\/ru\/capturing-stdout-without-external-libraries\/","title":{"rendered":"\ud83e\uddf2 \u041a\u0430\u043a \u00ab\u043f\u043e\u0439\u043c\u0430\u0442\u044c\u00bb print() \u0432 Python: \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c stdout \u0431\u0435\u0437 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a"},"content":{"rendered":"\n<p class=\"has-neve-link-color-color has-text-color has-link-color has-medium-font-size wp-elements-70c3cfb94fecd260d3b2f0198263bb62 wp-block-paragraph\">\u0412 Python \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0447\u0435\u0440\u0435\u0437 <code class=\"\" data-line=\"\">print()<\/code>.<br>\u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f <strong>\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>, <strong>\u043e\u0442\u043b\u0430\u0434\u043a\u0438<\/strong>, <strong>\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong> \u0438\u043b\u0438 \u043f\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u00ab\u0448\u0443\u043c\u043d\u043e\u0433\u043e\u00bb \u0432\u044b\u0432\u043e\u0434\u0430.<br>\u042f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u043e\u043b\u044c\u043a\u043e <strong>\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443<\/strong> \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div id=\"rtoc-mokuji-wrapper\" class=\"rtoc-mokuji-content frame2 preset1 animation-fade rtoc_open default\" data-id=\"3016\" data-theme=\"Neve - Davidka\">\n\t\t\t<div id=\"rtoc-mokuji-title\" class=\"rtoc_btn_none rtoc_left\">\n\t\t\t\n\t\t\t<span>In Questo Articolo<\/span>\n\t\t\t<\/div><ol class=\"rtoc-mokuji decimal_ol level-1\"><li class=\"rtoc-item\"><a href=\"#rtoc-1\">\ud83e\udde9 \u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0445 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432 \u0432 Python<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-2\">\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440?<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-3\">\u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-4\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code class=\"\" data-line=\"\">@contextmanager<\/code> \u0438\u0437 <code class=\"\" data-line=\"\">contextlib<\/code><\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-5\">\u26a1 \u041a\u0440\u0430\u0442\u043a\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430: \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b \u0434\u043b\u044f stdout\/stderr<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-6\">\ud83d\udce6 \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stdout<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-7\">\ud83d\udd27 \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stderr \u0438\u043b\u0438 \u043e\u0431\u043e\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-8\">\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stderr<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-9\">\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stdout + stderr<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-10\">\ud83d\udd00 \u0420\u0435\u0436\u0438\u043c Tee: \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-11\">\ud83d\udce6 \u041f\u043e\u043b\u043d\u044b\u0439 \u0444\u0430\u0439\u043b: <code class=\"\" data-line=\"\">stdout_capture.py<\/code><\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-12\">\u2705 \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-13\">\u26a0\ufe0f \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043e\u0432\u0435\u0442\u044b \u0438 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-14\">1\ufe0f\u20e3 \u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u044b\u0432\u043e\u0434<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-15\">2\ufe0f\u20e3 \u0412\u044b\u0432\u043e\u0434 \u0438\u0437 \u043f\u043e\u0434\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-16\">3\ufe0f\u20e3 \u041f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-17\">4\ufe0f\u20e3 \u041a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Tee<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-18\">5\ufe0f\u20e3 \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-19\">6\ufe0f\u20e3 \u0418\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-20\">7\ufe0f\u20e3 \u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a><\/li><\/ul><\/li><\/ol><\/div><h2 id=\"rtoc-1\"  class=\"wp-block-heading\">\ud83e\udde9 \u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0445 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432 \u0432 Python<\/h2>\n\n\n\n<h3 id=\"rtoc-2\"  class=\"wp-block-heading\">\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440<\/strong> \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e.<br>\u041e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 <strong>\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e<\/strong> \u0438 <strong>\u043e\u0447\u0438\u0441\u0442\u043a\u0443<\/strong> \u0432\u043e\u043a\u0440\u0443\u0433 \u0431\u043b\u043e\u043a\u0430 \u043a\u043e\u0434\u0430.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u041f\u0440\u0438\u043c\u0435\u0440: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">with open(&quot;file.txt&quot;, &quot;w&quot;) as f:\n    f.write(&quot;\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0438\u0440!&quot;)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0430: \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 id=\"rtoc-3\"  class=\"wp-block-heading\">\u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0430<\/strong> \u2014 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u0438<\/li>\n\n\n\n<li><strong>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445<\/strong> \u2014 \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u0445<\/li>\n\n\n\n<li><strong>\u0427\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u0434<\/strong> \u2014 \u043b\u043e\u0433\u0438\u043a\u0430 setup\/teardown \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435<\/li>\n\n\n\n<li><strong>\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/strong> \u2014 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a, \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 stdout<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 id=\"rtoc-4\"  class=\"wp-block-heading\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <code class=\"\" data-line=\"\">@contextmanager<\/code> \u0438\u0437 <code class=\"\" data-line=\"\">contextlib<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0414\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440 <code class=\"\" data-line=\"\">@contextmanager<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b \u0447\u0435\u0440\u0435\u0437 <strong>\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">from contextlib import contextmanager\n\n@contextmanager\ndef my_context():\n    print(&quot;\u0412\u0445\u043e\u0434\u0438\u043c \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442&quot;)\n    resource = &quot;\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441&quot;\n    try:\n        yield resource\n    finally:\n        print(&quot;\u0412\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430&quot;)\n\nwith my_context() as res:\n    print(&quot;\u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430:&quot;, res)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0412\u044b\u0432\u043e\u0434:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">\u0412\u0445\u043e\u0434\u0438\u043c \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\n\u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430: \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441\n\u0412\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <strong>\u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u041a\u043e\u0434 \u0434\u043e <code class=\"\" data-line=\"\">yield<\/code> \u2192 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435<\/li>\n\n\n\n<li>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 <code class=\"\" data-line=\"\">yield<\/code> \u2192 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0447\u0435\u0440\u0435\u0437 <code class=\"\" data-line=\"\">as res<\/code><\/li>\n\n\n\n<li>\u041a\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 <code class=\"\" data-line=\"\">yield<\/code> \u2192 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c <strong>\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f<\/strong>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 <code class=\"\" data-line=\"\">stdout<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-5\"  class=\"wp-block-heading\">\u26a1 \u041a\u0440\u0430\u0442\u043a\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430: \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b \u0434\u043b\u044f stdout\/stderr<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u0417\u0430\u0434\u0430\u0447\u0430 \/ \u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/th><th>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440<\/th><\/tr><\/thead><tbody><tr><td>\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0442\u043e\u043b\u044c\u043a\u043e <code class=\"\" data-line=\"\">print<\/code><\/td><td><code class=\"\" data-line=\"\">capture_stdout<\/code><\/td><\/tr><tr><td>\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0448\u0438\u0431\u043e\u043a\/\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/td><td><code class=\"\" data-line=\"\">capture_stderr<\/code><\/td><\/tr><tr><td>\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stdout \u0438 stderr \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e<\/td><td><code class=\"\" data-line=\"\">capture_output<\/code><\/td><\/tr><tr><td>\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0441 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c<\/td><td><code class=\"\" data-line=\"\">capture_stdout_tee<\/code> \/ <code class=\"\" data-line=\"\">capture_output_tee<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-6\"  class=\"wp-block-heading\">\ud83d\udce6 \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stdout<\/h2>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">from contextlib import contextmanager\nimport sys, io\n\n@contextmanager\ndef capture_stdout():\n    old_stdout = sys.stdout\n    sys.stdout = buffer = io.StringIO()\n    try:\n        yield buffer\n    finally:\n        sys.stdout = old_stdout\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">with capture_stdout() as out:\n    print(&quot;\u042d\u0442\u043e\u0442 \u0432\u044b\u0432\u043e\u0434 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0447\u0435\u043d&quot;)\n\nprint(&quot;\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0447\u0435\u043d\u043e:&quot;, out.getvalue())\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-7\"  class=\"wp-block-heading\">\ud83d\udd27 \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stderr \u0438\u043b\u0438 \u043e\u0431\u043e\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432<\/h2>\n\n\n\n<h3 id=\"rtoc-8\"  class=\"wp-block-heading\">\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stderr<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">@contextmanager\ndef capture_stderr():\n    old_stderr = sys.stderr\n    sys.stderr = buffer = io.StringIO()\n    try:\n        yield buffer\n    finally:\n        sys.stderr = old_stderr\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-9\"  class=\"wp-block-heading\">\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stdout + stderr<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">@contextmanager\ndef capture_output():\n    old_stdout = sys.stdout\n    old_stderr = sys.stderr\n    sys.stdout = sys.stderr = buffer = io.StringIO()\n    try:\n        yield buffer\n    finally:\n        sys.stdout = old_stdout\n        sys.stderr = old_stderr\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-10\"  class=\"wp-block-heading\">\ud83d\udd00 \u0420\u0435\u0436\u0438\u043c Tee: \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e<\/h2>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">class Tee(io.StringIO):\n    def __init__(self, original):\n        super().__init__()\n        self.original = original\n\n    def write(self, text):\n        self.original.write(text)\n        super().write(text)\n\n    def flush(self):\n        self.original.flush()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">@contextmanager\ndef capture_stdout_tee():\n    old_stdout = sys.stdout\n    sys.stdout = tee = Tee(old_stdout)\n    try:\n        yield tee\n    finally:\n        sys.stdout = old_stdout\n\n@contextmanager\ndef capture_output_tee():\n    old_stdout = sys.stdout\n    old_stderr = sys.stderr\n    sys.stdout = sys.stderr = tee = Tee(old_stdout)\n    try:\n        yield tee\n    finally:\n        sys.stdout = old_stdout\n        sys.stderr = old_stderr\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">with capture_stdout_tee() as out:\n    print(&quot;\u0412\u0438\u0434\u043d\u043e \u0438 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0447\u0435\u043d\u043e&quot;)\n\nprint(&quot;\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 Tee:&quot;, out.getvalue())\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-11\"  class=\"wp-block-heading\">\ud83d\udce6 \u041f\u043e\u043b\u043d\u044b\u0439 \u0444\u0430\u0439\u043b: <code class=\"\" data-line=\"\">stdout_capture.py<\/code><\/h2>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">&quot;&quot;&quot;\n\u0423\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0430 stdout \u0438 stderr \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0445 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u043e\u0432.\n\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442:\n- \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stdout\n- \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stderr\n- \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\n- \u0440\u0435\u0436\u0438\u043c Tee\n&quot;&quot;&quot;\n\nimport sys, io\nfrom contextlib import contextmanager\n\n@contextmanager\ndef capture_stdout():\n    old_stdout = sys.stdout\n    sys.stdout = buffer = io.StringIO()\n    try: yield buffer\n    finally: sys.stdout = old_stdout\n\n@contextmanager\ndef capture_stderr():\n    old_stderr = sys.stderr\n    sys.stderr = buffer = io.StringIO()\n    try: yield buffer\n    finally: sys.stderr = old_stderr\n\n@contextmanager\ndef capture_output():\n    old_stdout = sys.stdout\n    old_stderr = sys.stderr\n    sys.stdout = sys.stderr = buffer = io.StringIO()\n    try: yield buffer\n    finally:\n        sys.stdout = old_stdout\n        sys.stderr = old_stderr\n\nclass Tee(io.StringIO):\n    def __init__(self, original):\n        super().__init__()\n        self.original = original\n    def write(self, text):\n        self.original.write(text)\n        super().write(text)\n    def flush(self):\n        self.original.flush()\n\n@contextmanager\ndef capture_stdout_tee():\n    old_stdout = sys.stdout\n    sys.stdout = tee = Tee(old_stdout)\n    try: yield tee\n    finally: sys.stdout = old_stdout\n\n@contextmanager\ndef capture_output_tee():\n    old_stdout = sys.stdout\n    old_stderr = sys.stderr\n    sys.stdout = sys.stderr = tee = Tee(old_stdout)\n    try: yield tee\n    finally:\n        sys.stdout = old_stdout\n        sys.stderr = old_stderr\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-12\"  class=\"wp-block-heading\">\u2705 \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/h2>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">from stdout_capture import capture_stdout, capture_output, capture_stdout_tee\n\ndef test_func():\n    print(&quot;\u041f\u0440\u0438\u0432\u0435\u0442 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438&quot;)\n\n# \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stdout\nwith capture_stdout() as out:\n    test_func()\nprint(&quot;\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0447\u0435\u043d\u043e stdout:&quot;, out.getvalue())\n\n# \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 stdout + stderr\ntry:\n    with capture_output() as out:\n        print(&quot;\u0427\u0442\u043e-\u0442\u043e&quot;)\n        raise Exception(&quot;\u041e\u0439!&quot;)\nexcept Exception:\n    pass\nprint(&quot;\u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0447\u0435\u043d\u043e output:&quot;, out.getvalue())\n\n# \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\nwith capture_stdout_tee() as out:\n    print(&quot;\u0412\u0438\u0434\u043d\u043e \u0418 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0447\u0435\u043d\u043e&quot;)\nprint(&quot;\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 Tee:&quot;, out.getvalue())\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-13\"  class=\"wp-block-heading\">\u26a0\ufe0f \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043e\u0432\u0435\u0442\u044b \u0438 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438<\/h2>\n\n\n\n<h3 id=\"rtoc-14\"  class=\"wp-block-heading\">1\ufe0f\u20e3 \u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u044b\u0432\u043e\u0434<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">io.StringIO<\/code> \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u0430\u0445.<\/li>\n\n\n\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">import sys, tempfile\n\nwith tempfile.TemporaryFile(mode=&#039;w+&#039;) as tmp:\n    old_stdout = sys.stdout\n    sys.stdout = tmp\n    try:\n        print(&quot;\u041c\u043d\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0445...&quot;)\n        tmp.seek(0)\n        captured = tmp.read()\n    finally:\n        sys.stdout = old_stdout\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-15\"  class=\"wp-block-heading\">2\ufe0f\u20e3 \u0412\u044b\u0432\u043e\u0434 \u0438\u0437 \u043f\u043e\u0434\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">capture_stdout()<\/code> <strong>\u043d\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442<\/strong> \u0432\u044b\u0432\u043e\u0434 \u043f\u043e\u0434\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432.<\/li>\n\n\n\n<li>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 <code class=\"\" data-line=\"\">subprocess.PIPE<\/code>:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">import subprocess\nresult = subprocess.run(&#091;&quot;ls&quot;, &quot;-la&quot;], capture_output=True, text=True)\nprint(result.stdout)\n<\/code><\/pre>\n\n\n\n<h3 id=\"rtoc-16\"  class=\"wp-block-heading\">3\ufe0f\u20e3 \u041f\u043e\u0442\u043e\u043a\u043e\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">sys.stdout<\/code> \u0438 <code class=\"\" data-line=\"\">sys.stderr<\/code> \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u2192 \u0438\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0430 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"rtoc-17\"  class=\"wp-block-heading\">4\ufe0f\u20e3 \u041a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Tee<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c<\/li>\n\n\n\n<li>\u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 CLI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/li>\n\n\n\n<li>\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435<\/li>\n<\/ul>\n\n\n\n<h3 id=\"rtoc-18\"  class=\"wp-block-heading\">5\ufe0f\u20e3 \u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0412\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0439\u0442\u0435 <code class=\"\" data-line=\"\">sys.stdout<\/code>\/<code class=\"\" data-line=\"\">sys.stderr<\/code> \u0432 <code class=\"\" data-line=\"\">finally<\/code><\/li>\n<\/ul>\n\n\n\n<h3 id=\"rtoc-19\"  class=\"wp-block-heading\">6\ufe0f\u20e3 \u0418\u0437\u0431\u0435\u0433\u0430\u0439\u0442\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043e\u0434\u0438\u043d \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"rtoc-20\"  class=\"wp-block-heading\">7\ufe0f\u20e3 \u041b\u0443\u0447\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Unit-\u0442\u0435\u0441\u0442\u044b \u2192 <code class=\"\" data-line=\"\">capture_stdout()<\/code> \u0438\u043b\u0438 <code class=\"\" data-line=\"\">capture_output()<\/code><\/li>\n\n\n\n<li>\u0420\u0443\u0447\u043d\u0430\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u2192 \u0440\u0435\u0436\u0438\u043c Tee<\/li>\n\n\n\n<li>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 <strong>\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0443\u0444\u0435\u0440\u0430<\/strong>, \u0430 \u043d\u0435 \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u044b<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412 Python \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0447\u0435\u0440\u0435\u0437 print().<br \/>\n\u042d\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u00ab\u0448\u0443\u043c\u043d\u043e\u0433\u043e\u00bb \u0432\u044b\u0432\u043e\u0434\u0430.<br \/>\n\u041c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[610,1],"tags":[],"class_list":["post-3016","post","type-post","status-publish","format-standard","hentry","category-python-basics","category-uncategorized"],"acf":[],"_links":{"self":[{"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/posts\/3016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/comments?post=3016"}],"version-history":[{"count":0,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/posts\/3016\/revisions"}],"wp:attachment":[{"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/media?parent=3016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/categories?post=3016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ru.davidka.net\/ru\/wp-json\/wp\/v2\/tags?post=3016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}