{"id":426902,"date":"2024-07-23T09:02:54","date_gmt":"2024-07-23T09:02:54","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=426902"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=426902","title":{"rendered":"<span>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u00a0\u2014 \u043d\u0435\u00a0\u0442\u0440\u043e\u0436\u044c: \u0437\u0430\u0447\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c Python \u0432\u00a0\u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/add\/800\/e7f\/add800e7f1e6ef5ee4581d9da9b39648.png\" width=\"1560\" height=\"880\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/add\/800\/e7f\/add800e7f1e6ef5ee4581d9da9b39648.png\"\/><\/figure>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439 \u042f\u0445\u043d\u0438\u0446\u043a\u0438\u0439. \u042f \u043f\u0438\u0448\u0443 \u043d\u0430\u00a0Python \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0448\u0435\u0441\u0442\u0438 \u043b\u0435\u0442, \u0442\u0435\u0445\u043b\u0438\u0434 \u0432\u00a0\u042f\u043d\u0434\u0435\u043a\u0441 \u0422\u0430\u043a\u0441\u0438, Python\u2011\u0435\u0432\u0430\u043d\u0433\u0435\u043b\u0438\u0441\u0442 \u0438 \u0447\u043b\u0435\u043d Python\u2011\u043a\u043e\u043c\u0438\u0442\u0435\u0442\u0430 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 (\u0430\u043d\u0430\u043b\u043e\u0433 Python Steering Council). <\/p>\n<p>\u0427\u0435\u043b\u043e\u0432\u0435\u043a \u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0437\u0432\u0451\u0437\u0434 \u0441\u00a0\u0413\u0438\u0442\u0445\u0430\u0431\u0430 \u043d\u0435\u00a0\u0445\u0432\u0430\u0442\u0430\u043b: \u0434\u043e\u00a0\u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u044f \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0432\u00a0\u0422\u0430\u043a\u0441\u0438, \u044f \u043c\u0438\u0440\u043d\u043e \u043f\u0438\u0441\u0430\u043b \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0431\u044d\u043a\u0435\u043d\u0434\u044b \u043d\u0430\u00a0Python. \u0410\u00a0\u043f\u043e\u0442\u043e\u043c \u043c\u0435\u043d\u044f \u043f\u0440\u043e\u0440\u0432\u0430\u043b\u043e: \u043a\u043e\u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438, CI\/CD, \u043a\u0443\u0447\u0438 \u0442\u0435\u0441\u0442\u043e\u0432, \u043c\u043e\u043d\u043e\u0440\u0435\u043f\u0430 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435. \u0412\u043e\u0442 \u0442\u0443\u0442\u2011\u0442\u043e \u043c\u043e\u044f \u043f\u0438\u0442\u043e\u043d\u0438\u0447\u044c\u044f \u0434\u0443\u0448\u0430 \u0438 \u0432\u043e\u0441\u043f\u0440\u044f\u043b\u0430. \u0420\u0435\u0448\u0438\u043b \u044f \u0432\u0441\u0451 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e\u00a0\u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f, \u0430\u00a0\u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f\u00a0\u2014 \u043f\u043e\u0434\u0432\u0438\u0433\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c. \u0418\u0437\u00a0\u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0448\u0435\u043b \u043c\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437.<\/p>\n<p>\u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u0448\u0438\u0440\u043e\u043a\u043e \u043e\u0441\u0432\u0435\u0449\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u0435\u0442 \u0438 \u043a\u0443\u0434\u0430 \u0432\u00a0\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f Python. \u041f\u043e\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u043a\u0430\u043a\u00a0\u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0449\u0451 \u0438\u0437\u0443\u0447\u0430\u044e\u0442 Python, \u0442\u0430\u043a \u0438 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0443\u043c\u0430\u044e\u0442 \u043e\u00a0\u044f\u0437\u044b\u043a\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u00a0\u0434\u043e\u043b\u0433\u043e\u0441\u0440\u043e\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435.<\/p>\n<h2>\u0422\u0430\u043a \u0437\u0430\u0447\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c Python?<\/h2>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043e\u0442\u0432\u0435\u0447\u0443 \u043d\u0430\u00a0\u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u00a0\u0433\u043e\u043b\u043e\u0432\u0435 \u0443\u00a0\u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f. \u0414\u0435\u043b\u043e \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d \u0441\u0440\u0435\u0434\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. Python \u0441\u00a0\u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u0434\u043e\u0433\u043e\u043d\u044f\u043b \u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0437\u044b\u043a\u0438, \u0438 \u0432 2015-\u043c \u043f\u043e\u043f\u0430\u043b \u0432\u00a0\u0442\u043e\u043f-3\u00a0\u0438 \u0434\u043e\u00a0\u0441\u0438\u0445 \u043f\u043e\u0440 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>Python \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u043e\u043f\u0430\u0445<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/da8\/265\/ed0\/da8265ed0296655d37b37710c09d52ab.png\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/da8\/265\/ed0\/da8265ed0296655d37b37710c09d52ab.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6e7\/d5d\/2b9\/6e7d5d2b9b67c1947c35e8df9963c500.png\" alt=\"\u0422\u043e\u043f \u044f\u0437\u044b\u043a\u043e\u0432, \u043f\u043e \u0432\u0435\u0440\u0441\u0438\u0438 GitHub, \u043d\u0430\u00a0\u0434\u0435\u043a\u0430\u0431\u0440\u044c 2023\u00a0\u0433\u043e\u0434\u0430\u00a0\" title=\"\u0422\u043e\u043f \u044f\u0437\u044b\u043a\u043e\u0432, \u043f\u043e \u0432\u0435\u0440\u0441\u0438\u0438 GitHub, \u043d\u0430\u00a0\u0434\u0435\u043a\u0430\u0431\u0440\u044c 2023\u00a0\u0433\u043e\u0434\u0430\u00a0\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6e7\/d5d\/2b9\/6e7d5d2b9b67c1947c35e8df9963c500.png\"\/><\/p>\n<div><figcaption>\u0422\u043e\u043f \u044f\u0437\u044b\u043a\u043e\u0432, <a href=\"https:\/\/github.blog\/2023-11-08-the-state-of-open-source-and-ai\/#the-most-popular-programming-languages\">\u043f\u043e \u0432\u0435\u0440\u0441\u0438\u0438 GitHub<\/a>, \u043d\u0430\u00a0\u0434\u0435\u043a\u0430\u0431\u0440\u044c 2023\u00a0\u0433\u043e\u0434\u0430\u00a0<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/682\/90d\/84d\/68290d84dd1d2155ad307716943e1024.png\" alt=\"\u0421\u0432\u043e\u0434\u043a\u0430 \u0437\u0430 Q1, 2024\u00a0\u0433\u043e\u0434\" title=\"\u0421\u0432\u043e\u0434\u043a\u0430 \u0437\u0430 Q1, 2024\u00a0\u0433\u043e\u0434\" width=\"1600\" height=\"1041\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/682\/90d\/84d\/68290d84dd1d2155ad307716943e1024.png\"\/><\/p>\n<div><figcaption><a href=\"https:\/\/madnight.github.io\/githut\/#\/stars\/2024\/1\">\u0421\u0432\u043e\u0434\u043a\u0430 \u0437\u0430 Q1, 2024\u00a0\u0433\u043e\u0434<\/a><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f3c\/534\/05f\/f3c53405fc9407d9d18bfadf879c52d8.png\" width=\"1600\" height=\"642\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f3c\/534\/05f\/f3c53405fc9407d9d18bfadf879c52d8.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8e2\/9f1\/955\/8e29f195545082e5df9be3b6cad5ce9a.png\" alt=\"\u0418 \u0441\u043e\u0432\u0441\u0435\u043c \u0441\u0432\u0435\u0436\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430 \u0438\u044e\u043d\u044c 2024\u00a0\u0433\u043e\u0434\u0430, \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c TIOBE\" title=\"\u0418 \u0441\u043e\u0432\u0441\u0435\u043c \u0441\u0432\u0435\u0436\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430 \u0438\u044e\u043d\u044c 2024\u00a0\u0433\u043e\u0434\u0430, \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c TIOBE\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8e2\/9f1\/955\/8e29f195545082e5df9be3b6cad5ce9a.png\"\/><\/p>\n<div><figcaption>\u0418 \u0441\u043e\u0432\u0441\u0435\u043c \u0441\u0432\u0435\u0436\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430 <a href=\"https:\/\/www.tiobe.com\/tiobe-index\/\"><u>\u0438\u044e\u043d\u044c 2024\u00a0\u0433\u043e\u0434\u0430<\/u><\/a>, \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c TIOBE<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u042f\u0437\u044b\u043a \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u0435\u0434\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430, \u043d\u043e\u00a0\u0438 \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0446\u0438\u0439: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Dropbox, Bloomberg, Reddit \u0438 \u0434\u0440\u0443\u0433\u0438\u0445. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c\u00a0\u0431\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c Meta <em>(\u043f\u0440\u0438\u0437\u043d\u0430\u043d\u0430 \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0438\u0441\u0442\u0441\u043a\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439, \u0430\u00a0\u0435\u0451 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b, Facebook \u0438 Instagram, \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b \u043d\u0430\u00a0\u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u0420\u0424)<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f <a href=\"https:\/\/pyfound.blogspot.com\/2022\/03\/meta-deepens-its-investment-in-python.html\">\u0432\u043b\u043e\u0436\u0438\u043b\u0430\u0441\u044c \u0433\u0440\u0430\u043d\u0442\u043e\u043c<\/a> 300\u00a0\u0442\u044b\u0441\u044f\u0447 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u0432\u00a0Python Software Foundation \u0438 \u043f\u0440\u043e\u0434\u043b\u0438\u043b\u0430 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u044e <a href=\"https:\/\/www.youtube.com\/watch?v=nZi74lGz47U\">Developer in Residence<\/a>. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u00a0Python \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u00a0\u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0430\u0439\u0442 PyPI, \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 core\u2011\u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440\u0430\u043c, \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043f\u0443\u043b\u2011\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u044b \u0438 \u0434\u0430\u0436\u0435 \u0432\u0451\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043b\u0438\u0437\u043e\u0432. <\/p>\n<p>\u0412\u00a0Python \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 Python Enhancement Proposal\u00a0\u2014 \u044d\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0413\u041e\u0421\u0422\u044b \u0432\u00a0\u043c\u0438\u0440\u0435 Python. <a href=\"https:\/\/peps.python.org\/\">\u0421\u0430\u043c\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u0439<\/a> \u0438\u0437\u00a0\u043d\u0438\u0445\u00a0\u0431\u044b\u043b \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u00a0\u0434\u0430\u043b\u0451\u043a\u043e\u043c 2000\u00a0\u0433\u043e\u0434\u0443, \u0432\u00a0\u043d\u0451\u043c \u0435\u0441\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u0432\u0441\u0435\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u00a0\u043d\u0438\u0445 \u044f \u0438 \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/097\/bfb\/b14\/097bfbb149e7ea5ea95dfa16d97d38ca.png\" width=\"1800\" height=\"1013\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/097\/bfb\/b14\/097bfbb149e7ea5ea95dfa16d97d38ca.png\"\/><\/figure>\n<p>\u0422\u0430\u043c\u00a0\u0436\u0435 \u0432 <a href=\"https:\/\/peps.python.org\/pep-0602\/\">PEP 602<\/a> \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u0433\u0440\u0430\u0444\u0438\u043a \u0432\u044b\u0445\u043e\u0434\u0430 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0438 \u0441\u0440\u043e\u043a\u0438 \u0438\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438. \u0421\u0435\u0439\u0447\u0430\u0441 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 Python \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0441 3.8\u00a0\u043f\u043e 3.12. \u041d\u043e 3.8\u00a0\u0438 3.9\u00a0\u0432\u044b\u0448\u043b\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u0432\u0435\u0440\u0441\u0438\u044f\u0445 3.10\u00a0\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445. \u0418 \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u0434\u0430\u0436\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u0432\u00a0\u0431\u0435\u0442\u0435\u00a0\u2014 3.13.<\/p>\n<h2>\u042f\u0437\u044b\u043a<\/h2>\n<p>\u0412\u00a0\u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u00a0\u0441\u0430\u043c\u043e\u043c \u044f\u0434\u0440\u0435 Python\u00a0\u2014 \u0435\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435. <\/p>\n<h3>grammar<\/h3>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u0440\u043e\u00a0Python, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442\u0441\u044f <abbr class=\"habraabbr\" title=\"\" data-title=\"&lt;p>&lt;\/p>&#187; data-image=&#187;https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fec\/7bd\/f3e\/fec7bdf3ef36747c9c1de72a54a3fbf4.png&#187; data-abbr=&#187;\u043c\u0435\u043c\u044b \u043f\u0440\u043e\u00a0\u0442\u043e\u0447\u043a\u0443 \u0441\u00a0\u0437\u0430\u043f\u044f\u0442\u043e\u0439 &#187; data-image-width=&#187;941&#8243; data-image-height=&#187;1154&#8243;>\u043c\u0435\u043c\u044b \u043f\u0440\u043e\u00a0\u0442\u043e\u0447\u043a\u0443 \u0441\u00a0\u0437\u0430\u043f\u044f\u0442\u043e\u0439 <\/abbr>\u0438 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043e\u0447\u043a\u0438. \u0423\u00a0\u043d\u0430\u0441 \u044d\u0442\u043e \u043d\u0435\u00a0\u043f\u0440\u0438\u043d\u044f\u0442\u043e\u00a0\u2014 \u043c\u044b \u0432\u0441\u0451 \u0434\u0435\u043b\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0441\u0442\u0443\u043f\u044b. \u041d\u0435\u00a0\u0432\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u00a0Python \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e, \u0430\u00a0\u0432\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445\u00a0\u2014 \u043d\u0435\u0442. <\/p>\n<p>C \u043d\u0435\u0437\u0430\u043f\u0430\u043c\u044f\u0442\u043d\u044b\u0445 \u0432\u0440\u0435\u043c\u0451\u043d \u0432\u00a0Python \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b <a href=\"https:\/\/ru.wikipedia.org\/wiki\/LL(1)\">\u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043b\u044f\u00a0LL(1)\u2011\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438<\/a>. \u042d\u0442\u043e \u0442\u0430 \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0440\u0430\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 Python \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0445 \u0432\u00a0\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e AST, \u0430\u00a0\u0437\u0430\u0442\u0435\u043c \u0432\u00a0\u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 Python.<\/p>\n<p>\u041d\u043e\u00a0\u0437\u0430 \u0432\u0441\u0435 \u0434\u043e\u043b\u0433\u0438\u0435 \u0433\u043e\u0434\u044b\u00a0\u2014 \u0430\u00a0Python \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 1991\u00a0\u0433\u043e\u0434\u0443\u00a0\u2014 \u043e\u043d \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0440\u043e\u0441. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u0430\u0436\u0435 \u043d\u0435\u00a0\u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438 \u043f\u043e\u0434\u00a0\u044d\u0442\u0443 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0441\u044e\u0434\u0430 \u0432\u044b\u0440\u043e\u0441\u043b\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0433\u043e \u043f\u043e\u0434\u043f\u0438\u0440\u0430\u043b\u0438, \u0430\u00a0\u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0449\u0438 \u0442\u0443\u0434\u0430 \u0432\u0442\u0438\u0441\u043d\u0443\u0442\u044c\u00a0\u0431\u044b\u043b\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0412\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.9\u00a0\u0441\u0430\u043c \u0413\u0432\u0438\u0434\u043e \u0432\u0430\u043d \u0420\u043e\u0441\u0441\u0443\u043c (\u0430\u0432\u0442\u043e\u0440 Python) \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0435\u0433\u043e \u043d\u043e\u0432\u044b\u043c <a href=\"https:\/\/peps.python.org\/pep-0617\/\">PEG\u2011\u043f\u0430\u0440\u0441\u0435\u0440\u043e\u043c<\/a>, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0441\u0442\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u00a0\u0442\u0430\u043a\u043e\u0435 \u0441\u0432\u0435\u0436\u0435\u0435 (2020-\u0439 \u0433\u043e\u0434), \u043d\u043e\u00a0\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0430\u0436\u043d\u043e\u0435, \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0434\u043b\u044f\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439, \u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c.<\/p>\n<h3>match-case<\/h3>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0439, \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u0432, \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0422\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e: \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0435 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u00a0\u043e\u0431\u0440\u0430\u0437\u0446\u043e\u043c. <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 <a href=\"https:\/\/peps.python.org\/pep-0622\/\">\u043e\u0434\u0438\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439 PEP<\/a>. \u041e\u043d \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u043c \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u0447\u0442\u043e\u00a0\u0435\u0433\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430\u00a0\u0442\u0440\u0438 \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435: <\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/peps.python.org\/pep-0634\/\">PEP 634<\/a>\u00a0\u2014 Structural Pattern Matching: Specification \u2192 \u0427\u0442\u043e?<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/peps.python.org\/pep-0635\/\">PEP 635<\/a>\u00a0\u2014 Structural Pattern Matching: Motivation and Rationale \u2192 \u041f\u043e\u0447\u0435\u043c\u0443?<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/peps.python.org\/pep-0636\/\">PEP 636<\/a>\u00a0\u2014 Structural Pattern Matching: Tutorial \u2192 \u041a\u0430\u043a?<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u043e\u0442 \u043a\u0430\u043a <code>match\u2011case<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430\u00a0\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0b0\/ea9\/7d1\/0b0ea97d1be9f9ccadc6d43119fee8ff.png\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0b0\/ea9\/7d1\/0b0ea97d1be9f9ccadc6d43119fee8ff.png\"\/><\/figure>\n<p>\u0412\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u0438\u0434\u043d\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b\u0441\u044f \u043a\u043e\u0434. \u0410\u00a0\u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435\u00a0\u0434\u043e\u00a0\u043a\u043e\u043d\u0446\u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u0430 \u0441\u0443\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f <code>match\u2011case<\/code>, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/companies\/yandex_praktikum\/articles\/547902\/\">\u0441\u0442\u0430\u0442\u044c\u044e \u043a\u043e\u043b\u043b\u0435\u0433 \u0438\u0437\u00a0\u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u043c\u0430<\/a>.<\/p>\n<p>\u0418 \u0432\u0435\u0434\u044c \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0442\u0435, \u043a\u043e\u043c\u0443 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043c\u0430\u043b\u043e! <code>match\u2011case<\/code> \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u043c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445, \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u0438 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u0443\u00a0\u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0441\u00a0\u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430\u043c\u0438, \u0447\u0442\u043e\u00a0\u043d\u0430 <a href=\"https:\/\/pyfound.blogspot.com\/2023\/05\/the-python-language-summit-2023-pattern.html\">Python Language Summit 2023<\/a> \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u044d\u0442\u0443 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e. \u041c\u043d\u0435\u00a0\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u00a0\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 <a href=\"https:\/\/peps.python.org\/pep-0647\/\">PEP 647<\/a>. \u0412\u043e\u0442 \u0447\u0442\u043e\u00a0\u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f\u00a0\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u00a0\u043f\u043e\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441\u00a0\u043f\u043e\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u043b\u0435\u043d\u0438\u0432\u044b\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u043f\u0440\u0438\u00a0\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u00a0JSON \u0438\u043b\u0438\u00a0XML.<\/p>\n<\/li>\n<\/ul>\n<p>\u0416\u0434\u0451\u043c \u043d\u043e\u0432\u044b\u0439 PEP \u043e\u0442\u00a0Michael \u00abSully\u00bb Sullivan.<\/p>\n<h3>except*<\/h3>\n<p>\u041d\u043e\u0432\u0430\u044f \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u0432\u0432\u0435\u0441\u0442\u0438 \u043d\u043e\u0432\u0443\u044e \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044e\u00a0\u2014 <a href=\"https:\/\/peps.python.org\/pep-0654\/\">\u0433\u0440\u0443\u043f\u043f\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/a>. \u041e\u0442\u0435\u0446 asyncio, <a href=\"https:\/\/github.com\/1st1\">\u042e\u0440\u0438\u0439 \u0421\u0435\u043b\u0438\u0432\u0430\u043d\u043e\u0432<\/a>, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u0443\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 <a href=\"https:\/\/trio.readthedocs.io\/en\/stable\/\">Trio<\/a> \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0438\u0434\u0435\u0438 \u043f\u0440\u043e <a href=\"https:\/\/vorpus.org\/blog\/notes-on-structured-concurrency-or-go-statement-considered-harmful\/\">Structured Concurrency<\/a>, \u0440\u0435\u0448\u0438\u043b \u0437\u0430\u043d\u0435\u0441\u0442\u0438 \u0432\u00a0Python <a href=\"https:\/\/habr.com\/ru\/companies\/otus\/articles\/681560\/\">\u0433\u0440\u0443\u043f\u043f\u044b \u0437\u0430\u0434\u0430\u0447<\/a>\u00a0\u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438\u0437\u00a0\u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u043c\u0435\u0441\u0442\u0430.<\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0438\u0441\u044c \u0441 <code>asyncio.gather<\/code>. \u0415\u0441\u043b\u0438 \u0442\u0430\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0442\u043e \u043e\u043d\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c, \u043d\u043e\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u00a0\u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e\u00a0\u0432\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0444\u043b\u0430\u0433 <code>return_exceptions<\/code>\u00a0\u2014 \u0432\u00a0\u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0435\u0441\u044c \u0431\u043b\u043e\u043a \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430\u00a0\u043f\u0435\u0440\u0432\u043e\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438. \u0422\u0435\u043f\u0435\u0440\u044c \u0430\u0432\u0442\u043e\u0440\u044b \u044f\u0437\u044b\u043a\u0430 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u00a0\u0442\u0430\u0441\u043a\u2011\u0433\u0440\u0443\u043f\u043f\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>except*<\/code> \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e. <\/p>\n<pre><code class=\"python\">try:     low_level_os_operation() except* OSError as eg:     for e in eg.exceptions:         print(type(e).__name__)<\/code><\/pre>\n<h3>Press F<\/h3>\n<p>\u0425\u043e\u0440\u043e\u0448\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c: \u0432\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.12, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0448\u043b\u0430 2\u00a0\u043e\u043a\u0442\u044f\u0431\u0440\u044f 2023\u00a0\u0433\u043e\u0434\u0430, \u043d\u0430\u043a\u043e\u043d\u0435\u0446\u2011\u0442\u043e \u043f\u043e\u0447\u0438\u043d\u0438\u043b\u0438 f\u2011\u0441\u0442\u0440\u043e\u043a\u0438. \u041a\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0432\u00a0f\u2011\u0441\u0442\u0440\u043e\u043a\u0430\u0445, \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u00a0\u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u0441\u0430\u043c\u043e\u0439 f\u2011\u0441\u0442\u0440\u043e\u043a\u0438. \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u043a\u0440\u0443\u0442\u0430\u0441\u044b \u0441\u00a0\u043e\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u043c\u0438 \u0438\u043b\u0438\u00a0\u0434\u0432\u043e\u0439\u043d\u044b\u043c\u0438 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u043c\u0438. \u0418 \u0434\u0430\u0436\u0435 IDE \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438, \u043a\u0430\u043a\u00a0\u044d\u0442\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. <\/p>\n<p>\u0420\u0435\u0431\u044f\u0442\u0430 \u043d\u0430\u043a\u043e\u043d\u0435\u0446\u2011\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0447\u0451\u0442\u043a\u0443\u044e \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0443 \u0434\u043b\u044f\u00a0f\u2011\u0441\u0442\u0440\u043e\u043a \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043d\u043e\u0432\u043e\u043c\u0443 \u043f\u0430\u0440\u0441\u0435\u0440\u0443. \u0422\u0435\u043f\u0435\u0440\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0432\u00a0\u0434\u0440\u0443\u0433\u0430 \u0438 \u043d\u0435\u00a0\u043f\u0430\u0440\u0438\u0442\u044c\u0441\u044f, \u043a\u0430\u043a\u0438\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u0443\u00a0\u0432\u0430\u0441 \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u0430\u00a0\u043a\u0430\u043a\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438. \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c IDE.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fdb\/45d\/7f3\/fdb45d7f3817dd0fe556aa35fe655937.png\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fdb\/45d\/7f3\/fdb45d7f3817dd0fe556aa35fe655937.png\"\/><\/figure>\n<h3>std<\/h3>\n<p>Python\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c \u043a\u043e\u0434, \u043d\u043e\u00a0\u0435\u0449\u0451 \u0438 \u0435\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 (\u0432 \u043d\u0430\u0440\u043e\u0434\u0435\u00a0\u2014 \u00ab\u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u0438\u00bb). \u041d\u0430 <a href=\"https:\/\/pyfound.blogspot.com\/2021\/05\/the-2021-python-language-summit-what-is.html\">c\u0430\u043c\u043c\u0438\u0442\u0430\u0445 2021<\/a> \u0438 <a href=\"https:\/\/pyfound.blogspot.com\/2023\/05\/the-python-language-summit-2023-what-is.html\">2023<\/a> \u0433\u043e\u0434\u043e\u0432 \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b: \u0430\u00a0\u0447\u0442\u043e\u00a0\u0442\u0430\u043a\u043e\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u044d\u0442\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438 \u0447\u0442\u043e\u00a0\u0432\u00a0\u043d\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u043e\u00a0\u0431\u044b\u0442\u044c? <\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u044d\u0442\u0438\u0445 \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u0439 \u0441\u0442\u0430\u043b <a href=\"https:\/\/peps.python.org\/pep-0594\/\">PEP 594<\/a>. \u0412\u00a0\u043d\u0451\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043c\u043e\u0434\u0443\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0432\u00a0Python. \u0410\u00a0\u0435\u0449\u0451 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043f\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0438\u0445 \u0431\u0443\u0434\u0443\u0442 \u0443\u0431\u0438\u0440\u0430\u0442\u044c. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u044d\u0442\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0440\u043e\u0434\u043e\u043c \u0438\u0437 1990-\u0445\u00a0\u2014 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u044b \u0438\u043c\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u00a0\u043d\u043e\u0436 \u043f\u043e\u043f\u0430\u043b\u0430 \u043d\u0435\u00a0\u0442\u0430\u043a\u0430\u044f \u0443\u0436 \u0438 \u0434\u0440\u0435\u0432\u043d\u044f\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/docs.python.org\/3.11\/library\/distutils.html\">distutils<\/a>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043f\u0440\u043e\u00a0\u043d\u0435\u0451, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 <a href=\"http:\/\/PyPI.org\">PyPI.org<\/a>. \u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u0445\u043e\u0442\u0435\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c, \u043d\u043e\u00a0\u043e\u043d \u0438\u043c \u0442\u0430\u043a \u0438 \u043d\u0435\u00a0\u0441\u0442\u0430\u043b. \u0412\u00a0\u0438\u0442\u043e\u0433\u0435 \u0432\u044b\u0438\u0433\u0440\u0430\u043b <a href=\"https:\/\/github.com\/pypa\/setuptools\">setuptools<\/a>. \u041d\u043e\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 distutils \u0432\u0441\u0451 \u0435\u0449\u0451 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432\u044b\u043d\u0435\u0441\u043b\u0438 \u0432 <a href=\"https:\/\/peps.python.org\/pep-0632\/\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 PEP<\/a>. \u0418 \u0432\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.12\u00a0\u0435\u0433\u043e \u0443\u0431\u0435\u0440\u0443\u0442 \u0438\u0437\u00a0\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 Python.<\/p>\n<p>\u041d\u043e\u00a0\u0440\u0435\u0431\u044f\u0442\u0430 \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0431\u0438\u0440\u0430\u044e\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438\u00a0\u2014 \u0435\u0449\u0451 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0437\u0430\u0432\u043e\u0437\u044f\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.9\u00a0\u0437\u0430\u0432\u0435\u0437\u043b\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/docs.python.org\/3\/library\/zoneinfo.html\">zoneinfo<\/a>. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0430\u0441\u043a\u0430\u0442\u044c \u0441\u00a0\u0441\u043e\u0431\u043e\u0439 pytz \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441\u00a0\u0434\u0430\u0442\u0430\u043c\u0438.<\/p>\n<pre><code class=\"python\">>>> from zoneinfo import ZoneInfo >>> zone = ZoneInfo(\"Pacific\/Kwajalein\") >>> dt = datetime(2020, 4, 1, 3, 15, tzinfo=zone) >>> f\"{dt.isoformat()} [{dt.tzinfo}]\" '2020-04-01T03:15:00+12:00 [Pacific\/Kwajalein]'<\/code><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0441\u0442\u0430\u043b \u0444\u043e\u0440\u043c\u0430\u0442 TOML. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u00a0\u0432\u0435\u0440\u0441\u0438\u0435\u0439 3.11\u00a0\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435\u00a0\u0442\u0430\u0441\u043a\u0430\u0442\u044c \u0441\u00a0\u0441\u043e\u0431\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0430\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043f\u0440\u044f\u043c\u043e \u0438\u0437\u00a0\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439.<\/p>\n<pre><code class=\"python\">import tomllib  with open(\"pyproject.toml\", \"rb\") as f:     data = tomllib.load(f)  toml_str = \"\"\" python-version = \"3.11.0\" python-implementation = \"CPython\" \"\"\"  data = tomllib.loads(toml_str)<\/code><\/pre>\n<h2>\u0410\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438<\/h2>\n<p>\u0421\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0432\u0441\u0451. \u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u0439\u0434\u0435\u0442 <strong>\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f<\/strong>. \u041a\u0442\u043e\u2011\u043d\u0438\u0431\u0443\u0434\u044c \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u043a\u00a0\u043d\u0435\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f? \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u0430\u0439\u043f\u2011\u0445\u0438\u043d\u0442\u044b! \u0418\u043b\u0438, \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u0447\u0443\u0442\u044c \u0448\u0438\u0440\u0435, \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0447\u0438\u0442\u0430\u0435\u0442 \u0432\u0430\u0448 \u043a\u043e\u0434, \u043e\u043d \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u042d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u0442\u0438\u043f\u044b \u0432\u00a0\u0441\u0432\u043e\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445. \u041b\u044e\u0434\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c,\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u0439\u043c\u0443\u0442, \u0447\u0442\u043e\u00a0\u0436\u0435 \u0445\u043e\u0442\u044f\u0442 \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u00a0\u0432\u0445\u043e\u0434.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b2a\/ebb\/060\/b2aebb0609abab9730cea700b17d1eb2.png\" alt=\"\u041e\u0431\u0440\u0430\u0437\u0435\u0446 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0441 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432 PyCharm\" title=\"\u041e\u0431\u0440\u0430\u0437\u0435\u0446 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0441 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432 PyCharm\" width=\"1450\" height=\"854\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b2a\/ebb\/060\/b2aebb0609abab9730cea700b17d1eb2.png\"\/><\/p>\n<div><figcaption>\u041e\u0431\u0440\u0430\u0437\u0435\u0446 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0441 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432 PyCharm<\/figcaption><\/div>\n<\/figure>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u00a0\u043a\u043e\u0434\u2011\u0440\u0435\u0432\u044c\u044e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0430\u00a0\u0435\u0449\u0451 \u043b\u0443\u0447\u0448\u0435, \u043a\u043e\u0433\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u00a0\u0432\u0430\u0441 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c mypy. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 mypy \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e\u00a0\u0432\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0442\u0435\u0445 \u0442\u0438\u043f\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438.<\/p>\n<p>\u042d\u0442\u0430 \u0444\u0438\u0447\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e\u00a0\u2014 \u0435\u0449\u0451 \u0432 <a href=\"https:\/\/peps.python.org\/pep-0484\/\">\u0432\u0435\u0440\u0441\u0438\u0438 3.5<\/a>,\u00a0\u2014 \u043d\u043e\u00a0\u0438\u043c\u0435\u043d\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 mypy \u0432\u00a0Python \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432\u00a0\u0440\u0430\u0439\u043e\u043d\u0435 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439. \u041f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0434\u0430\u0436\u0435 \u0432 \u0447\u0443\u0436\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u0437 \u043b\u0435\u043a\u0446\u0438\u0438 \u041d\u0438\u043a\u0438\u0442\u044b \u0421\u043e\u0431\u043e\u043b\u0435\u0432\u0430 \u043f\u0440\u043e <a href=\"https:\/\/www.youtube.com\/watch?v=y4bvMmsY9CI\">typeshed<\/a> \u0438 \u0435\u0433\u043e <a href=\"https:\/\/www.youtube.com\/watch?v=lDyZJaNK4yY\">\u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0441 Alex Waygood<\/a>.<\/p>\n<h3>Deferred annotation<\/h3>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430\u00a0\u0442\u043e \u0447\u0442\u043e\u00a0\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438\u00a0\u2014 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c, \u043e\u043d\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u0430\u0432\u0430\u043b\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0440\u0438\u00a0\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445. \u0427\u043b\u0435\u043d\u044b \u043a\u043e\u043c\u0438\u0442\u0435\u0442\u0430 \u0434\u043e\u043b\u0433\u043e \u043d\u0435\u00a0\u043c\u043e\u0433\u043b\u0438 \u0440\u0435\u0448\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0441\u00a0\u044d\u0442\u0438\u043c \u0434\u0435\u043b\u0430\u0442\u044c.\u00a0\u0411\u044b\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432. \u041a\u0430\u043a\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u00a0\u0431\u044b\u043b \u0445\u0430\u043a <code>from __future__ import annotations<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u041d\u043e\u00a0\u043d\u0443\u0436\u0435\u043d\u00a0\u0431\u044b\u043b \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u0442 \u0432\u0441\u0435\u0445: \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432, \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\u2011\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432. \u0412\u00a0\u043c\u0430\u0435 2023\u00a0\u0433\u043e\u0434\u0430 \u043d\u0430\u043a\u043e\u043d\u0435\u0446\u2011\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u0438 <a href=\"https:\/\/peps.python.org\/pep-0649\/\">\u043a\u00a0\u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044e<\/a>: \u0441\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.14\u00a0\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u00a0\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0431\u0435\u0437\u00a0\u043b\u0438\u0448\u043d\u0435\u0433\u043e \u043e\u0432\u0435\u0440\u0445\u0435\u0434\u0430 \u0438 \u0431\u0435\u0437\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u00a0forward\u2011declaration.<\/p>\n<h3>X | Y \u0432 3.10<\/h3>\n<p>\u0421\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e <a href=\"https:\/\/peps.python.org\/pep-0604\/\">\u043d\u043e\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430<\/a> \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c <code>int | str<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>Union[int, str]<\/code>. \u0412\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u00a0\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f\u043c \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445 <code>isinstance()<\/code> \u0438 <code>issubclass()<\/code>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/451\/15a\/727\/45115a727d3e74bfc2988af4f96cfbdf.png\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/451\/15a\/727\/45115a727d3e74bfc2988af4f96cfbdf.png\"\/><\/figure>\n<h3>TypeAlias \u0432 3.10<\/h3>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u0432\u00a0\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d. \u0418 \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u044c \u0438\u0445 \u043e\u0442\u00a0\u043f\u0440\u043e\u0447\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u044f\u0432\u043d\u043e: \u043f\u043e\u00a0\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u043b\u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u00a0\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f\u0445. <a href=\"https:\/\/peps.python.org\/pep-0613\/\">\u0422\u0435\u043f\u0435\u0440\u044c<\/a> \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0442\u043e\u0447\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u043d\u0435\u00a0\u043a\u0430\u043a\u0430\u044f\u2011\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430, \u0430\u00a0\u0432\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u0430\u043b\u0438\u0430\u0441 \u0434\u043b\u044f\u00a0\u0442\u0438\u043f\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0b0\/637\/362\/0b0637362ea30c489ac7a993a2d71883.png\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0b0\/637\/362\/0b0637362ea30c489ac7a993a2d71883.png\"\/><\/figure>\n<h3>Self \u0432 3.11<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c \u041e\u041e\u041f (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430 \u0432\u00a0\u0444\u0430\u0431\u0440\u0438\u043a\u0435), \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u00a0\u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445 \u0438\u0437\u00a0\u0444\u043e\u0440\u0432\u0430\u0440\u0434\u2011\u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u043e\u0432. \u0412\u044b <a href=\"https:\/\/peps.python.org\/pep-0673\/\">\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c<\/a>, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430: <code>typing.self<\/code>. \u041f\u0440\u0438\u00a0\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0442\u0438\u043f \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 \u0431\u0435\u0437\u00a0\u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 \u0438 \u044d\u043a\u0441\u043f\u043b\u0438\u0446\u0438\u0442\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0445\u0438\u043d\u0442\u0430 \u0432\u00a0\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0435. \u0422\u043e \u0435\u0441\u0442\u044c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f <code>typing.self<\/code> \u043f\u0440\u0438\u00a0\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u044b\u0439 \u0442\u0438\u043f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ed7\/182\/63f\/ed718263f7779ff65c21937cdd4295ec.png\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ed7\/182\/63f\/ed718263f7779ff65c21937cdd4295ec.png\"\/><\/figure>\n<h3>TypedDict<\/h3>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e\u00a0Python \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u00a0\u0434\u0438\u043a\u0442\u043e\u0432. \u0414\u0430\u0436\u0435 \u0432\u00a0\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f\u0445 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u0441\u0432\u043e\u0439 \u0434\u0438\u043a\u0442\u00a0\u2014 <a href=\"https:\/\/peps.python.org\/pep-0589\/\">TypedDict<\/a>. \u041e\u043d \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0435\u0449\u0451 \u0432\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.8, \u0430\u00a0\u0441\u0435\u0439\u0447\u0430\u0441 \u0434\u043b\u044f\u00a0\u043d\u0435\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439.<\/p>\n<p>\u0421\u0443\u0442\u044c <a href=\"https:\/\/peps.python.org\/pep-0655\/\">PEP 655<\/a> \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0Optional\u00a0\u2014 \u043d\u0435\u00a0\u0441\u043e\u0432\u0441\u0435\u043c \u0442\u043e, \u0447\u0442\u043e\u00a0\u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0441\u043b\u043e\u0432\u0430\u0440\u044f\u0445. \u0412\u00a0\u0441\u043b\u043e\u0432\u0430\u0440\u044f\u0445 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u043a\u0430\u043a\u043e\u0433\u043e\u2011\u0442\u043e \u043a\u043b\u044e\u0447\u0430 \u043d\u0435\u00a0\u0431\u044b\u0442\u044c, \u0430\u00a0\u043d\u0435\u00a0\u0442\u043e \u0447\u0442\u043e\u00a0None \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043a\u0430\u043a\u00a0\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0422\u043e \u0435\u0441\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0432\u00a0\u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0435: <code>{\"title\": \"some_title\", \"year\": None}<\/code> vs <code>{\"title\": \"some_title\"}<\/code>. \u0418 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0441\u043c\u043e\u0433\u043b\u0438 \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 <code>Required<\/code> \u0438 <code>NotRequired<\/code>. <\/p>\n<p>\u0410\u00a0\u0432 \u0432\u0435\u0440\u0441\u0438\u0438 3.12\u00a0\u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e <a href=\"https:\/\/peps.python.org\/pep-0692\/\">TypedDict \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430\u00a0\u043a\u0432\u0430\u0440\u0433\u0438<\/a>. \u0420\u0430\u043d\u044c\u0448\u0435 \u0432\u00a0\u043a\u0432\u0430\u0440\u0433\u0430\u0445 \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043f \u043a\u043b\u044e\u0447\u0430 \u0438 \u0442\u0438\u043f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u00a0\u2014 \u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d. \u041d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u00a0kwargs \u043d\u0435\u00a0\u0442\u0430\u043a: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438 bool \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c, \u0438 int\u00a0\u2014 \u0447\u0442\u043e\u00a0\u0445\u043e\u0442\u0438\u0442\u0435. \u0418\u043c\u0435\u043d\u043d\u043e TypedDict \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043a\u00a0\u044d\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u043e\u043d\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0442\u0438\u043f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0432\u00a0\u0441\u043b\u043e\u0432\u0430\u0440\u0435, \u0432\u00a0\u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 kwargs. \u0418 \u0432 3.12\u00a0\u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u043e\u0434\u0445\u043e\u0434.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/49d\/ea3\/db9\/49dea3db94816ec497ae84c6c4b6e5fb.png\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/49d\/ea3\/db9\/49dea3db94816ec497ae84c6c4b6e5fb.png\"\/><\/figure>\n<h3>dataclass_transform<\/h3>\n<p>\u041d\u043e\u00a0\u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0438\u043a\u0442\u044b, \u0432\u0435\u0434\u044c \u043c\u044b \u0438\u043d\u043e\u0433\u0434\u0430 \u0445\u043e\u0442\u0438\u043c \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a\u00a0\u043f\u043e\u043b\u044f\u043c \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u0418 \u0434\u043b\u044f\u00a0dataclasses \u0432 <a href=\"https:\/\/peps.python.org\/pep-0681\/\">PEP 681<\/a> \u0442\u043e\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0430\u043c\u0438 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u043d\u0430\u0448\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430\u00a0Data Class, \u0438 \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0438\u0441\u0430\u0442\u044c PEP \u0434\u043b\u044f\u00a0\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u00a0\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445: <a href=\"https:\/\/www.sqlalchemy.org\/\">SQLAlchemy<\/a>, <a href=\"https:\/\/fastapi.tiangolo.com\/\">FastAPI<\/a> \u0438 <a href=\"https:\/\/docs.pydantic.dev\/latest\/\">Pydantic<\/a> (\u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u0438\u0437\u00a0\u043a\u043e\u0440\u043e\u0431\u043a\u0438).<\/p>\n<h3>ParamSpec<\/h3>\n<p>\u0422\u0430\u043a\u00a0\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 <a href=\"https:\/\/peps.python.org\/pep-0612\/\">PEP 612<\/a> \u0434\u043b\u044f\u00a0\u043e\u0441\u043e\u0431\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432. \u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043c\u043d\u043e\u0433\u043e \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0442\u043e, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.10, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0442\u0438\u043f\u044b \u0438\u0437\u00a0\u0434\u0435\u043a\u043e\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0420\u0430\u043d\u044c\u0448\u0435 \u044d\u0442\u043e\u00a0\u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438 \u0434\u043b\u044f\u00a0mypy.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/896\/5a0\/fd2\/8965a0fd2589a94f50b1615909c751a0.png\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/896\/5a0\/fd2\/8965a0fd2589a94f50b1615909c751a0.png\"\/><\/figure>\n<h3>TypeGuard<\/h3>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u044e\u0442, \u0435\u0441\u043b\u0438 \u0432\u00a0mypy \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0438\u0434\u0430 <code>if is not None<\/code>, \u043e\u043d \u043f\u043e\u0439\u043c\u0451\u0442, \u0447\u0442\u043e\u00a0\u0442\u0438\u043f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u00a0Optional. \u041d\u043e\u00a0\u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043a\u0430\u043a\u0438\u0445\u2011\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0438 \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u043e mypy \u0438\u0445 \u043d\u0435\u00a0\u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f <a href=\"https:\/\/peps.python.org\/pep-0647\/\">PEP 647<\/a> \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f\u043c\u0438. \u041a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442 \u0434\u043b\u044f TypeGuard &#8212; TypeIs \u0443\u0436\u0435 \u043d\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0432 <a href=\"https:\/\/peps.python.org\/pep-0742\/\">PEP 742<\/a> \u0434\u043b\u044f Python 3.13.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/738\/349\/576\/738349576073dd2c335703fe52862820.png\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/738\/349\/576\/738349576073dd2c335703fe52862820.png\"\/><\/figure>\n<h3>final override<\/h3>\n<p>\u0414\u043b\u044f\u00a0\u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u041e\u041e\u041f \u0442\u043e\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u0430\u0440\u043e\u0447\u043a\u0443 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439. \u0412\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.8\u00a0<a href=\"https:\/\/peps.python.org\/pep-0591\/\">\u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438<\/a> \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440 <code>final<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u00a0\u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u043a\u043b\u0430\u0441\u0441\u0430\u0445 \u0418 \u0435\u0449\u0451 <a href=\"https:\/\/peps.python.org\/pep-0698\/\">\u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438<\/a> \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440 <code>override<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u043e\u0432\u043e\u0440\u0438\u0442: \u0435\u0441\u043b\u0438 \u0432\u044b \u0432\u00a0\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 \u0447\u0442\u043e\u2011\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u0442\u0435, \u043d\u0435\u00a0\u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043c\u0435\u0442\u043e\u0434. \u0411\u0435\u0437\u00a0\u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 \u043f\u0440\u0438\u00a0\u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0435.<\/p>\n<h3>Generics<\/h3>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u043f\u043e\u0436\u0435\u0441\u0442\u0438\u043c. \u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0438 Variadic Generics \u0432 <a href=\"https:\/\/peps.python.org\/pep-0646\/\">PEP 646<\/a>. \u042f, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430\u00a0\u044d\u0442\u043e, \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u00a0\u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0442\u0430\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u041d\u043e\u00a0\u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f\u00a0\u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u043d\u0430\u0443\u0447\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0442\u0438\u043f\u0430 numpy\/scipy.<\/p>\n<pre><code class=\"python\">class Array(Generic[DType, *Shape]): ...<\/code><\/pre>\n<p>\u0421\u00a0\u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f Type Parameter Syntax \u0432 <a href=\"https:\/\/peps.python.org\/pep-0695\/\">PEP 695<\/a>, \u0433\u043b\u044f\u0434\u044f \u043d\u0430\u00a0\u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430, \u043c\u044b \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e\u00a0\u0432\u043e\u00a0\u0432\u0441\u0451\u043c \u043a\u043b\u0430\u0441\u0441\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430\u00a0\u0436\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0438\u043f\u0430. \u041d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 TypeVar. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/646\/c92\/e88\/646c92e8890031d7d1aac821d46b6249.png\" width=\"1500\" height=\"905\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/646\/c92\/e88\/646c92e8890031d7d1aac821d46b6249.png\"\/><\/figure>\n<p>\u0421\u0440\u0430\u0432\u043d\u0438\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043b\u0435\u0432\u0430 \u0438 \u0441\u043f\u0440\u0430\u0432\u0430. \u041f\u043e\u0441\u043b\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432\u00a0\u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435. \u041d\u0435\u00a0\u0441\u043c\u0443\u0449\u0430\u0439\u0442\u0435\u0441\u044c, \u0435\u0441\u043b\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u00a0\u0432\u0430\u0441 \u0432\u00a0\u043a\u043b\u0430\u0441\u0441\u0430\u0445 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438. C \u0432\u0435\u0440\u0441\u0438\u0438 3.12\u00a0\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0432\u043c\u0435\u0441\u0442\u043e TypeAlias, \u043f\u0440\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0432\u044b\u0448\u0435.<\/p>\n<h2>\u041f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0438<\/h2>\n<p>\u041f\u0440\u043e\u00a0\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043c\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u00a0\u2014 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0433\u043b\u0443\u0431\u0436\u0435. \u0414\u043e\u00a0\u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043a\u043e\u0434\u00a0\u2014 \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u043c\u044b \u0432\u0438\u0434\u0438\u043c. \u0410\u00a0\u0432\u043e\u0442 \u043e\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434\u00a0\u043a\u0430\u043f\u043e\u0442\u043e\u043c, \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0430\u0436\u0435 \u043d\u0435\u00a0\u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u044e\u0442\u0441\u044f. \u0412\u00a0\u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043e\u0431\u0437\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f\u00a0\u0441\u0431\u043e\u0440\u0430 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0440\u0438\u00a0\u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438, \u0430\u00a0\u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u0437\u043e\u0440 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u0432.<\/p>\n<h3>std<\/h3>\n<p>\u0412\u00a0Python \u0438\u0437\u00a0\u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a <a href=\"https:\/\/docs.python.org\/3\/library\/profile.html\">cProfile<\/a>. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u00a0\u0432\u0430\u0441 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442. \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e\u00a0\u0443\u00a0\u0432\u0430\u0441 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u00a0\u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <a href=\"https:\/\/docs.python.org\/3.11\/library\/tracemalloc.html\">tracemalloc<\/a>. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ddf\/867\/6a9\/ddf8676a9a9e027521728924eb7b663c.png\" width=\"1600\" height=\"919\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ddf\/867\/6a9\/ddf8676a9a9e027521728924eb7b663c.png\"\/><\/figure>\n<p>\u041d\u043e\u00a0\u0434\u0435\u043b\u043e \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0cProfile\u00a0\u2014 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443, \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u042d\u0442\u043e \u043c\u0435\u0448\u0430\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0447\u0435\u0441\u0442\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443. <\/p>\n<p>Tracemalloc \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u0438\u043c\u0435\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434, \u0438 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u00a0\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u043f\u043e\u043d\u044f\u0442\u043d\u043e.<\/p>\n<p>\u041d\u043e\u00a0\u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043d\u0435\u00a0\u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u00a0\u043c\u0435\u0441\u0442\u0435 \u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00a0\u2014\u00a0\u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438 \u0443\u0434\u043e\u0431\u043d\u0435\u0435.<\/p>\n<h3>perf<\/h3>\n<p>\u0412\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.12\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043b\u0438 <a href=\"https:\/\/docs.python.org\/3.12\/howto\/perf_profiling.html#perf-profiling\">perf<\/a>. \u042d\u0442\u043e \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0438\u0437\u00a0Linux, \u0433\u0434\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435. \u0418\u0434\u0435\u044f \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430\u00a0cProfile, \u043d\u043e\u00a0\u0440\u0430\u043d\u044c\u0448\u0435 \u043e\u043d\u0430 \u043c\u043e\u0433\u043b\u0430 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u00a0\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b: \u0442\u043e, \u0447\u0442\u043e\u00a0\u0442\u0430\u043c \u0432\u00a0\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0C. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u043e\u0431\u00a0\u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0435\u0442\u0435, \u0435\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u043a\u0430\u043a\u00a0\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 Python: \u044f\u0434\u0440\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430\u00a0\u0421, \u0430\u00a0\u043f\u0440\u043e\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u043d \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u0437\u043d\u0430\u043b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u00a0\u0432\u0435\u0440\u0441\u0438\u0435\u0439 3.12\u00a0perf \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u0443\u00a0\u0432\u0430\u0441 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u0430\u043a\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b\u00a0\u0431\u044b\u043b\u0438 \u0432\u044b\u0437\u0432\u0430\u043d\u044b. <\/p>\n<p>\u0423\u0437\u043d\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e\u00a0perf, \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f\u00a0Python \u0438 \u043a\u0430\u043a\u00a0\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u0432 \u044d\u0442\u043e\u0439 <a href=\"https:\/\/habr.com\/ru\/companies\/first\/articles\/442738\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>.<\/p>\n<h3>scalene<\/h3>\n<p>\u041d\u043e\u00a0\u0442\u0430\u043a \u043a\u0430\u043a\u00a0Python\u00a0\u2014 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a, \u0432\u0441\u0451\u00a0\u0436\u0435, \u0447\u0435\u043c \u0432\u00a0perf, \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0434\u043b\u044f\u00a0Python. \u041e\u0434\u043d\u0438\u043c \u0438\u0437\u00a0\u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/plasma-umass\/scalene\">Scalene<\/a>, \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u043b \u043d\u0430\u00a0\u043d\u0435\u0434\u0430\u0432\u043d\u0435\u043c <a href=\"https:\/\/pyfound.blogspot.com\/2023\/05\/the-python-language-summit-2023-towards.html\">\u0441\u0430\u043c\u043c\u0438\u0442\u0435<\/a>. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/613\/1ed\/b36\/6131edb36b51b33ae539542fdc4a3a0f.png\" width=\"1600\" height=\"631\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/613\/1ed\/b36\/6131edb36b51b33ae539542fdc4a3a0f.png\"\/><\/figure>\n<p>\u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c CPU, \u043d\u043e\u00a0\u0435\u0449\u0451 \u0438 \u043f\u0430\u043c\u044f\u0442\u044c \u0438 GPU. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0432\u044b \u0434\u0435\u043b\u0430\u0435\u0442\u0435 \u043a\u0430\u043a\u0438\u0435\u2011\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f\u00a0machine learning \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u043a\u043e\u0434 \u043d\u0430\u00a0\u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0430\u0445, \u0442\u043e \u044d\u0442\u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u0430\u043c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442.<\/p>\n<h3>py-spy<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0442\u043e\u00a0\u0443\u00a0\u0432\u0430\u0441 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <a href=\"https:\/\/github.com\/benfred\/py-spy\">py\u2011spy<\/a>. \u0412\u00a0\u0440\u0435\u0436\u0438\u043c\u0435 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u0437\u0430\u0434\u0430\u0447 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u00ab\u043f\u043e\u0434\u0446\u0435\u043f\u0438\u0442\u044c\u0441\u044f\u00bb \u043a\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0443\u00a0\u0432\u0430\u0441 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442 CPU. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0433\u0434\u0435 \u0443\u00a0\u0432\u0430\u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0451.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 py-spy <\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/32c\/383\/6e9\/32c3836e9cac938df6643ab2f2ed8940.gif\" width=\"1232\" height=\"928\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/32c\/383\/6e9\/32c3836e9cac938df6643ab2f2ed8940.gif\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435\u00a0\u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0432\u00a0\u0442\u0430\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u00a0\u0432\u0440\u0435\u043c\u044f \u0441\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0433\u043e \u0432\u00a0\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0447\u0435\u0440\u0435\u0437 Flame Graph\u00a0\u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 speed scope. \u041e\u043d \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436 \u043d\u0430\u00a0\u043f\u0440\u043e\u0444\u0438\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043d\u044f\u0442\u044c \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0432\u00a0JavaScript \u0438 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c. \u042d\u0442\u0430 \u0438\u0434\u0435\u044f\u00a0\u0431\u044b\u043b\u0430 \u0432\u0437\u044f\u0442\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u0442\u0443\u0434\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 speed scope<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e8\/827\/c71\/0e8827c71d8bc8073b56f4b3d5d267e0.gif\" width=\"1836\" height=\"1290\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0e8\/827\/c71\/0e8827c71d8bc8073b56f4b3d5d267e0.gif\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0412\u044b\u0433\u043e\u0434\u0430 \u0442\u0430\u043a\u0438\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u043e\u043d\u0438 \u043d\u0435\u00a0\u0434\u0430\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0440\u0438\u00a0\u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435. \u041e\u043d\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u043d\u0438\u043c\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0440\u0430\u0437 \u0432\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434. \u041e\u043d\u0438 \u043d\u0435\u00a0\u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443, \u0430\u00a0\u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u00a0\u0438\u0442\u043e\u0433\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0439. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432\u00a0\u043f\u043e\u0438\u0441\u043a\u0435 \u0441\u043b\u0430\u0431\u044b\u0445 \u043c\u0435\u0441\u0442.<\/p>\n<h3>memray<\/h3>\n<p>\u0412\u00a0Python \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435\u00a0\u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430\u00a0\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0437\u0430\u00a0\u0432\u0430\u0441 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u044e \u0433\u0440\u044f\u0437\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 <s>\u0443\u0431\u043e\u0440\u0449\u0438\u0446\u0430<\/s> garbage collector. \u041d\u043e\u00a0\u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0443\u0442\u0435\u043a\u0430\u044e\u0442 \u043f\u043e\u00a0\u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u00a0\u0432\u0430\u043c \u043d\u0430\u00a0\u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0434\u0451\u0442 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440 <a href=\"https:\/\/github.com\/bloomberg\/memray\">memray<\/a>. \u041e\u043d \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e, \u0432 2022\u00a0\u0433\u043e\u0434\u0443. \u0412\u00a0\u0442\u0451\u043c\u043d\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0434\u043e\u00a0\u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c tracemalloc. \u041e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e, \u0431\u043e\u043b\u044c\u043d\u043e. \u0414\u0430\u0436\u0435 \u0432\u00a0\u0441\u0430\u043c\u043e\u0439 <a href=\"https:\/\/docs.python.org\/3\/library\/tracemalloc.html#pretty-top\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f\u00a0\u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430. <\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0430\u0431\u043e\u0442\u0430 memray<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e4a\/25e\/e03\/e4a25ee037447ef0f3892c4f563daf20.gif\" width=\"1044\" height=\"740\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e4a\/25e\/e03\/e4a25ee037447ef0f3892c4f563daf20.gif\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<h2>\u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b<\/h2>\n<p>\u0418 \u0435\u0449\u0451 \u043c\u043d\u0435\u00a0\u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0440\u0435\u043b\u0438\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0441\u0435 \u0436\u0434\u0443\u0442. \u041d\u0443 \u0438 \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430\u00a0\u043d\u0438\u043c\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435\u00a0\u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e.<\/p>\n<h3>Faster CPython<\/h3>\n<p>\u041c\u0430\u0440\u043a \u0428\u0435\u043d\u043d\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u00a0\u0413\u0432\u0438\u0434\u043e \u0432\u0430\u043d \u0420\u043e\u0441\u0441\u0443\u043c\u043e\u043c, \u0438 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432\u00a0\u2014 \u044d\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043d\u044f\u043b Microsoft, \u0447\u0442\u043e\u0431\u044b \u0446\u0435\u043b\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c Python. \u041f\u0435\u0440\u0432\u044b\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u0438\u0445 \u043a\u0440\u0443\u043f\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u00a0\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044e \u044f\u0437\u044b\u043a\u0430 \u0441\u0442\u0430\u043b <a href=\"https:\/\/github.com\/faster-cpython\/ideas\/\">Faster CPython<\/a>\u00a0\u2014 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u0415\u0433\u043e \u0437\u0430\u0440\u0435\u043b\u0438\u0437\u0438\u043b\u0438 \u043a\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.11. \u041d\u0430\u00a0\u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u0435\u0441\u0442\u044c \u0434\u043e\u043a\u043b\u0430\u0434 \u0415\u0432\u0433\u0435\u043d\u0438\u044f \u0410\u0444\u043e\u043d\u0430\u0441\u044c\u0435\u0432\u0430 <a href=\"https:\/\/youtu.be\/yizjlvz-nfk?si=EpsdwZjuwrQSIhiv\">\u00ab\u0410\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0439\u0441\u044f \u0438\u043b\u0438\u00a0\u0443\u043c\u0440\u0438\u00bb<\/a>.<\/p>\n<p>\u041a\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.12\u00a0\u0440\u0435\u0431\u044f\u0442\u0430 \u0443\u043b\u0443\u0447\u0448\u0438\u043b\u0438 <code>comprehensions<\/code>. \u0420\u0430\u043d\u044c\u0448\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u00a0\u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043b\u044f\u043c\u0431\u0434\u0443 \u043f\u0440\u0438\u00a0\u0432\u044b\u0437\u043e\u0432\u0435 comprehension: \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u0447\u0435\u043a \u0441\u00a0<code>for<\/code> \u0432\u043d\u0443\u0442\u0440\u0438, \u044d\u0442\u043e \u0443\u0436\u0435\u00a0\u0431\u044b\u043b\u043e\u00a0\u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 <code>for<\/code>, \u0430\u00a0\u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0442\u0430\u043b\u043e \u0435\u0449\u0451\u00a0\u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/p>\n<p>\u0418 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0448\u0443\u043c\u0435\u0432\u0448\u0438\u043c, \u0447\u0442\u043e\u00a0\u0432\u00a0\u0441\u0435\u0442\u0438 \u0433\u0443\u043b\u044f\u043b \u043c\u0435\u043c: \u044f\u043a\u043e\u0431\u044b \u043a\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.14\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u044e\u0442 Python, \u0447\u0442\u043e\u00a0\u043e\u043d \u043e\u0431\u0433\u043e\u043d\u0438\u0442 C++. \u041f\u0440\u043e\u0441\u0442\u043e \u041c\u0430\u0440\u043a \u0428\u0435\u043d\u043d\u043e\u043d \u043e\u0431\u0435\u0449\u0430\u043b \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c\u0441\u044f \u043d\u0430 25% \u043e\u0442\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u00a0\u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<p>\u041d\u0430\u00a0\u0441\u0432\u043e\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445 \u043f\u0440\u0438\u00a0\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430\u00a0Python 3.11\u00a0\u043c\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 10%.<\/p>\n<h3>nogil<\/h3>\n<p>\u041e\u0431\u0449\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0434\u0430\u00a0\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432\u00a0\u2014 \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u0440\u043e\u0433\u043e\u0435 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435. \u042d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 overhead, \u0438 \u043f\u0430\u043c\u044f\u0442\u044c \u0443\u00a0\u043d\u0438\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u0430\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435\u00a0\u2014 \u0438 \u0432\u00a0\u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u0438 \u0432\u043e\u00a0\u0432\u0442\u043e\u0440\u043e\u043c, \u0430\u00a0\u0435\u0449\u0451 \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c. <\/p>\n<p>\u0412\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0440\u0435\u0448\u0430\u044e\u0442 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u0412\u00a0Python \u043e\u043d\u0438 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c, \u043d\u043e\u00a0\u043f\u043e\u043b\u044c\u0437\u044b \u043e\u0442\u00a0\u043d\u0438\u0445 \u043c\u0430\u043b\u043e. \u0412\u0441\u0451 \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432\u00a0Global Interpreter Lock. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u00a0\u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438\u043b\u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u043e\u0441\u043e\u0431\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438\u00a0\u2014 \u0432\u0441\u0451 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 lock. \u0418 \u043a\u043e\u0433\u0434\u0430 \u0443\u00a0\u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u0438 contention. \u0414\u0430\u00a0\u0438 \u043d\u0430\u00a0\u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0443\u00a0\u0432\u0430\u0441 \u043f\u043e\u0434\u00a0\u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u00a0\u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a. <\/p>\n<p>\u0418 \u043a\u0430\u043a\u00a0\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435\u043c\u00a0\u0431\u044b\u043b\u043e \u0445\u043e\u0440\u043e\u0448\u043e? \u041e\u0431\u00a0\u044d\u0442\u043e\u043c \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0441\u043f\u043e\u0440\u044f\u0442 \u043d\u0430 <a href=\"https:\/\/discuss.python.org\/t\/a-fast-free-threading-python\/27903\">\u0444\u043e\u0440\u0443\u043c\u0430\u0445<\/a>.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432\u00a0\u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0443\u00a0\u0421\u044d\u043c\u0430 \u0413\u0440\u043e\u0441\u0441\u0430. \u0415\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442 nogil \u043d\u0430\u00a0\u0441\u0430\u043c\u043c\u0438\u0442\u0435 2023\u00a0\u0433\u043e\u0434\u0430 \u0432\u00a0\u043a\u043e\u043c\u0438\u0442\u0435\u0442\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0438 \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u043e. \u041e\u043d\u0438 <a href=\"https:\/\/pyfound.blogspot.com\/2022\/05\/the-2022-python-language-summit-python_11.html\">\u0441\u043a\u0430\u0437\u0430\u043b\u0438<\/a>: \u00ab\u0418\u0434\u0435\u044f \u0445\u043e\u0440\u043e\u0448\u0430\u044f, \u043d\u0430\u043a\u043e\u043d\u0435\u0446\u2011\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e\u00a0\u0442\u0430\u043c \u0447\u0442\u043e\u2011\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0414\u0430\u0432\u0430\u0439\u0442\u0435\u2011\u043a\u0430 \u043c\u044b \u043f\u043b\u0430\u0432\u043d\u0435\u043d\u044c\u043a\u043e \u043b\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u044f\u0442\u044c \u044d\u0442\u043e \u0432\u0441\u0451 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c\u00bb. <\/p>\n<p>\u041f\u043e\u043c\u043e\u0433\u043b\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043e\u043f\u044f\u0442\u044c Meta <em>(\u043f\u0440\u0438\u0437\u043d\u0430\u043d\u0430 \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0438\u0441\u0442\u0441\u043a\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439, \u0430\u00a0\u0435\u0451 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b, Facebook \u0438 Instagram, \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b \u043d\u0430\u00a0\u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u0420\u0424)<\/em>. \u041e\u043d\u0430 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u0438\u0437\u00a0\u0441\u0432\u043e\u0435\u0433\u043e \u0444\u043e\u0440\u043a\u0430 \u0431\u0435\u0441\u0441\u043c\u0435\u0440\u0442\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0423\u00a0\u043d\u0435\u0451\u00a0\u0431\u044b\u043b \u043f\u0440\u0435\u0444\u043e\u0440\u043a\u2011\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438 \u043f\u0440\u0438\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c copy\u2011on\u2011write\u00a0\u2014 CoW. \u0423\u00a0\u0441\u0435\u0431\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0430\u00a0\u0431\u044b\u0441\u0442\u0440\u043e, \u0430\u00a0\u0432\u043e\u0442 \u043d\u0430\u0434 \u043e\u0431\u0449\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u043e\u0442\u0435\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043c\u0435\u043d\u044f\u0435\u0442 \u044f\u0434\u0440\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430. \u041d\u043e\u00a0\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442 nogil \u0441\u043c\u043e\u0433 \u043d\u0430\u043a\u043e\u043d\u0435\u0446\u2011\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u043d\u0443\u044e \u043e\u0446\u0435\u043d\u043a\u0443.<\/p>\n<p>\u0414\u043e\u0432\u0435\u0441\u0442\u0438 nogil \u0434\u043e\u00a0\u043a\u043e\u043d\u0446\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a 2030\u00a0\u0433\u043e\u0434\u0443, \u0430\u00a0\u043f\u043e\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u043e\u0442\u00a0\u0415\u0432\u0433\u0435\u043d\u0438\u044f \u0410\u0444\u043e\u043d\u0430\u0441\u044c\u0435\u0432\u0430 <a href=\"https:\/\/www.youtube.com\/watch?v=710br5YpOUg&amp;t=28782s\">\u00ab\u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d GIL \u0438 \u043a\u0430\u043a\u00a0\u043e\u0442\u00a0\u043d\u0435\u0433\u043e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f\u00bb<\/a>.<\/p>\n<h3>subinterpreters<\/h3>\n<p>\u041d\u043e, \u043a\u0430\u043a\u00a0\u044f \u0443\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u043b, \u0432\u0441\u0451 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u044f\u0442\u044c. \u0410\u00a0\u0447\u0442\u043e\u00a0\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441? <\/p>\n<p>\u0415\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u0435 subinterpreters\u00a0\u2014 \u043f\u0435\u0440\u0432\u044b\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0435\u0449\u0435 \u043d\u0430\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 1.5. \u0418 \u0441\u0443\u0442\u044c \u0438\u0434\u0435\u0438 \u0442\u0430\u043a\u043e\u0432\u0430: \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c GIL \u0432\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0443\u0431\u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0435. \u041d\u0435\u00a0\u043e\u0434\u0438\u043d \u043e\u0431\u0449\u0438\u0439 \u043d\u0430\u00a0\u0432\u0441\u0435\u0445, \u0430\u00a0\u043c\u043d\u043e\u0433\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. <\/p>\n<p>\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043f\u043e\u0434\u00a0\u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0432\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.12. \u0410\u00a0\u0432\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.13\u00a0\u043e\u0431\u0435\u0449\u0430\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u00a0\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u0433\u0434\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c: <code>import interpreters<\/code>. <\/p>\n<p>\u041d\u043e <a href=\"https:\/\/peps.python.org\/pep-0734\/\">PEP 734<\/a>, \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0439 \u043d\u0430\u00a0\u0441\u043c\u0435\u043d\u0443 <a href=\"https:\/\/peps.python.org\/pep-0554\/\">PEP 554<\/a>, \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0432\u00a0\u0441\u0442\u0430\u0442\u0443\u0441 Deferred. \u0416\u0434\u0451\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u0441\u044f\u00a0\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 Python 3.14? \u041a\u0430\u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u043e\u043c \u0438 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0432 \u0446\u0438\u043a\u043b\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u043b\u0435\u043a\u0446\u0438\u0439 \u043e\u0442 \u041d\u0438\u043a\u0438\u0442\u044b \u0421\u043e\u0431\u043e\u043b\u0435\u0432\u0430 <a href=\"https:\/\/www.youtube.com\/playlist?list=PLbr8rVGhPD0WQgO97Ao67Q-QVuSbm_Zpz\">\u00ab\u041b\u0443\u0447\u0448\u0438\u0439 \u043a\u0443\u0440\u0441 \u043f\u043e Python\u00bb<\/a>.<\/p>\n<hr\/>\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u00a0\u044f\u0437\u044b\u043a\u0435 \u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f\u0445, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043d\u044f\u043b\u0438, \u043a\u0430\u043a\u00a0\u043c\u043e\u0436\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0438 \u043a\u043e\u0434, \u0438 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440. \u041f\u043e\u043c\u043d\u0438\u0442\u0435: \u0447\u0435\u043c \u0447\u0430\u0449\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0435\u0441\u044c, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u0438\u0444\u0444.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/828956\/\"> https:\/\/habr.com\/ru\/articles\/828956\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0421\u0435\u0440\u0433\u0435\u0439 \u042f\u0445\u043d\u0438\u0446\u043a\u0438\u0439. \u042f \u043f\u0438\u0448\u0443 \u043d\u0430\u00a0Python \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0448\u0435\u0441\u0442\u0438 \u043b\u0435\u0442, \u0442\u0435\u0445\u043b\u0438\u0434 \u0432\u00a0\u042f\u043d\u0434\u0435\u043a\u0441 \u0422\u0430\u043a\u0441\u0438, Python\u2011\u0435\u0432\u0430\u043d\u0433\u0435\u043b\u0438\u0441\u0442 \u0438 \u0447\u043b\u0435\u043d Python\u2011\u043a\u043e\u043c\u0438\u0442\u0435\u0442\u0430 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 (\u0430\u043d\u0430\u043b\u043e\u0433 Python Steering Council). <\/p>\n<p>\u0427\u0435\u043b\u043e\u0432\u0435\u043a \u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0437\u0432\u0451\u0437\u0434 \u0441\u00a0\u0413\u0438\u0442\u0445\u0430\u0431\u0430 \u043d\u0435\u00a0\u0445\u0432\u0430\u0442\u0430\u043b: \u0434\u043e\u00a0\u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u044f \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0432\u00a0\u0422\u0430\u043a\u0441\u0438, \u044f \u043c\u0438\u0440\u043d\u043e \u043f\u0438\u0441\u0430\u043b \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 \u0431\u044d\u043a\u0435\u043d\u0434\u044b \u043d\u0430\u00a0Python. \u0410\u00a0\u043f\u043e\u0442\u043e\u043c \u043c\u0435\u043d\u044f \u043f\u0440\u043e\u0440\u0432\u0430\u043b\u043e: \u043a\u043e\u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438, CI\/CD, \u043a\u0443\u0447\u0438 \u0442\u0435\u0441\u0442\u043e\u0432, \u043c\u043e\u043d\u043e\u0440\u0435\u043f\u0430 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435. \u0412\u043e\u0442 \u0442\u0443\u0442\u2011\u0442\u043e \u043c\u043e\u044f \u043f\u0438\u0442\u043e\u043d\u0438\u0447\u044c\u044f \u0434\u0443\u0448\u0430 \u0438 \u0432\u043e\u0441\u043f\u0440\u044f\u043b\u0430. \u0420\u0435\u0448\u0438\u043b \u044f \u0432\u0441\u0451 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e\u00a0\u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f, \u0430\u00a0\u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f\u00a0\u2014 \u043f\u043e\u0434\u0432\u0438\u0433\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c. \u0418\u0437\u00a0\u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0448\u0435\u043b \u043c\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437.<\/p>\n<p>\u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u0448\u0438\u0440\u043e\u043a\u043e \u043e\u0441\u0432\u0435\u0449\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043b\u0435\u0442 \u0438 \u043a\u0443\u0434\u0430 \u0432\u00a0\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f Python. \u041f\u043e\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u043a\u0430\u043a\u00a0\u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0449\u0451 \u0438\u0437\u0443\u0447\u0430\u044e\u0442 Python, \u0442\u0430\u043a \u0438 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0443\u043c\u0430\u044e\u0442 \u043e\u00a0\u044f\u0437\u044b\u043a\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u00a0\u0434\u043e\u043b\u0433\u043e\u0441\u0440\u043e\u0447\u043d\u043e\u0439 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435.<\/p>\n<h2>\u0422\u0430\u043a \u0437\u0430\u0447\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c Python?<\/h2>\n<p>\u0421\u0440\u0430\u0437\u0443 \u043e\u0442\u0432\u0435\u0447\u0443 \u043d\u0430\u00a0\u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u00a0\u0433\u043e\u043b\u043e\u0432\u0435 \u0443\u00a0\u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f. \u0414\u0435\u043b\u043e \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u044d\u0442\u043e\u0442 \u044f\u0437\u044b\u043a \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d \u0441\u0440\u0435\u0434\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. Python \u0441\u00a0\u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u0434\u043e\u0433\u043e\u043d\u044f\u043b \u0434\u0440\u0443\u0433\u0438\u0435 \u044f\u0437\u044b\u043a\u0438, \u0438 \u0432 2015-\u043c \u043f\u043e\u043f\u0430\u043b \u0432\u00a0\u0442\u043e\u043f-3\u00a0\u0438 \u0434\u043e\u00a0\u0441\u0438\u0445 \u043f\u043e\u0440 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>Python \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u043e\u043f\u0430\u0445<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0422\u043e\u043f \u044f\u0437\u044b\u043a\u043e\u0432, <a href=\"https:\/\/github.blog\/2023-11-08-the-state-of-open-source-and-ai\/#the-most-popular-programming-languages\">\u043f\u043e \u0432\u0435\u0440\u0441\u0438\u0438 GitHub<\/a>, \u043d\u0430\u00a0\u0434\u0435\u043a\u0430\u0431\u0440\u044c 2023\u00a0\u0433\u043e\u0434\u0430\u00a0<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption><a href=\"https:\/\/madnight.github.io\/githut\/#\/stars\/2024\/1\">\u0421\u0432\u043e\u0434\u043a\u0430 \u0437\u0430 Q1, 2024\u00a0\u0433\u043e\u0434<\/a><\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0418 \u0441\u043e\u0432\u0441\u0435\u043c \u0441\u0432\u0435\u0436\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430 <a href=\"https:\/\/www.tiobe.com\/tiobe-index\/\"><u>\u0438\u044e\u043d\u044c 2024\u00a0\u0433\u043e\u0434\u0430<\/u><\/a>, \u043f\u043e \u0434\u0430\u043d\u043d\u044b\u043c TIOBE<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u042f\u0437\u044b\u043a \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u0435\u0434\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430, \u043d\u043e\u00a0\u0438 \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0446\u0438\u0439: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Dropbox, Bloomberg, Reddit \u0438 \u0434\u0440\u0443\u0433\u0438\u0445. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c\u00a0\u0431\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c Meta <em>(\u043f\u0440\u0438\u0437\u043d\u0430\u043d\u0430 \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0438\u0441\u0442\u0441\u043a\u043e\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439, \u0430\u00a0\u0435\u0451 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b, Facebook \u0438 Instagram, \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b \u043d\u0430\u00a0\u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u0420\u0424)<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f <a href=\"https:\/\/pyfound.blogspot.com\/2022\/03\/meta-deepens-its-investment-in-python.html\">\u0432\u043b\u043e\u0436\u0438\u043b\u0430\u0441\u044c \u0433\u0440\u0430\u043d\u0442\u043e\u043c<\/a> 300\u00a0\u0442\u044b\u0441\u044f\u0447 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u0432\u00a0Python Software Foundation \u0438 \u043f\u0440\u043e\u0434\u043b\u0438\u043b\u0430 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u044e <a href=\"https:\/\/www.youtube.com\/watch?v=nZi74lGz47U\">Developer in Residence<\/a>. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u00a0Python \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u00a0\u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0430\u0439\u0442 PyPI, \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 core\u2011\u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440\u0430\u043c, \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043f\u0443\u043b\u2011\u0440\u0435\u043a\u0432\u0435\u0441\u0442\u044b \u0438 \u0434\u0430\u0436\u0435 \u0432\u0451\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043b\u0438\u0437\u043e\u0432. <\/p>\n<p>\u0412\u00a0Python \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 Python Enhancement Proposal\u00a0\u2014 \u044d\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0413\u041e\u0421\u0422\u044b \u0432\u00a0\u043c\u0438\u0440\u0435 Python. <a href=\"https:\/\/peps.python.org\/\">\u0421\u0430\u043c\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u0439<\/a> \u0438\u0437\u00a0\u043d\u0438\u0445\u00a0\u0431\u044b\u043b \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u00a0\u0434\u0430\u043b\u0451\u043a\u043e\u043c 2000\u00a0\u0433\u043e\u0434\u0443, \u0432\u00a0\u043d\u0451\u043c \u0435\u0441\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u0432\u0441\u0435\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u00a0\u043d\u0438\u0445 \u044f \u0438 \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0422\u0430\u043c\u00a0\u0436\u0435 \u0432 <a href=\"https:\/\/peps.python.org\/pep-0602\/\">PEP 602<\/a> \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u0433\u0440\u0430\u0444\u0438\u043a \u0432\u044b\u0445\u043e\u0434\u0430 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0438 \u0441\u0440\u043e\u043a\u0438 \u0438\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438. \u0421\u0435\u0439\u0447\u0430\u0441 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 Python \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0441 3.8\u00a0\u043f\u043e 3.12. \u041d\u043e 3.8\u00a0\u0438 3.9\u00a0\u0432\u044b\u0448\u043b\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u00a0\u0432\u0435\u0440\u0441\u0438\u044f\u0445 3.10\u00a0\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0437\u0434\u043d\u0438\u0445. \u0418 \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u0434\u0430\u0436\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u0432\u00a0\u0431\u0435\u0442\u0435\u00a0\u2014 3.13.<\/p>\n<h2>\u042f\u0437\u044b\u043a<\/h2>\n<p>\u0412\u00a0\u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u00a0\u0441\u0430\u043c\u043e\u043c \u044f\u0434\u0440\u0435 Python\u00a0\u2014 \u0435\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435. <\/p>\n<h3>grammar<\/h3>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u0440\u043e\u00a0Python, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442\u0441\u044f <abbr class=\"habraabbr\" title=\"\" data-title=\"&lt;p>&lt;\/p>&#187; data-image=&#187;https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fec\/7bd\/f3e\/fec7bdf3ef36747c9c1de72a54a3fbf4.png&#187; data-abbr=&#187;\u043c\u0435\u043c\u044b \u043f\u0440\u043e\u00a0\u0442\u043e\u0447\u043a\u0443 \u0441\u00a0\u0437\u0430\u043f\u044f\u0442\u043e\u0439 &#187; data-image-width=&#187;941&#8243; data-image-height=&#187;1154&#8243;>\u043c\u0435\u043c\u044b \u043f\u0440\u043e\u00a0\u0442\u043e\u0447\u043a\u0443 \u0441\u00a0\u0437\u0430\u043f\u044f\u0442\u043e\u0439 <\/abbr>\u0438 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043e\u0447\u043a\u0438. \u0423\u00a0\u043d\u0430\u0441 \u044d\u0442\u043e \u043d\u0435\u00a0\u043f\u0440\u0438\u043d\u044f\u0442\u043e\u00a0\u2014 \u043c\u044b \u0432\u0441\u0451 \u0434\u0435\u043b\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0441\u0442\u0443\u043f\u044b. \u041d\u0435\u00a0\u0432\u0441\u0435 \u0437\u043d\u0430\u044e\u0442, \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u00a0Python \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e, \u0430\u00a0\u0432\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445\u00a0\u2014 \u043d\u0435\u0442. <\/p>\n<p>C \u043d\u0435\u0437\u0430\u043f\u0430\u043c\u044f\u0442\u043d\u044b\u0445 \u0432\u0440\u0435\u043c\u0451\u043d \u0432\u00a0Python \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b <a href=\"https:\/\/ru.wikipedia.org\/wiki\/LL(1)\">\u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043b\u044f\u00a0LL(1)\u2011\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438<\/a>. \u042d\u0442\u043e \u0442\u0430 \u0432\u0435\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0440\u0430\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 Python \u0438 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0445 \u0432\u00a0\u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e AST, \u0430\u00a0\u0437\u0430\u0442\u0435\u043c \u0432\u00a0\u0431\u0430\u0439\u0442\u043a\u043e\u0434, \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 Python.<\/p>\n<p>\u041d\u043e\u00a0\u0437\u0430 \u0432\u0441\u0435 \u0434\u043e\u043b\u0433\u0438\u0435 \u0433\u043e\u0434\u044b\u00a0\u2014 \u0430\u00a0Python \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 1991\u00a0\u0433\u043e\u0434\u0443\u00a0\u2014 \u043e\u043d \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0440\u043e\u0441. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u0430\u0436\u0435 \u043d\u0435\u00a0\u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438 \u043f\u043e\u0434\u00a0\u044d\u0442\u0443 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0441\u044e\u0434\u0430 \u0432\u044b\u0440\u043e\u0441\u043b\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0441\u0442\u044b\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0433\u043e \u043f\u043e\u0434\u043f\u0438\u0440\u0430\u043b\u0438, \u0430\u00a0\u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0449\u0438 \u0442\u0443\u0434\u0430 \u0432\u0442\u0438\u0441\u043d\u0443\u0442\u044c\u00a0\u0431\u044b\u043b\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0412\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.9\u00a0\u0441\u0430\u043c \u0413\u0432\u0438\u0434\u043e \u0432\u0430\u043d \u0420\u043e\u0441\u0441\u0443\u043c (\u0430\u0432\u0442\u043e\u0440 Python) \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0435\u0433\u043e \u043d\u043e\u0432\u044b\u043c <a href=\"https:\/\/peps.python.org\/pep-0617\/\">PEG\u2011\u043f\u0430\u0440\u0441\u0435\u0440\u043e\u043c<\/a>, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0441\u0442\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u00a0\u0442\u0430\u043a\u043e\u0435 \u0441\u0432\u0435\u0436\u0435\u0435 (2020-\u0439 \u0433\u043e\u0434), \u043d\u043e\u00a0\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0430\u0436\u043d\u043e\u0435, \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0434\u043b\u044f\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439, \u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c.<\/p>\n<h3>match-case<\/h3>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0439, \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u0432, \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0422\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u00a0\u043d\u0443\u0436\u043d\u043e: \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0435 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u00a0\u043e\u0431\u0440\u0430\u0437\u0446\u043e\u043c. <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 <a href=\"https:\/\/peps.python.org\/pep-0622\/\">\u043e\u0434\u0438\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439 PEP<\/a>. \u041e\u043d \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u043c \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u0447\u0442\u043e\u00a0\u0435\u0433\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430\u00a0\u0442\u0440\u0438 \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435: <\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/peps.python.org\/pep-0634\/\">PEP 634<\/a>\u00a0\u2014 Structural Pattern Matching: Specification \u2192 \u0427\u0442\u043e?<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/peps.python.org\/pep-0635\/\">PEP 635<\/a>\u00a0\u2014 Structural Pattern Matching: Motivation and Rationale \u2192 \u041f\u043e\u0447\u0435\u043c\u0443?<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/peps.python.org\/pep-0636\/\">PEP 636<\/a>\u00a0\u2014 Structural Pattern Matching: Tutorial \u2192 \u041a\u0430\u043a?<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u043e\u0442 \u043a\u0430\u043a <code>match\u2011case<\/code> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430\u00a0\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u0438\u0434\u043d\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b\u0441\u044f \u043a\u043e\u0434. \u0410\u00a0\u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435\u00a0\u0434\u043e\u00a0\u043a\u043e\u043d\u0446\u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u0430 \u0441\u0443\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f <code>match\u2011case<\/code>, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/companies\/yandex_praktikum\/articles\/547902\/\">\u0441\u0442\u0430\u0442\u044c\u044e \u043a\u043e\u043b\u043b\u0435\u0433 \u0438\u0437\u00a0\u041f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u043c\u0430<\/a>.<\/p>\n<p>\u0418 \u0432\u0435\u0434\u044c \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0442\u0435, \u043a\u043e\u043c\u0443 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043c\u0430\u043b\u043e! <code>match\u2011case<\/code> \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u043c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445, \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u0438 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u0443\u00a0\u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0441\u00a0\u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430\u043c\u0438, \u0447\u0442\u043e\u00a0\u043d\u0430 <a href=\"https:\/\/pyfound.blogspot.com\/2023\/05\/the-python-language-summit-2023-pattern.html\">Python Language Summit 2023<\/a> \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u044d\u0442\u0443 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e. \u041c\u043d\u0435\u00a0\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u00a0\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 <a href=\"https:\/\/peps.python.org\/pep-0647\/\">PEP 647<\/a>. \u0412\u043e\u0442 \u0447\u0442\u043e\u00a0\u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f\u00a0\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u00a0\u043f\u043e\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441\u00a0\u043f\u043e\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u043b\u0435\u043d\u0438\u0432\u044b\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u043f\u0440\u0438\u00a0\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u00a0JSON \u0438\u043b\u0438\u00a0XML.<\/p>\n<\/li>\n<\/ul>\n<p>\u0416\u0434\u0451\u043c \u043d\u043e\u0432\u044b\u0439 PEP \u043e\u0442\u00a0Michael \u00abSully\u00bb Sullivan.<\/p>\n<h3>except*<\/h3>\n<p>\u041d\u043e\u0432\u0430\u044f \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u0432\u0432\u0435\u0441\u0442\u0438 \u043d\u043e\u0432\u0443\u044e \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044e\u00a0\u2014 <a href=\"https:\/\/peps.python.org\/pep-0654\/\">\u0433\u0440\u0443\u043f\u043f\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439<\/a>. \u041e\u0442\u0435\u0446 asyncio, <a href=\"https:\/\/github.com\/1st1\">\u042e\u0440\u0438\u0439 \u0421\u0435\u043b\u0438\u0432\u0430\u043d\u043e\u0432<\/a>, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b \u0443\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 <a href=\"https:\/\/trio.readthedocs.io\/en\/stable\/\">Trio<\/a> \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0438\u0434\u0435\u0438 \u043f\u0440\u043e <a href=\"https:\/\/vorpus.org\/blog\/notes-on-structured-concurrency-or-go-statement-considered-harmful\/\">Structured Concurrency<\/a>, \u0440\u0435\u0448\u0438\u043b \u0437\u0430\u043d\u0435\u0441\u0442\u0438 \u0432\u00a0Python <a href=\"https:\/\/habr.com\/ru\/companies\/otus\/articles\/681560\/\">\u0433\u0440\u0443\u043f\u043f\u044b \u0437\u0430\u0434\u0430\u0447<\/a>\u00a0\u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438\u0437\u00a0\u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u043c\u0435\u0441\u0442\u0430.<\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0438\u0441\u044c \u0441 <code>asyncio.gather<\/code>. \u0415\u0441\u043b\u0438 \u0442\u0430\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0442\u043e \u043e\u043d\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c, \u043d\u043e\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u00a0\u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e\u00a0\u0432\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0444\u043b\u0430\u0433 <code>return_exceptions<\/code>\u00a0\u2014 \u0432\u00a0\u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0435\u0441\u044c \u0431\u043b\u043e\u043a \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0430\u00a0\u043f\u0435\u0440\u0432\u043e\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438. \u0422\u0435\u043f\u0435\u0440\u044c \u0430\u0432\u0442\u043e\u0440\u044b \u044f\u0437\u044b\u043a\u0430 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u00a0\u0442\u0430\u0441\u043a\u2011\u0433\u0440\u0443\u043f\u043f\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0438 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>except*<\/code> \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e. <\/p>\n<pre><code class=\"python\">try:     low_level_os_operation() except* OSError as eg:     for e in eg.exceptions:         print(type(e).__name__)<\/code><\/pre>\n<h3>Press F<\/h3>\n<p>\u0425\u043e\u0440\u043e\u0448\u0430\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u044c: \u0432\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.12, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0448\u043b\u0430 2\u00a0\u043e\u043a\u0442\u044f\u0431\u0440\u044f 2023\u00a0\u0433\u043e\u0434\u0430, \u043d\u0430\u043a\u043e\u043d\u0435\u0446\u2011\u0442\u043e \u043f\u043e\u0447\u0438\u043d\u0438\u043b\u0438 f\u2011\u0441\u0442\u0440\u043e\u043a\u0438. \u041a\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0432\u00a0f\u2011\u0441\u0442\u0440\u043e\u043a\u0430\u0445, \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u00a0\u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f\u00a0\u0441\u0430\u043c\u043e\u0439 f\u2011\u0441\u0442\u0440\u043e\u043a\u0438. \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u043a\u0440\u0443\u0442\u0430\u0441\u044b \u0441\u00a0\u043e\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u043c\u0438 \u0438\u043b\u0438\u00a0\u0434\u0432\u043e\u0439\u043d\u044b\u043c\u0438 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u043c\u0438. \u0418 \u0434\u0430\u0436\u0435 IDE \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438, \u043a\u0430\u043a\u00a0\u044d\u0442\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. <\/p>\n<p>\u0420\u0435\u0431\u044f\u0442\u0430 \u043d\u0430\u043a\u043e\u043d\u0435\u0446\u2011\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0447\u0451\u0442\u043a\u0443\u044e \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0443 \u0434\u043b\u044f\u00a0f\u2011\u0441\u0442\u0440\u043e\u043a \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043d\u043e\u0432\u043e\u043c\u0443 \u043f\u0430\u0440\u0441\u0435\u0440\u0443. \u0422\u0435\u043f\u0435\u0440\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0432\u00a0\u0434\u0440\u0443\u0433\u0430 \u0438 \u043d\u0435\u00a0\u043f\u0430\u0440\u0438\u0442\u044c\u0441\u044f, \u043a\u0430\u043a\u0438\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u0443\u00a0\u0432\u0430\u0441 \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u0430\u00a0\u043a\u0430\u043a\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438. \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c IDE.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h3>std<\/h3>\n<p>Python\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c \u043a\u043e\u0434, \u043d\u043e\u00a0\u0435\u0449\u0451 \u0438 \u0435\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 (\u0432 \u043d\u0430\u0440\u043e\u0434\u0435\u00a0\u2014 \u00ab\u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u0438\u00bb). \u041d\u0430 <a href=\"https:\/\/pyfound.blogspot.com\/2021\/05\/the-2021-python-language-summit-what-is.html\">c\u0430\u043c\u043c\u0438\u0442\u0430\u0445 2021<\/a> \u0438 <a href=\"https:\/\/pyfound.blogspot.com\/2023\/05\/the-python-language-summit-2023-what-is.html\">2023<\/a> \u0433\u043e\u0434\u043e\u0432 \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b: \u0430\u00a0\u0447\u0442\u043e\u00a0\u0442\u0430\u043a\u043e\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u044d\u0442\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438 \u0447\u0442\u043e\u00a0\u0432\u00a0\u043d\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u043e\u00a0\u0431\u044b\u0442\u044c? <\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u044d\u0442\u0438\u0445 \u0438\u0437\u044b\u0441\u043a\u0430\u043d\u0438\u0439 \u0441\u0442\u0430\u043b <a href=\"https:\/\/peps.python.org\/pep-0594\/\">PEP 594<\/a>. \u0412\u00a0\u043d\u0451\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043c\u043e\u0434\u0443\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b \u0432\u00a0Python. \u0410\u00a0\u0435\u0449\u0451 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043f\u043e\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0438\u0445 \u0431\u0443\u0434\u0443\u0442 \u0443\u0431\u0438\u0440\u0430\u0442\u044c. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u044d\u0442\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0440\u043e\u0434\u043e\u043c \u0438\u0437 1990-\u0445\u00a0\u2014 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u044b \u0438\u043c\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u00a0\u043d\u043e\u0436 \u043f\u043e\u043f\u0430\u043b\u0430 \u043d\u0435\u00a0\u0442\u0430\u043a\u0430\u044f \u0443\u0436 \u0438 \u0434\u0440\u0435\u0432\u043d\u044f\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/docs.python.org\/3.11\/library\/distutils.html\">distutils<\/a>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043f\u0440\u043e\u00a0\u043d\u0435\u0451, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 <a href=\"http:\/\/PyPI.org\">PyPI.org<\/a>. \u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u0445\u043e\u0442\u0435\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c, \u043d\u043e\u00a0\u043e\u043d \u0438\u043c \u0442\u0430\u043a \u0438 \u043d\u0435\u00a0\u0441\u0442\u0430\u043b. \u0412\u00a0\u0438\u0442\u043e\u0433\u0435 \u0432\u044b\u0438\u0433\u0440\u0430\u043b <a href=\"https:\/\/github.com\/pypa\/setuptools\">setuptools<\/a>. \u041d\u043e\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 distutils \u0432\u0441\u0451 \u0435\u0449\u0451 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432\u044b\u043d\u0435\u0441\u043b\u0438 \u0432 <a href=\"https:\/\/peps.python.org\/pep-0632\/\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 PEP<\/a>. \u0418 \u0432\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.12\u00a0\u0435\u0433\u043e \u0443\u0431\u0435\u0440\u0443\u0442 \u0438\u0437\u00a0\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 Python.<\/p>\n<p>\u041d\u043e\u00a0\u0440\u0435\u0431\u044f\u0442\u0430 \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0431\u0438\u0440\u0430\u044e\u0442 \u0441\u0442\u0430\u0440\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438\u00a0\u2014 \u0435\u0449\u0451 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0437\u0430\u0432\u043e\u0437\u044f\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.9\u00a0\u0437\u0430\u0432\u0435\u0437\u043b\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/docs.python.org\/3\/library\/zoneinfo.html\">zoneinfo<\/a>. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0430\u0441\u043a\u0430\u0442\u044c \u0441\u00a0\u0441\u043e\u0431\u043e\u0439 pytz \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441\u00a0\u0434\u0430\u0442\u0430\u043c\u0438.<\/p>\n<pre><code class=\"python\">>>> from zoneinfo import ZoneInfo >>> zone = ZoneInfo(\"Pacific\/Kwajalein\") >>> dt = datetime(2020, 4, 1, 3, 15, tzinfo=zone) >>> f\"{dt.isoformat()} [{dt.tzinfo}]\" '2020-04-01T03:15:00+12:00 [Pacific\/Kwajalein]'<\/code><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0441\u0442\u0430\u043b \u0444\u043e\u0440\u043c\u0430\u0442 TOML. \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u00a0\u0432\u0435\u0440\u0441\u0438\u0435\u0439 3.11\u00a0\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435\u00a0\u0442\u0430\u0441\u043a\u0430\u0442\u044c \u0441\u00a0\u0441\u043e\u0431\u043e\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0430\u00a0\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043f\u0440\u044f\u043c\u043e \u0438\u0437\u00a0\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439.<\/p>\n<pre><code class=\"python\">import tomllib  with open(\"pyproject.toml\", \"rb\") as f:     data = tomllib.load(f)  toml_str = \"\"\" python-version = \"3.11.0\" python-implementation = \"CPython\" \"\"\"  data = tomllib.loads(toml_str)<\/code><\/pre>\n<h2>\u0410\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438<\/h2>\n<p>\u0421\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0432\u0441\u0451. \u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u043e\u0439\u0434\u0435\u0442 <strong>\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f<\/strong>. \u041a\u0442\u043e\u2011\u043d\u0438\u0431\u0443\u0434\u044c \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e\u00a0\u043a\u00a0\u043d\u0435\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f? \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u0430\u0439\u043f\u2011\u0445\u0438\u043d\u0442\u044b! \u0418\u043b\u0438, \u0435\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u0447\u0443\u0442\u044c \u0448\u0438\u0440\u0435, \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0447\u0438\u0442\u0430\u0435\u0442 \u0432\u0430\u0448 \u043a\u043e\u0434, \u043e\u043d \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u042d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u0442\u0438\u043f\u044b \u0432\u00a0\u0441\u0432\u043e\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445. \u041b\u044e\u0434\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c,\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u0439\u043c\u0443\u0442, \u0447\u0442\u043e\u00a0\u0436\u0435 \u0445\u043e\u0442\u044f\u0442 \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0430\u00a0\u0432\u0445\u043e\u0434.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041e\u0431\u0440\u0430\u0437\u0435\u0446 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0441 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432 PyCharm<\/figcaption><\/div>\n<\/figure>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u00a0\u043a\u043e\u0434\u2011\u0440\u0435\u0432\u044c\u044e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0430\u00a0\u0435\u0449\u0451 \u043b\u0443\u0447\u0448\u0435, \u043a\u043e\u0433\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u00a0\u0432\u0430\u0441 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c mypy. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 mypy \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e\u00a0\u0432\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0442\u0435\u0445 \u0442\u0438\u043f\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438.<\/p>\n<p>\u042d\u0442\u0430 \u0444\u0438\u0447\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e\u00a0\u2014 \u0435\u0449\u0451 \u0432 <a href=\"https:\/\/peps.python.org\/pep-0484\/\">\u0432\u0435\u0440\u0441\u0438\u0438 3.5<\/a>,\u00a0\u2014 \u043d\u043e\u00a0\u0438\u043c\u0435\u043d\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 mypy \u0432\u00a0Python \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432\u00a0\u0440\u0430\u0439\u043e\u043d\u0435 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439. \u041f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0434\u0430\u0436\u0435 \u0432 \u0447\u0443\u0436\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u0437 \u043b\u0435\u043a\u0446\u0438\u0438 \u041d\u0438\u043a\u0438\u0442\u044b \u0421\u043e\u0431\u043e\u043b\u0435\u0432\u0430 \u043f\u0440\u043e <a href=\"https:\/\/www.youtube.com\/watch?v=y4bvMmsY9CI\">typeshed<\/a> \u0438 \u0435\u0433\u043e <a href=\"https:\/\/www.youtube.com\/watch?v=lDyZJaNK4yY\">\u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0441 Alex Waygood<\/a>.<\/p>\n<h3>Deferred annotation<\/h3>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430\u00a0\u0442\u043e \u0447\u0442\u043e\u00a0\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438\u00a0\u2014 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c, \u043e\u043d\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u0430\u0432\u0430\u043b\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0440\u0438\u00a0\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445. \u0427\u043b\u0435\u043d\u044b \u043a\u043e\u043c\u0438\u0442\u0435\u0442\u0430 \u0434\u043e\u043b\u0433\u043e \u043d\u0435\u00a0\u043c\u043e\u0433\u043b\u0438 \u0440\u0435\u0448\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0\u0441\u00a0\u044d\u0442\u0438\u043c \u0434\u0435\u043b\u0430\u0442\u044c.\u00a0\u0411\u044b\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432. \u041a\u0430\u043a\u00a0\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u00a0\u0431\u044b\u043b \u0445\u0430\u043a <code>from __future__ import annotations<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0432\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u041d\u043e\u00a0\u043d\u0443\u0436\u0435\u043d\u00a0\u0431\u044b\u043b \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u0442 \u0432\u0441\u0435\u0445: \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432, \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\u2011\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432. \u0412\u00a0\u043c\u0430\u0435 2023\u00a0\u0433\u043e\u0434\u0430 \u043d\u0430\u043a\u043e\u043d\u0435\u0446\u2011\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u0438 <a href=\"https:\/\/peps.python.org\/pep-0649\/\">\u043a\u00a0\u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044e<\/a>: \u0441\u00a0\u0432\u0435\u0440\u0441\u0438\u0438 3.14\u00a0\u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u00a0\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0431\u0435\u0437\u00a0\u043b\u0438\u0448\u043d\u0435\u0433\u043e \u043e\u0432\u0435\u0440\u0445\u0435\u0434\u0430 \u0438 \u0431\u0435\u0437\u00a0\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u00a0forward\u2011declaration.<\/p>\n<h3>X | Y \u0432 3.10<\/h3>\n<p>\u0421\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e <a href=\"https:\/\/peps.python.org\/pep-0604\/\">\u043d\u043e\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430<\/a> \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c <code>int | str<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>Union[int, str]<\/code>. \u0412\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-426902","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/426902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=426902"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/426902\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=426902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=426902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=426902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}