{"id":289408,"date":"2021-07-02T14:20:23","date_gmt":"2021-07-02T11:20:23","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/how-to-use-the-coolest-new-features-in-python-3-10\/"},"modified":"2021-07-02T14:20:23","modified_gmt":"2021-07-02T11:20:23","slug":"how-to-use-the-coolest-new-features-in-python-3-10","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/how-to-use-the-coolest-new-features-in-python-3-10\/","title":{"rendered":"#How to use the coolest new features in Python 3.10"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a2d4272ccd59\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a2d4272ccd59\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-the-coolest-new-features-in-python-3-10\/#%EF%BB%BF\" >\ufeff<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-the-coolest-new-features-in-python-3-10\/#Structural_pattern_matching\" >Structural pattern matching<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-the-coolest-new-features-in-python-3-10\/#Parenthesized_context_managers\" >Parenthesized context managers<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-the-coolest-new-features-in-python-3-10\/#More_typing\" >More typing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-the-coolest-new-features-in-python-3-10\/#Better_error_messages\" >Better error messages<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-use-the-coolest-new-features-in-python-3-10\/#Thats_all\" >That\u2019s all!<\/a><\/li><\/ul><\/nav><\/div>\n<p>&#8220;<strong>#How to use the coolest new features in Python 3.10<\/strong>&#8221;<\/p>\n<div>Python 3.10 development has stabilized and we can finally test out all of the new features that will be included in the final release.<\/p>\n<p>We\u2019ll cover some of the most interesting additions to Python \u2014 structural pattern matching, parenthesized context managers, more typing, and the new and improved error messages.<\/p>\n<p>Check out the video version of the article here:<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%EF%BB%BF\"><\/span><iframe loading=\"lazy\" title=\"New Features in Python 3.10\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/5-A435hIYio?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><\/iframe><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h2><span class=\"ez-toc-section\" id=\"Structural_pattern_matching\"><\/span><strong>Structural pattern matching<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p id=\"2023\" class=\"kf kg gx kh b hw mw kj kk hz mx km kn ko my kq kr ks mz ku kv kw na ky kz la gq hu\" data-selectable-paragraph=\"\">Structural pattern matching is an incredible feature to be added to Python \u2014 truly awesome.<\/p>\n<p id=\"9eb3\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">Imagine an if-else statement that looks like this:<\/p>\n<p><span>You take that and you modify the syntax so it looks more like this:<\/span><\/p>\n<p id=\"e818\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">That<span id=\"rmm\"><span>\u00a0<\/span><\/span>is the new\u00a0<code>match-case<\/code>\u00a0statement \u2014 cool, but nothing special so far.<\/p>\n<p id=\"f67c\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">What makes the<span>\u00a0<\/span><code>match-case<\/code>\u00a0statement so interesting is something called<span>\u00a0<\/span><em class=\"lk\">structural pattern matching<\/em>.<\/p>\n<p id=\"f5b7\" data-selectable-paragraph=\"\">Structural pattern matching allows us to perform the same match-case logic, but based on whether the\u00a0structure\u00a0of our comparison object\u00a0matches\u00a0a given\u00a0pattern.<\/p>\n<p id=\"5a96\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">So let us define two dictionaries, both with different structures.<\/p>\n<p><span>Now, we could write a pattern to match\u00a0<\/span><code>dict_a<\/code><span>\u00a0like so:<\/span><\/p>\n<p><span>And a pattern to match\u00a0<\/span><code>dict_b<\/code><span>\u00a0too:<\/span><\/p>\n<p><span>If we put both of these together in a match-case statement, alongside what is effectively an\u00a0<\/span><code>else<\/code><span>\/catch-all with\u00a0<\/span><code>case _<\/code><span>\u00a0\u2014 we get:<\/span><\/p>\n<p>Pretty cool right? I\u2019ve already found this incredibly useful for data processing \u2014 an example of which you can find in this video at the 15:22 mark.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Parenthesized_context_managers\"><\/span><strong>Parenthesized context managers<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A smaller change that stems from a much larger change that <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/download-scripts-themes-apps\/\" data-internallinksmanager029f6b8e52c=\"9\" title=\"Download Scripts &amp; Themes &amp; Apps\" target=\"_blank\" rel=\"noopener\">app<\/a>eared with Python 3.9 \u2014 the new PEG-based parser.<\/p>\n<p>The previous Python parser had many limitations, which restricted the Python devs in which syntax they could allow.<\/p>\n<p>Python 3.9\u2019s PEG-based parser removed these barriers, which long-term could lead to more elegant syntax \u2014 our first example of this change is the new parenthesized context managers.<\/p>\n<p>Pre Python 3.9, we could write something like this to open two (or more) file I\/O streams:<\/p>\n<p><span>That first line is pretty long, too long in fact. But due to parser limitations, the only way we could split this line across multiple lines was using the\u00a0<\/span><code><\/code><span>\u00a0line continuation character:<\/span><\/p>\n<p>It works, but it\u2019s not Pythonic. With the new parser, we\u2019re now able to split this line across multiple lines using\u00a0<em class=\"lk\">parentheses<\/em>\u00a0like so:<\/p>\n<p id=\"99a8\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">Which<span>\u00a0<\/span><em class=\"lk\">is<\/em><span>\u00a0Pythonic<\/span>.<\/p>\n<p id=\"59a3\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">Now, before we move on \u2014 there is one minor oddity in this<span>\u00a0<\/span><em class=\"lk\">new<\/em>\u00a0feature.<em class=\"lk\"><span>\u00a0<\/span>It\u2019s not entirely new\u2026<\/em><\/p>\n<p id=\"569d\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">If we write:<\/p>\n<p data-selectable-paragraph=\"\"><span>In Python 3.9 \u2014 it works. That is because the new parser enabled this syntax, despite it not being\u00a0<\/span><a rel=\"nofollow noopener\" target=\"_blank\" class=\"cw ke\" href=\"https:\/\/docs.python.org\/3.10\/whatsnew\/3.10.html#parenthesized-context-managers\"><em class=\"lk\">officially<\/em><\/a><span>\u00a0supported until Python 3.10.<\/span><\/p>\n<h2 id=\"d184\" class=\"ma mb gx bf mc md me kj mf mg mh km mi mj mk ml mm mn mo mp mq mr ms mt mu mv hu\"><span class=\"ez-toc-section\" id=\"More_typing\"><\/span>More typing<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p id=\"3710\" class=\"kf kg gx kh b hw mw kj kk hz mx km kn ko my kq kr ks mz ku kv kw na ky kz la gq hu\" data-selectable-paragraph=\"\">There are more updates to Python\u2019s typing features too, which I\u2019ve written about in more detail<span>\u00a0<\/span><a rel=\"nofollow noopener\" target=\"_blank\" class=\"cw ke\" href=\"https:\/\/towardsdatascience.com\/type-annotations-in-python-d90990b172dc\">here<\/a><span>\u00a0<\/span>if you\u2019re interested.<\/p>\n<p id=\"5ec7\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">Easily the most interesting addition here is the inclusion of a new operator which behaves like an<span>\u00a0<\/span><em class=\"lk\">OR<\/em><span>\u00a0<\/span>logic for types, something which we previously used the<span>\u00a0<\/span><code>Union<\/code><span>\u00a0<\/span>method for:<\/p>\n<p data-selectable-paragraph=\"\"><span>Now, we don\u2019t need to write\u00a0<\/span><code>from typing import Union<\/code><span>, and\u00a0<\/span><code>Union[int, float]<\/code><span>\u00a0has been simplified to\u00a0<\/span><code>int | float<\/code><span>\u00a0\u2014 which looks much cleaner:<\/span><\/p>\n<h2 id=\"504e\" class=\"ma mb gx bf mc md me kj mf mg mh km mi mj mk ml mm mn mo mp mq mr ms mt mu mv hu\"><span class=\"ez-toc-section\" id=\"Better_error_messages\"><\/span>Better error messages<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p id=\"05c5\" class=\"kf kg gx kh b hw mw kj kk hz mx km kn ko my kq kr ks mz ku kv kw na ky kz la gq hu\" data-selectable-paragraph=\"\">Tell me you didn\u2019t jump right on over to Google the first time you saw:<\/p>\n<blockquote>\n<p data-selectable-paragraph=\"\"><span>SyntaxError: unexpected EOF while parsing<\/span><\/p>\n<\/blockquote>\n<p data-selectable-paragraph=\"\"><span>The number one result in Google when entering\u00a0<\/span><em class=\"lk\">SyntaxError<\/em><span>\u00a0suggests that many of us certainly did at some point.<\/span><\/p>\n<figure class=\"post-image post-mediaBleed aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1359139 size-full js-lazy\" alt=\"syntax\" width=\"700\" height=\"766\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" src=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/error.png\" srcset=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/error.png 700w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/error-192x210.png 192w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/error-247x270.png 247w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/error-123x135.png 123w\"\/><figcaption><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/thenextweb.com\/news\/#\" data-url=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Feditorial.thenextweb.com%2Fdd%2F2021%2F07%2F02%2Fhow-to-use-new-features-python-3-10-syndication%2F&amp;via=thenextweb&amp;related=thenextweb&amp;text=Check out this picture on: Unexpected EOF while parsing \u2014 a *simple and elegant* way of saying we missed a parenthesis\" data-title=\"Share Unexpected EOF while parsing \u2014 a *simple and elegant* way of saying we missed a parenthesis on Twitter\" data-width=\"685\" data-height=\"500\" class=\"post-image-share popitup\" title=\"Share Unexpected EOF while parsing \u2014 a *simple and elegant* way of saying we missed a parenthesis on Twitter\"><i class=\"icon icon--inline icon--twitter--dark\"\/><\/a>Unexpected EOF while parsing \u2014 a *simple and elegant* way of saying we missed a parenthesis<\/figcaption><noscript><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1359139 size-full\" src=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/error.png\" alt=\"syntax\" width=\"700\" height=\"766\" srcset=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/error.png 700w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/error-192x210.png 192w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/error-247x270.png 247w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/error-123x135.png 123w\"\/><\/noscript><\/figure>\n<p data-selectable-paragraph=\"\"><span>It\u2019s not a clear error message, and Python is full of\u00a0<\/span><em class=\"lk\">less than ideal<\/em><span>\u00a0error messages. Fortunately, someone noticed \u2014 and many of these messages have been improved significantly.<\/span><\/p>\n<p data-selectable-paragraph=\"\"><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/gist.github.com\/jamescalam\/589f59b38d784152cdbb5f80774a1248\"><\/p>\n<figure class=\"post-image post-mediaBleed alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1359144 js-lazy\" alt=\"\" width=\"1203\" height=\"711\" sizes=\"auto, (max-width: 1203px) 100vw, 1203px\" src=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36.png\" srcset=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36.png 1203w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36-280x165.png 280w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36-457x270.png 457w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36-228x135.png 228w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36-796x470.png 796w\"\/><noscript><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1359144\" src=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36.png\" alt=\"\" width=\"1203\" height=\"711\" srcset=\"https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36.png 1203w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36-280x165.png 280w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36-457x270.png 457w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36-228x135.png 228w, https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/Screenshot-2021-07-02-at-12.42.36-796x470.png 796w\"\/><\/noscript><\/figure>\n<p><\/a><\/p>\n<p data-selectable-paragraph=\"\"><span>There are a few more changes that are mentioned on the official change list \u2014 but didn\u2019t seem to show during testing, including:<\/span><\/p>\n<blockquote>\n<p class=\"ll lm ln lo lp nh ni nj\"><span id=\"258d\" class=\"hu nk mb gx ng b df nl nm s nn\" data-selectable-paragraph=\"\">from collections import namedtoplo<\/span><span id=\"c539\" class=\"hu nk mb gx ng b df ov ow ox oy oz nm s nn\" data-selectable-paragraph=\"\">&gt; AttributeError: module \u2018collections\u2019 has no attribute \u2018namedtoplo\u2019. <strong class=\"ng gy\">Did you mean: namedtuple?<\/strong><\/span><\/p>\n<\/blockquote>\n<p id=\"5e17\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">Here, the<span>\u00a0<\/span><code>AttributeError<\/code><span>\u00a0<\/span>is the same as before, but with an added<span>\u00a0<\/span><em class=\"lk\">suggested<\/em><span>\u00a0attribute<\/span> name \u2014<span>\u00a0<\/span><code>namedtoplo<\/code><span>\u00a0<\/span>is identified as a potential typo of the attribute\u00a0<code>namedtuple<\/code>.<\/p>\n<p id=\"1413\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">In a similar vein, we see the same improvement for<span>\u00a0<\/span><code>NameError<\/code><span>\u00a0<\/span>messages:<\/p>\n<blockquote>\n<p class=\"ll lm ln lo lp nh ni nj\"><span id=\"0e03\" class=\"hu nk mb gx ng b df nl nm s nn\" data-selectable-paragraph=\"\">new_var = 5<br \/>print(new_vr)<\/span><span id=\"696f\" class=\"hu nk mb gx ng b df ov ow ox oy oz nm s nn\" data-selectable-paragraph=\"\">&gt; NameError: name \u2018new_vr\u2019 is not defined. <strong class=\"ng gy\">Did you mean: new_var?<\/strong><\/span><\/p>\n<\/blockquote>\n<section class=\"gq gr gs eb gt\">\n<div class=\"n p\">\n<div class=\"au av aw ax ay gu ba v\">\n<p id=\"9e13\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">There are plenty of other updates to error messages too! Check them all out<span>\u00a0<\/span><a rel=\"nofollow noopener\" target=\"_blank\" class=\"cw ke\" href=\"https:\/\/docs.python.org\/3.10\/whatsnew\/3.10.html#better-error-messages\">here<\/a><\/p>\n<\/div>\n<\/div>\n<\/section>\n<h2 role=\"separator\"><span class=\"ez-toc-section\" id=\"Thats_all\"><\/span><strong>That\u2019s all!<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>So, these were some of the key new features being introduced with Python 3.10.<\/p>\n<section class=\"gq gr gs eb gt\">\n<div class=\"n p\">\n<div class=\"au av aw ax ay gu ba v\">\n<p id=\"7d6c\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">The full release is expected on 4th October 2021, between then and now the Python devs will be working on improving what has been added already \u2014 but<span>\u00a0<\/span><em class=\"lk\">no new<\/em>\u00a0features will be introduced.<\/p>\n<p id=\"c5e7\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">If you\u2019d like to check it out yourself, 3.10.0b1 can be downloaded from<span>\u00a0<\/span><a rel=\"nofollow noopener\" target=\"_blank\" class=\"cw ke\" href=\"https:\/\/www.python.org\/downloads\/release\/python-3100b1\/\">here<\/a>.<\/p>\n<p id=\"2477\" class=\"kf kg gx kh b hw ki kj kk hz kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la gq hu\" data-selectable-paragraph=\"\">I hope you enjoyed this article! If you have any questions, let me know via<span>\u00a0<\/span><a rel=\"nofollow noopener\" target=\"_blank\" class=\"cw ke\" href=\"https:\/\/twitter.com\/jamescalam\">Twitter<\/a><span>\u00a0<\/span>or in the comments below. If you\u2019d like more content like this, I post on<span>\u00a0<\/span><a rel=\"nofollow noopener\" target=\"_blank\" class=\"cw ke\" href=\"https:\/\/www.youtube.com\/c\/jamesbriggs\">YouTube<\/a><span>\u00a0<\/span>too.<\/p>\n<p data-selectable-paragraph=\"\"><em>This<span>\u00a0<\/span><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/towardsdatascience.com\/whats-new-in-python-3-10-a757c6c69342\">article<\/a><span>\u00a0<\/span>was originally published on<span>\u00a0<\/span><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/towardsdatascience.com\/\">Towards Data Science<\/a><span>\u00a0<\/span>by<span>\u00a0<\/span><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/towardsdatascience.com\/@jamescalam\">James Briggs<\/a>, an AI Consultant based in London. He is fascinated by the phenomenal advances that are being made within the tech ecosystem daily and loves writing about AI, Python, and programming in <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/general\/\" data-internallinksmanager029f6b8e52c=\"3\" title=\"General\" target=\"_blank\" rel=\"noopener\">general<\/a>.\u00a0<\/em><\/p>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong>\n<\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/thenextweb.com\/news\/how-to-use-new-features-python-3-10-syndication\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;#How to use the coolest new features in Python 3.10&#8221; Python 3.10 development has stabilized and we can finally test out all of the new features that will be included in the final release. We\u2019ll cover some of the most interesting additions to Python \u2014 structural pattern matching, parenthesized context managers, more typing, and the&#8230;<\/p>\n","protected":false},"author":1,"featured_media":289409,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/img-cdn.tnwcdn.com\/image\/tnw?filter_last=1&fit=1280,640&url=https:\/\/cdn0.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2021\/07\/python-3.10-1.jpg&signature=6c47dc6cd77d35ce7df0b0991b735255","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-289408","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/289408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=289408"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/289408\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/289409"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=289408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=289408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=289408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}