<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>Real Python</title>
  <link href="https://realpython.com/atom.xml" rel="self"/>
  <link href="https://realpython.com/"/>
  <updated>2021-08-16T14:00:00+00:00</updated>
  <id>https://realpython.com/</id>
  <author>
    <name>Real Python</name>
  </author>

  
    <entry>
      <title>Python News: What&#x27;s New From July 2021?</title>
      <id>https://realpython.com/python-news-july-2021/</id>
      <link href="https://realpython.com/python-news-july-2021/"/>
      <updated>2021-08-16T14:00:00+00:00</updated>
      <summary>The Python community saw some great changes in July 2021. In this article, you&#x27;ll get up to speed on the big-ticket items that happened this past month, including some news about the CPython Developer-in-Residence position at the Python Software Foundation.</summary>
      <content type="html">
        &lt;div&gt;&lt;p&gt;&lt;strong&gt;July 2021&lt;/strong&gt; was an exciting month for the Python community! The Python Software Foundation hired the first-ever &lt;strong&gt;CPython Developer-in-Residence&lt;/strong&gt;—a full-time paid position devoted to CPython development. In other news from the CPython developer team, &lt;a href=&quot;https://realpython.com/python-traceback/&quot;&gt;tracebacks&lt;/a&gt; and &lt;strong&gt;error messages&lt;/strong&gt; got some much-needed attention.&lt;/p&gt;
&lt;p&gt;Let’s dive into the biggest &lt;strong&gt;Python news&lt;/strong&gt; from the past month!&lt;/p&gt;
&lt;div class=&quot;alert alert-warning&quot; role=&quot;alert&quot;&gt;&lt;p&gt;&lt;strong&gt;Free Bonus:&lt;/strong&gt; &lt;a href=&quot;&quot; class=&quot;alert-link&quot; data-toggle=&quot;modal&quot; data-target=&quot;#modal-python-cheat-sheet-shortened&quot; data-focus=&quot;false&quot;&gt;Click here to get a Python Cheat Sheet&lt;/a&gt; and learn the basics of Python 3, like working with data types, dictionaries, lists, and Python functions.&lt;/p&gt;&lt;/div&gt;

&lt;h2 id=&quot;cpython-has-a-full-time-developer-in-residence&quot;&gt;CPython Has a Full-Time Developer-in-Residence&lt;a class=&quot;headerlink&quot; href=&quot;#cpython-has-a-full-time-developer-in-residence&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In our &lt;a href=&quot;https://realpython.com/python-news-june-2021&quot;&gt;June news roundup&lt;/a&gt;, we featured the Python Software Foundation’s announcement that they were hiring a CPython Developer-in-Residence. In July, the PSF’s plans came to fruition with the hiring of Łukasz Langa.&lt;/p&gt;
&lt;p&gt;Łukasz, a CPython core developer and active member of the Python community, may be familiar to &lt;em&gt;Real Python&lt;/em&gt; readers. In Episode 7 of the &lt;a href=&quot;https://realpython.com/podcasts/rpp/7/&quot;&gt;Real Python Podcast&lt;/a&gt;, Łukasz joined host &lt;a href=&quot;https://realpython.com/team/cbailey/&quot;&gt;Chris Bailey&lt;/a&gt; to talk about the origins of the &lt;a href=&quot;https://black.readthedocs.io/en/stable/&quot;&gt;Black&lt;/a&gt; code formatter, his experience as the Python release manager for Python 3.8 and 3.9, and how he melds Python with &lt;a href=&quot;https://www.youtube.com/watch?v=02CLD-42VdI&quot;&gt;his interest in music&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As the first CPython Developer-in-Residence, Łukasz is responsible for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Addressing pull requests and issue backlog&lt;/li&gt;
&lt;li&gt;Performing analytical research to understand volunteer hours and funding for CPython&lt;/li&gt;
&lt;li&gt;Investigating project priorities and their tasks going forward&lt;/li&gt;
&lt;li&gt;Working on project priorities&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In Łukasz’s statement about his new role, he describes his reaction to the announcement that the PSF was hiring:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When the PSF first announced the Developer in Residence position, I was immediately incredibly hopeful for Python. I think it’s a role with transformational potential for the project. In short, I believe the mission of the Developer in Residence (DIR) is to accelerate the developer experience of everybody else. This includes not only the core development team, but most importantly the drive-by contributors submitting pull requests and creating issues on the tracker. (&lt;a href=&quot;https://lukasz.langa.pl/a072a74b-19d7-41ff-a294-e6b1319fdb6e/&quot;&gt;Source&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Łukasz maintains a log of his work each week in a &lt;a href=&quot;https://lukasz.langa.pl/python/developer-in-residence/&quot;&gt;series of weekly reports&lt;/a&gt; on his personal website. During his first week on the job, he closed fourteen issues and fifty-four pull requests (PRs), reviewed nine PRs, and authored six of his own PRs.&lt;/p&gt;
&lt;p&gt;“Don’t get too excited though about those numbers,” Łukasz writes in his &lt;a href=&quot;https://lukasz.langa.pl/1c78554f-f81d-43d0-9c89-a602cafc4c5a/&quot;&gt;first weekly report&lt;/a&gt;. “The way CPython is developed, many changes start on the &lt;code&gt;main&lt;/code&gt; branch, and then get back ported to [Python] 3.10 and often also to 3.9. So some changes are tripled in those stats.”&lt;/p&gt;
&lt;p&gt;The transparency that the weekly reports offer is refreshing and provides a unique look behind the scenes of the role. Future applicants will have a fantastic resource to help them understand what the job entails, what is working well, and where improvements can be made.&lt;/p&gt;
&lt;p&gt;Łukasz wrote two weekly reports in July:&lt;/p&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;https://realpython.com/python-news-july-2021/?utm_source=realpython&amp;utm_medium=rss&quot;&gt;Read the full article at https://realpython.com/python-news-july-2021/ »&lt;/a&gt;&lt;/h2&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Real Python Podcast – Episode #73: Supporting Python Open Source Projects and Maintainers</title>
      <id>https://realpython.com/podcasts/rpp/73/</id>
      <link href="https://realpython.com/podcasts/rpp/73/"/>
      <updated>2021-08-13T12:00:00+00:00</updated>
      <summary>How do you define open source software? What are the challenges an open source project and maintainers face? How do maintainers receive financial, legal, security, or other types of help? This week on the show, we have Josh Simmons from Tidelift and the Open Source Initiative to help answer these questions.</summary>
      <content type="html">
        &lt;p&gt;How do you define open source software? What are the challenges an open source project and maintainers face? How do maintainers receive financial, legal, security, or other types of help? This week on the show, we have Josh Simmons from Tidelift and the Open Source Initiative to help answer these questions.&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Using the Python return Statement Effectively</title>
      <id>https://realpython.com/courses/effective-python-return-statement/</id>
      <link href="https://realpython.com/courses/effective-python-return-statement/"/>
      <updated>2021-08-10T14:00:00+00:00</updated>
      <summary>In this step-by-step course, you&#x27;ll learn how to use the Python return statement when writing functions. Additionally, you&#x27;ll cover some good programming practices related to the use of return. With this knowledge, you&#x27;ll be able to write readable, robust, and maintainable functions in Python.</summary>
      <content type="html">
        &lt;p&gt;The Python &lt;a href=&quot;https://en.wikipedia.org/wiki/Return_statement&quot;&gt;&lt;code&gt;return&lt;/code&gt; statement&lt;/a&gt; is a key component of &lt;a href=&quot;https://realpython.com/defining-your-own-python-function/&quot;&gt;functions&lt;/a&gt; and &lt;a href=&quot;https://realpython.com/python3-object-oriented-programming/#instance-methods&quot;&gt;methods&lt;/a&gt;. You can use the &lt;code&gt;return&lt;/code&gt; statement to make your functions send Python objects back to the caller code. These objects are known as the function&amp;rsquo;s &lt;strong&gt;return value&lt;/strong&gt;. You can use them to perform further computation in your programs.&lt;/p&gt;
&lt;p&gt;Using the &lt;code&gt;return&lt;/code&gt; statement effectively is a core skill if you want to code custom functions that are &lt;a href=&quot;https://realpython.com/learning-paths/writing-pythonic-code/&quot;&gt;Pythonic&lt;/a&gt; and robust.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this course, you&amp;rsquo;ll learn:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How to use the &lt;strong&gt;Python &lt;code&gt;return&lt;/code&gt; statement&lt;/strong&gt; in your functions&lt;/li&gt;
&lt;li&gt;How to return &lt;strong&gt;single&lt;/strong&gt; or &lt;strong&gt;multiple values&lt;/strong&gt; from your functions&lt;/li&gt;
&lt;li&gt;What &lt;strong&gt;best practices&lt;/strong&gt; to observe when using &lt;code&gt;return&lt;/code&gt; statements&lt;/li&gt;
&lt;li&gt;How to structure more &lt;strong&gt;advanced&lt;/strong&gt; return statements&lt;/li&gt;
&lt;/ul&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Walrus Operator: Python 3.8 Assignment Expressions</title>
      <id>https://realpython.com/python-walrus-operator/</id>
      <link href="https://realpython.com/python-walrus-operator/"/>
      <updated>2021-08-09T14:00:00+00:00</updated>
      <summary>In this tutorial, you&#x27;ll learn about assignment expressions and the walrus operator. The biggest change in Python 3.8 was the inclusion of the := operator, which you can use to assign variables in the middle of expressions. You&#x27;ll see several examples of how to take advantage of this new feature.</summary>
      <content type="html">
        &lt;div&gt;&lt;p&gt;Each new version of Python adds new features to the language. For Python 3.8, the biggest change is the addition of &lt;strong&gt;assignment expressions&lt;/strong&gt;. Specifically, the &lt;code&gt;:=&lt;/code&gt; operator gives you a new syntax for assigning variables in the middle of expressions. This operator is colloquially known as the &lt;strong&gt;walrus operator&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This tutorial is an in-depth introduction to the walrus operator. You will learn some of the motivations for the syntax update and explore some examples where assignment expressions can be useful.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this tutorial, you’ll learn how to:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identify &lt;strong&gt;the walrus operator&lt;/strong&gt; and understand its meaning&lt;/li&gt;
&lt;li&gt;Understand &lt;strong&gt;use cases&lt;/strong&gt; for the walrus operator&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avoid repetitive code&lt;/strong&gt; by using the walrus operator&lt;/li&gt;
&lt;li&gt;Convert between code using the walrus operator and code using &lt;strong&gt;other assignment methods&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Understand the impacts on &lt;strong&gt;backward compatibility&lt;/strong&gt; when using the walrus operator&lt;/li&gt;
&lt;li&gt;Use appropriate &lt;strong&gt;style&lt;/strong&gt; in your assignment expressions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that all walrus operator examples in this tutorial require &lt;a href=&quot;https://realpython.com/python38-new-features/&quot;&gt;Python 3.8&lt;/a&gt; or later to work.&lt;/p&gt;
&lt;div class=&quot;alert alert-warning&quot; role=&quot;alert&quot;&gt;
&lt;p&gt;&lt;strong markdown=&quot;1&quot;&gt;Free Download:&lt;/strong&gt; &lt;a href=&quot;https://realpython.com/bonus/python-tricks-sample-pdf/&quot; class=&quot;alert-link&quot; data-toggle=&quot;modal&quot; data-target=&quot;#modal-python-tricks-sample-pdf&quot; data-focus=&quot;false&quot; markdown=&quot;1&quot;&gt;Get a sample chapter from Python Tricks: The Book&lt;/a&gt; that shows you Python’s best practices with simple examples you can apply instantly to write more beautiful + Pythonic code.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;walrus-operator-fundamentals&quot;&gt;Walrus Operator Fundamentals&lt;a class=&quot;headerlink&quot; href=&quot;#walrus-operator-fundamentals&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Let’s start with some different terms that programmers use to refer to this new syntax. You’ve already seen a few in this tutorial. &lt;/p&gt;
&lt;p&gt;The &lt;code&gt;:=&lt;/code&gt; operator is officially known as the &lt;strong&gt;assignment expression operator&lt;/strong&gt;. During early discussions, it was dubbed the &lt;strong&gt;walrus operator&lt;/strong&gt; because the &lt;code&gt;:=&lt;/code&gt; syntax resembles the eyes and tusks of a sideways &lt;a href=&quot;https://en.wikipedia.org/wiki/Walrus&quot;&gt;walrus&lt;/a&gt;. You may also see the &lt;code&gt;:=&lt;/code&gt; operator referred to as the &lt;strong&gt;colon equals operator&lt;/strong&gt;. Yet another term used for assignment expressions is &lt;strong&gt;named expressions&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;hello-walrus&quot;&gt;Hello, Walrus!&lt;a class=&quot;headerlink&quot; href=&quot;#hello-walrus&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To get a first impression of what assignment expressions are all about, start your REPL and play around with the following code:&lt;/p&gt;
&lt;div class=&quot;highlight python repl&quot;&gt;&lt;span class=&quot;repl-toggle&quot; title=&quot;Toggle REPL prompts and output&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;linenos&quot;&gt; 1&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;walrus&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;False&lt;/span&gt;
&lt;span class=&quot;linenos&quot;&gt; 2&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;walrus&lt;/span&gt;
&lt;span class=&quot;linenos&quot;&gt; 3&lt;/span&gt;&lt;span class=&quot;go&quot;&gt;False&lt;/span&gt;
&lt;span class=&quot;linenos&quot;&gt; 4&lt;/span&gt;
&lt;span class=&quot;linenos&quot;&gt; 5&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;walrus&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;linenos&quot;&gt; 6&lt;/span&gt;&lt;span class=&quot;go&quot;&gt;True&lt;/span&gt;
&lt;span class=&quot;linenos&quot;&gt; 7&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;walrus&lt;/span&gt;
&lt;span class=&quot;linenos&quot;&gt; 8&lt;/span&gt;&lt;span class=&quot;go&quot;&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Line 1 shows a traditional &lt;a href=&quot;https://docs.python.org/3/reference/simple_stmts.html#assignment-statements&quot;&gt;assignment statement&lt;/a&gt; where the value &lt;code&gt;False&lt;/code&gt; is assigned to &lt;code&gt;walrus&lt;/code&gt;. Next, on line 5, you use an assignment expression to assign the value &lt;code&gt;True&lt;/code&gt; to &lt;code&gt;walrus&lt;/code&gt;. After both lines 1 and 5, you can refer to the assigned values by using the variable name &lt;code&gt;walrus&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You might be wondering why you’re using parentheses on line 5, and you’ll learn why the parentheses are needed &lt;a href=&quot;#walrus-operator-syntax&quot;&gt;later on in this tutorial&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;alert alert-primary&quot; role=&quot;alert&quot;&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; A &lt;strong&gt;statement&lt;/strong&gt; in Python is a unit of code. An &lt;strong&gt;expression&lt;/strong&gt; is a special statement that can be evaluated to some value.&lt;/p&gt;
&lt;p&gt;For example, &lt;code&gt;1 + 2&lt;/code&gt; is an expression that evaluates to the value &lt;code&gt;3&lt;/code&gt;, while &lt;code&gt;number = 1 + 2&lt;/code&gt; is an assignment statement that doesn’t evaluate to a value. Although running the statement &lt;code&gt;number = 1 + 2&lt;/code&gt; doesn’t evaluate to &lt;code&gt;3&lt;/code&gt;, it does &lt;em&gt;assign&lt;/em&gt; the value &lt;code&gt;3&lt;/code&gt; to &lt;code&gt;number&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In Python, you often see &lt;a href=&quot;https://docs.python.org/3/reference/simple_stmts.html&quot;&gt;simple statements&lt;/a&gt; like &lt;a href=&quot;https://realpython.com/python-return-statement/&quot;&gt;&lt;code&gt;return&lt;/code&gt; statements&lt;/a&gt; and &lt;a href=&quot;https://realpython.com/python-import/&quot;&gt;&lt;code&gt;import&lt;/code&gt; statements&lt;/a&gt;, as well as &lt;a href=&quot;https://docs.python.org/3/reference/compound_stmts.html&quot;&gt;compound statements&lt;/a&gt; like &lt;a href=&quot;https://realpython.com/python-conditional-statements/&quot;&gt;&lt;code&gt;if&lt;/code&gt; statements&lt;/a&gt; and &lt;a href=&quot;https://realpython.com/defining-your-own-python-function/&quot;&gt;function definitions&lt;/a&gt;. These are all statements, not expressions.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;There’s a subtle—but important—difference between the two types of assignments seen earlier with the &lt;code&gt;walrus&lt;/code&gt; variable. An assignment expression returns the value, while a traditional assignment doesn’t. You can see this in action when the REPL doesn’t print any value after &lt;code&gt;walrus = False&lt;/code&gt; on line 1, while it prints out &lt;code&gt;True&lt;/code&gt; after the assignment expression on line 5.&lt;/p&gt;
&lt;p&gt;You can see another important aspect about walrus operators in this example. Though it might look new, the &lt;code&gt;:=&lt;/code&gt; operator does &lt;em&gt;not&lt;/em&gt; do anything that isn’t possible without it. It only makes certain constructs more convenient and can sometimes communicate the intent of your code more clearly.&lt;/p&gt;
&lt;div class=&quot;alert alert-primary&quot; role=&quot;alert&quot;&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You need at least &lt;a href=&quot;https://realpython.com/python38-new-features/&quot;&gt;Python 3.8&lt;/a&gt; to try out the examples in this tutorial. If you don’t already have Python 3.8 installed and you have &lt;a href=&quot;https://docs.docker.com/install/&quot;&gt;Docker&lt;/a&gt; available, a quick way to start working with Python 3.8 is to run one of &lt;a href=&quot;https://hub.docker.com/_/python/&quot;&gt;the official Docker images&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&quot;highlight sh&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$ &lt;/span&gt;docker container run -it --rm python:3.8-slim
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will download and run the latest stable version of Python 3.8. For more information, see &lt;a href=&quot;https://realpython.com/python-versions-docker/&quot;&gt;Run Python Versions in Docker: How to Try the Latest Python Release&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Now you have a basic idea of what the &lt;code&gt;:=&lt;/code&gt; operator is and what it can do. It’s an operator used in assignment expressions, which can return the value being assigned, unlike traditional assignment statements. To get deeper and really learn about the walrus operator, continue reading to see where you should and shouldn’t use it.&lt;/p&gt;
&lt;h3 id=&quot;implementation&quot;&gt;Implementation&lt;a class=&quot;headerlink&quot; href=&quot;#implementation&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Like most new features in Python, assignment expressions were introduced through a &lt;strong&gt;Python Enhancement Proposal&lt;/strong&gt; (PEP). &lt;a href=&quot;https://www.python.org/dev/peps/pep-0572&quot;&gt;PEP 572&lt;/a&gt; describes the motivation for introducing the walrus operator, the details of the syntax, as well as examples where the &lt;code&gt;:=&lt;/code&gt; operator can be used to improve your code.&lt;/p&gt;
&lt;p&gt;This PEP was &lt;a href=&quot;https://mail.python.org/archives/list/python-ideas@python.org/message/H64ZNZ3T4RRJKMXR6UFNX3FK62IRPVOT/&quot;&gt;originally&lt;/a&gt; written by &lt;a href=&quot;https://twitter.com/Rosuav&quot;&gt;Chris Angelico&lt;/a&gt; in February 2018. Following some heated discussion, PEP 572 was &lt;a href=&quot;https://mail.python.org/archives/list/python-dev@python.org/message/J6EBK6ZEHZXTVWYSUO5N5XCUS45UQSB3/&quot;&gt;accepted&lt;/a&gt; by &lt;a href=&quot;https://twitter.com/gvanrossum&quot;&gt;Guido van Rossum&lt;/a&gt; in July 2018. Since then, Guido &lt;a href=&quot;https://mail.python.org/archives/list/python-committers@python.org/message/GQONAGWBBFRHVRUPU7RNBM75MHKGUFJN/&quot;&gt;announced&lt;/a&gt; that he was stepping down from his role as &lt;a href=&quot;https://en.wikipedia.org/wiki/Benevolent_dictator_for_life&quot;&gt;benevolent dictator for life (BDFL)&lt;/a&gt;. Starting in early 2019, Python has been &lt;a href=&quot;https://www.python.org/dev/peps/pep-0013/&quot;&gt;governed&lt;/a&gt; by an elected &lt;a href=&quot;https://realpython.com/python38-new-features/#the-python-steering-council&quot;&gt;steering council&lt;/a&gt; instead.&lt;/p&gt;
&lt;p&gt;The walrus operator was implemented by &lt;a href=&quot;https://realpython.com/interview-emily-morehouse/&quot;&gt;Emily Morehouse&lt;/a&gt;, and made available in the first &lt;a href=&quot;https://www.python.org/downloads/release/python-380a1/&quot;&gt;alpha release&lt;/a&gt; of Python 3.8.&lt;/p&gt;
&lt;h3 id=&quot;motivation&quot;&gt;Motivation&lt;a class=&quot;headerlink&quot; href=&quot;#motivation&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In many languages, including C and its derivatives, assignment statements function as expressions. This can be both very powerful and also a source of confusing bugs. For example, the following code is valid C but doesn’t execute as intended:&lt;/p&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;https://realpython.com/python-walrus-operator/?utm_source=realpython&amp;utm_medium=rss&quot;&gt;Read the full article at https://realpython.com/python-walrus-operator/ »&lt;/a&gt;&lt;/h2&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Real Python Podcast – Episode #72: Starting With FastAPI and Examining Python&#x27;s Import System</title>
      <id>https://realpython.com/podcasts/rpp/72/</id>
      <link href="https://realpython.com/podcasts/rpp/72/"/>
      <updated>2021-08-06T12:00:00+00:00</updated>
      <summary>Have you heard of FastAPI?  An application programming interface is vital to make your software accessible to users across the internet. FastAPI is an excellent option for quickly creating a web API that implements best practices. This week on the show, David Amos is back, and he&#x27;s brought another batch of PyCoder&#x27;s Weekly articles and projects.</summary>
      <content type="html">
        &lt;p&gt;Have you heard of FastAPI?  An application programming interface is vital to make your software accessible to users across the internet. FastAPI is an excellent option for quickly creating a web API that implements best practices. This week on the show, David Amos is back, and he&#x27;s brought another batch of PyCoder&#x27;s Weekly articles and projects.&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Using sleep() to Code a Python Uptime Bot</title>
      <id>https://realpython.com/courses/python-sleep-uptime-bot/</id>
      <link href="https://realpython.com/courses/python-sleep-uptime-bot/"/>
      <updated>2021-08-03T14:00:00+00:00</updated>
      <summary>In this course, you&#x27;ll learn how to add time delays to your Python programs. You&#x27;ll use the built-in time module to add Python sleep() calls to your code. To practice, you&#x27;ll use time.sleep() when making an uptime bot that checks whether a website is still live.</summary>
      <content type="html">
        &lt;p&gt;Have you ever needed to make your Python program wait for something? You might use a Python &lt;code&gt;sleep()&lt;/code&gt; call to simulate a delay in your program. Perhaps you need to wait for a file to upload or download, or for a graphic to load or be drawn to the screen. You might even need to pause between calls to a web &lt;a href=&quot;https://realpython.com/python-api/&quot;&gt;API&lt;/a&gt;, or between queries to a database. Adding Python &lt;strong&gt;&lt;code&gt;sleep()&lt;/code&gt;&lt;/strong&gt; calls to your program can help in each of these cases, and many more!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this course, you&amp;rsquo;ll learn:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The basics of &lt;strong&gt;&lt;code&gt;time.sleep()&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;How you can use &lt;code&gt;timeit&lt;/code&gt; to &lt;strong&gt;measure&lt;/strong&gt; your code&amp;rsquo;s &lt;strong&gt;execution time&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;How to use &lt;code&gt;time.sleep()&lt;/code&gt; to build an &lt;strong&gt;uptime bot&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Python&#x27;s ChainMap: Manage Multiple Contexts Effectively</title>
      <id>https://realpython.com/python-chainmap/</id>
      <link href="https://realpython.com/python-chainmap/"/>
      <updated>2021-08-02T14:00:00+00:00</updated>
      <summary>In this step-by-step tutorial, you&#x27;ll learn about Python&#x27;s ChainMap and how to use it to group multiple dictionaries together and manage them as a single one. ChainMap is handy when you need to manage multiple scopes and contexts and define access priorities.</summary>
      <content type="html">
        &lt;div&gt;&lt;p&gt;Sometimes when you’re working with several different dictionaries, you need to group and manage them as a single one. In other situations, you can have multiple dictionaries representing different &lt;strong&gt;scopes&lt;/strong&gt; or &lt;strong&gt;contexts&lt;/strong&gt; and need to handle them as a single dictionary that allows you to access the underlying data following a given order or priority. In those cases, you can take advantage of Python’s &lt;a href=&quot;https://docs.python.org/3/library/collections.html?highlight=collections#collections.ChainMap&quot;&gt;&lt;code&gt;ChainMap&lt;/code&gt;&lt;/a&gt; from the &lt;a href=&quot;https://docs.python.org/3/library/collections.html#module-collections&quot;&gt;&lt;code&gt;collections&lt;/code&gt; module&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ChainMap&lt;/code&gt; groups multiple dictionaries and mappings in a single, updatable view with dictionary-like behavior. Additionally, &lt;code&gt;ChainMap&lt;/code&gt; provides features that allow you to efficiently manage various dictionaries, define key lookup priorities, and more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this tutorial, you’ll learn how to:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create &lt;strong&gt;&lt;code&gt;ChainMap&lt;/code&gt; instances&lt;/strong&gt; in your Python programs&lt;/li&gt;
&lt;li&gt;Explore the &lt;strong&gt;differences&lt;/strong&gt; between &lt;code&gt;ChainMap&lt;/code&gt; and &lt;code&gt;dict&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;ChainMap&lt;/code&gt; to work with &lt;strong&gt;several dictionaries as one&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Manage &lt;strong&gt;key lookup priorities&lt;/strong&gt; with &lt;code&gt;ChainMap&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To get the most out of this tutorial, you should know the basics of working with &lt;a href=&quot;https://realpython.com/python-dicts/&quot;&gt;dictionaries&lt;/a&gt; and &lt;a href=&quot;https://realpython.com/python-lists-tuples/&quot;&gt;lists&lt;/a&gt; in Python.&lt;/p&gt;
&lt;p&gt;By the end of the journey, you’ll find a few practical examples that will help you better understand the most relevant features and use cases of &lt;code&gt;ChainMap&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;alert alert-warning&quot; role=&quot;alert&quot;&gt;
&lt;p&gt;&lt;strong markdown=&quot;1&quot;&gt;Free Bonus:&lt;/strong&gt; &lt;a href=&quot;https://realpython.com/bonus/python-mastery-course/&quot; class=&quot;alert-link&quot; data-toggle=&quot;modal&quot; data-target=&quot;#modal-python-mastery-course&quot; data-focus=&quot;false&quot; markdown=&quot;1&quot;&gt;5 Thoughts On Python Mastery&lt;/a&gt;, a free course for Python developers that shows you the roadmap and the mindset you’ll need to take your Python skills to the next level.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;getting-started-with-pythons-chainmap&quot;&gt;Getting Started With Python’s &lt;code&gt;ChainMap&lt;/code&gt;&lt;a class=&quot;headerlink&quot; href=&quot;#getting-started-with-pythons-chainmap&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Python’s &lt;a href=&quot;https://docs.python.org/3/library/collections.html#collections.ChainMap&quot;&gt;&lt;code&gt;ChainMap&lt;/code&gt;&lt;/a&gt; was added to &lt;code&gt;collections&lt;/code&gt; in &lt;a href=&quot;https://docs.python.org/3/whatsnew/3.3.html#collections&quot;&gt;Python 3.3&lt;/a&gt; as a handy tool for managing multiple &lt;strong&gt;scopes&lt;/strong&gt; and &lt;strong&gt;contexts&lt;/strong&gt;. This class allows you to group several dictionaries and other &lt;a href=&quot;https://docs.python.org/3/glossary.html#term-mapping&quot;&gt;mappings&lt;/a&gt; together to make them logically appear and behave as one. It creates a single &lt;strong&gt;updatable view&lt;/strong&gt; that works similar to a regular dictionary but with some internal differences.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ChainMap&lt;/code&gt; doesn’t merge its mappings together. Instead, it keeps them in an internal list of mappings. Then &lt;code&gt;ChainMap&lt;/code&gt; reimplements common dictionary operations on top of that list. Since the internal list holds references to the original input mapping, any changes in those mappings affect the &lt;code&gt;ChainMap&lt;/code&gt; object as a whole.&lt;/p&gt;
&lt;p&gt;Storing the input mappings in a list allows you to have duplicate keys in a given chain map. If you perform a &lt;strong&gt;key lookup&lt;/strong&gt;, then &lt;code&gt;ChainMap&lt;/code&gt; searches the list of mappings until it finds the first occurrence of the target key. If the key is missing, then you get a &lt;a href=&quot;https://realpython.com/python-keyerror/&quot;&gt;&lt;code&gt;KeyError&lt;/code&gt;&lt;/a&gt; as usual.&lt;/p&gt;
&lt;p&gt;Storing the mappings in a list truly shines when you need to manage nested &lt;a href=&quot;https://realpython.com/python-namespaces-scope/&quot;&gt;scopes&lt;/a&gt;, where each mapping represents a specific scope or context.&lt;/p&gt;
&lt;p&gt;To better understand what scopes and contexts are about, think about how Python resolves names. When Python looks for a name, it searches in &lt;a href=&quot;https://realpython.com/python-scope-legb-rule/#locals&quot;&gt;&lt;code&gt;locals()&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/python-scope-legb-rule/#globals&quot;&gt;&lt;code&gt;globals()&lt;/code&gt;&lt;/a&gt;, and finally &lt;a href=&quot;https://realpython.com/python-scope-legb-rule/#builtins-the-built-in-scope&quot;&gt;&lt;code&gt;builtins&lt;/code&gt;&lt;/a&gt; until it finds the first occurrence of the target name. If the name doesn’t exist, then you get a &lt;code&gt;NameError&lt;/code&gt;. Dealing with scopes and contexts is the most common kind of problem you can solve with &lt;code&gt;ChainMap&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When you’re working with &lt;code&gt;ChainMap&lt;/code&gt;, you can chain several dictionaries with keys that are either &lt;a href=&quot;https://en.wikipedia.org/wiki/Disjoint_sets&quot;&gt;disjoint&lt;/a&gt; or &lt;a href=&quot;https://en.wikipedia.org/wiki/Intersection_(set_theory)&quot;&gt;intersecting&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the first case, &lt;code&gt;ChainMap&lt;/code&gt; allows you to treat all your dictionaries as one. So, you can access the key-value pairs as if you were working with a single dictionary. In the second case, besides managing your dictionaries as one, you can also take advantage of the internal list of mappings to define some sort of &lt;strong&gt;access priority&lt;/strong&gt; for repeated keys across your dictionaries. That’s why &lt;code&gt;ChainMap&lt;/code&gt; objects are great for handling multiple contexts.&lt;/p&gt;
&lt;p&gt;A curious behavior of &lt;code&gt;ChainMap&lt;/code&gt; is that &lt;strong&gt;mutations&lt;/strong&gt;, such as updating, adding, deleting, clearing, and popping keys, act only on the first mapping in the internal list of mappings. Here’s a summary of the main features of &lt;code&gt;ChainMap&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Builds an &lt;strong&gt;updatable view&lt;/strong&gt; from several input mappings&lt;/li&gt;
&lt;li&gt;Provides almost the &lt;strong&gt;same interface as a dictionary&lt;/strong&gt;, but with some extra features&lt;/li&gt;
&lt;li&gt;Doesn’t merge the input mappings but instead keeps them in an &lt;strong&gt;internal public list&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Sees &lt;strong&gt;external changes&lt;/strong&gt; in the input mappings&lt;/li&gt;
&lt;li&gt;Can contain &lt;strong&gt;repeated keys&lt;/strong&gt; with different values&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Searches keys sequentially&lt;/strong&gt; through the internal list of mappings&lt;/li&gt;
&lt;li&gt;Throws a &lt;strong&gt;&lt;code&gt;KeyError&lt;/code&gt; when a key is missing&lt;/strong&gt; after searching the entire list of mappings&lt;/li&gt;
&lt;li&gt;Performs &lt;strong&gt;mutations only on the first mapping&lt;/strong&gt; in the internal list&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this tutorial, you’ll learn a lot more about all these cool features of &lt;code&gt;ChainMap&lt;/code&gt;. The following section will guide you through how to create new instances of &lt;code&gt;ChainMap&lt;/code&gt; in your code.&lt;/p&gt;
&lt;h3 id=&quot;instantiating-chainmap&quot;&gt;Instantiating &lt;code&gt;ChainMap&lt;/code&gt;&lt;a class=&quot;headerlink&quot; href=&quot;#instantiating-chainmap&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To create &lt;code&gt;ChainMap&lt;/code&gt; in your Python code, you first need to import the class from &lt;code&gt;collections&lt;/code&gt; and then call it as usual. The class initializer can take zero or more mappings as arguments. With no arguments, it initializes a chain map with an empty dictionary inside:&lt;/p&gt;
&lt;div class=&quot;highlight python repl&quot;&gt;&lt;span class=&quot;repl-toggle&quot; title=&quot;Toggle REPL prompts and output&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;collections&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ChainMap&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;collections&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;OrderedDict&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;defaultdict&lt;/span&gt;

&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;# Use no arguments&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ChainMap&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;ChainMap({})&lt;/span&gt;

&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;# Use regular dictionaries&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;numbers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;one&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;two&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;letters&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;b&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;B&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ChainMap&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;numbers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;letters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;ChainMap({&#x27;one&#x27;: 1, &#x27;two&#x27;: 2}, {&#x27;a&#x27;: &#x27;A&#x27;, &#x27;b&#x27;: &#x27;B&#x27;})&lt;/span&gt;

&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ChainMap&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;numbers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;b&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;B&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;ChainMap({&#x27;one&#x27;: 1, &#x27;two&#x27;: 2}, {&#x27;a&#x27;: &#x27;A&#x27;, &#x27;b&#x27;: &#x27;B&#x27;})&lt;/span&gt;

&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;# Use other mappings&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;numbers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;OrderedDict&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;one&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;two&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;letters&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;defaultdict&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;b&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;B&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ChainMap&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;numbers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;letters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;ChainMap(&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;    OrderedDict([(&#x27;one&#x27;, 1), (&#x27;two&#x27;, 2)]),&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;    defaultdict(&amp;lt;class &#x27;str&#x27;&amp;gt;, {&#x27;a&#x27;: &#x27;A&#x27;, &#x27;b&#x27;: &#x27;B&#x27;})&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here, you create several &lt;code&gt;ChainMap&lt;/code&gt; objects using different combinations of mappings. In each case, &lt;code&gt;ChainMap&lt;/code&gt; returns a single dictionary-like view of all the input mappings. Note that you can use any type of mapping, such as &lt;a href=&quot;https://realpython.com/python-ordereddict/&quot;&gt;&lt;code&gt;OrderedDict&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://realpython.com/python-defaultdict/&quot;&gt;&lt;code&gt;defaultdict&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can also create &lt;code&gt;ChainMap&lt;/code&gt; objects using the &lt;a href=&quot;https://realpython.com/instance-class-and-static-methods-demystified/&quot;&gt;class method&lt;/a&gt; &lt;code&gt;.fromkeys()&lt;/code&gt;. This method can take an iterable of keys and an optional default value for all the keys:&lt;/p&gt;
&lt;div class=&quot;highlight python repl&quot;&gt;&lt;span class=&quot;repl-toggle&quot; title=&quot;Toggle REPL prompts and output&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;collections&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ChainMap&lt;/span&gt;

&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ChainMap&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fromkeys&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;one&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;two&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;three&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;ChainMap({&#x27;one&#x27;: None, &#x27;two&#x27;: None, &#x27;three&#x27;: None})&lt;/span&gt;

&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ChainMap&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fromkeys&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;one&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;two&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;three&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;ChainMap({&#x27;one&#x27;: 0, &#x27;two&#x27;: 0, &#x27;three&#x27;: 0})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you call &lt;code&gt;.fromkeys()&lt;/code&gt; on &lt;code&gt;ChainMap&lt;/code&gt; with an iterable of keys as an argument, then you get a chain map with a single dictionary. The keys come from the input iterable, and the values default to &lt;a href=&quot;https://realpython.com/null-in-python/&quot;&gt;&lt;code&gt;None&lt;/code&gt;&lt;/a&gt;. Optionally, you can pass a second argument to &lt;code&gt;.fromkeys()&lt;/code&gt; to provide a sensible default value for every key.&lt;/p&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;https://realpython.com/python-chainmap/?utm_source=realpython&amp;utm_medium=rss&quot;&gt;Read the full article at https://realpython.com/python-chainmap/ »&lt;/a&gt;&lt;/h2&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Real Python Podcast – Episode #71: Start Using a Debugger With Your Python Code</title>
      <id>https://realpython.com/podcasts/rpp/71/</id>
      <link href="https://realpython.com/podcasts/rpp/71/"/>
      <updated>2021-07-30T12:00:00+00:00</updated>
      <summary>Are you still sprinkling print statements throughout your code while writing it? Print statements are often clunky and offer only a limited view of the state of your code. Have you thought there must be a better way? This week on the show, we have Nina Zakharenko to discuss her conference talk titled &quot;Goodbye Print, Hello Debugger.&quot;</summary>
      <content type="html">
        &lt;p&gt;Are you still sprinkling print statements throughout your code while writing it? Print statements are often clunky and offer only a limited view of the state of your code. Have you thought there must be a better way? This week on the show, we have Nina Zakharenko to discuss her conference talk titled &quot;Goodbye Print, Hello Debugger.&quot;&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Python and REST APIs: Interacting With Web Services</title>
      <id>https://realpython.com/api-integration-in-python/</id>
      <link href="https://realpython.com/api-integration-in-python/"/>
      <updated>2021-07-28T14:01:00+00:00</updated>
      <summary>In this tutorial, you&#x27;ll learn how to use Python to communicate with REST APIs. You&#x27;ll learn about REST architecture and how to use the requests library to get data from a REST API. You&#x27;ll also explore different Python tools you can use to build REST APIs.</summary>
      <content type="html">
        &lt;div&gt;&lt;p&gt;There’s an amazing amount of data available on the Web. Many &lt;strong&gt;web services&lt;/strong&gt;, like YouTube and GitHub, make their data accessible to third-party applications through an &lt;strong&gt;application programming interface (API)&lt;/strong&gt;. One of the most popular ways to build APIs is the &lt;strong&gt;REST&lt;/strong&gt; architecture style. Python provides some great tools not only to get data from REST APIs but also to build your own Python REST APIs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this tutorial, you’ll learn:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What &lt;strong&gt;REST&lt;/strong&gt; architecture is&lt;/li&gt;
&lt;li&gt;How &lt;strong&gt;REST APIs&lt;/strong&gt; provide access to web data&lt;/li&gt;
&lt;li&gt;How to consume data from REST APIs using the &lt;strong&gt;&lt;code&gt;requests&lt;/code&gt;&lt;/strong&gt; library&lt;/li&gt;
&lt;li&gt;What steps to take to &lt;strong&gt;build a REST API&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;What some popular &lt;strong&gt;Python tools&lt;/strong&gt; are for building REST APIs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By using Python and REST APIs, you can retrieve, parse, update, and manipulate the data provided by any web service you’re interested in.&lt;/p&gt;
&lt;div class=&quot;alert alert-warning&quot; role=&quot;alert&quot;&gt;&lt;p&gt;&lt;strong&gt;Free Bonus:&lt;/strong&gt; &lt;a href=&quot;&quot; class=&quot;alert-link&quot; data-toggle=&quot;modal&quot; data-target=&quot;#modal-rest-api-guide-exampes&quot; data-focus=&quot;false&quot;&gt;Click here to download a copy of the &quot;REST API Examples&quot; Guide&lt;/a&gt; and get a hands-on introduction to Python + REST API principles with actionable examples.&lt;/p&gt;&lt;/div&gt;

&lt;h2 id=&quot;rest-architecture&quot;&gt;REST Architecture&lt;a class=&quot;headerlink&quot; href=&quot;#rest-architecture&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;REST&lt;/strong&gt; stands for &lt;a href=&quot;https://en.wikipedia.org/wiki/Representational_state_transfer&quot;&gt;&lt;strong&gt;re&lt;/strong&gt;presentational &lt;strong&gt;s&lt;/strong&gt;tate &lt;strong&gt;t&lt;/strong&gt;ransfer&lt;/a&gt; and is a software architecture style that defines a pattern for &lt;a href=&quot;https://en.wikipedia.org/wiki/Client%E2%80%93server_model&quot;&gt;client and server&lt;/a&gt; communications over a network. REST provides a set of constraints for software architecture to promote performance, scalability, simplicity, and reliability in the system.&lt;/p&gt;
&lt;p&gt;REST defines the following architectural constraints:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stateless:&lt;/strong&gt; The server won’t maintain any state between requests from the client.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Client-server:&lt;/strong&gt; The client and server must be decoupled from each other, allowing each to develop independently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cacheable:&lt;/strong&gt; The data retrieved from the server should be cacheable either by the client or by the server. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uniform interface:&lt;/strong&gt; The server will provide a uniform interface for accessing resources without defining their representation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Layered system:&lt;/strong&gt; The client may access the resources on the server indirectly through other layers such as a &lt;a href=&quot;https://en.wikipedia.org/wiki/Proxy_server&quot;&gt;proxy&lt;/a&gt; or &lt;a href=&quot;https://en.wikipedia.org/wiki/Load_balancing_(computing)&quot;&gt;load balancer&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code on demand (optional):&lt;/strong&gt; The server may transfer code to the client that it can run, such as &lt;a href=&quot;https://realpython.com/python-vs-javascript/&quot;&gt;JavaScript&lt;/a&gt; for a single-page application.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note, REST is &lt;em&gt;not&lt;/em&gt; a specification but a set of guidelines on how to architect a network-connected software system.&lt;/p&gt;
&lt;h2 id=&quot;rest-apis-and-web-services&quot;&gt;REST APIs and Web Services&lt;a class=&quot;headerlink&quot; href=&quot;#rest-apis-and-web-services&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;REST web service&lt;/strong&gt; is any web service that adheres to REST architecture constraints. These web services expose their data to the outside world through an API. REST APIs provide access to web service data through public web URLs.&lt;/p&gt;
&lt;p&gt;For example, here’s one of the URLs for &lt;a href=&quot;https://docs.github.com/en/free-pro-team@latest/rest&quot;&gt;GitHub’s REST API&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;https://api.github.com/users/&amp;lt;username&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This URL allows you to access information about a specific GitHub user. You access data from a REST API by sending an &lt;a href=&quot;https://realpython.com/python-https/#what-is-http&quot;&gt;HTTP request&lt;/a&gt; to a specific URL and processing the response.&lt;/p&gt;
&lt;h3 id=&quot;http-methods&quot;&gt;HTTP Methods&lt;a class=&quot;headerlink&quot; href=&quot;#http-methods&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;REST APIs listen for &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods&quot;&gt;HTTP methods&lt;/a&gt; like &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;POST&lt;/code&gt;, and &lt;code&gt;DELETE&lt;/code&gt; to know which operations to perform on the web service’s resources. A &lt;strong&gt;resource&lt;/strong&gt; is any data available in the web service that can be accessed and manipulated with &lt;strong&gt;HTTP requests&lt;/strong&gt; to the REST API. The HTTP method tells the API which action to perform on the resource.&lt;/p&gt;
&lt;p&gt;While there are many HTTP methods, the five methods listed below are the most commonly used with REST APIs:&lt;/p&gt;
&lt;div class=&quot;table-responsive&quot;&gt;
&lt;table class=&quot;table table-hover&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP method&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Retrieve an existing resource.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create a new resource.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PUT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Update an existing resource.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PATCH&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Partially update an existing resource.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;DELETE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete a resource.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;A REST API client application can use these five HTTP methods to manage the state of resources in the web service.&lt;/p&gt;
&lt;h3 id=&quot;status-codes&quot;&gt;Status Codes&lt;a class=&quot;headerlink&quot; href=&quot;#status-codes&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Once a REST API receives and processes an HTTP request, it will return an &lt;strong&gt;HTTP response&lt;/strong&gt;. Included in this response is an &lt;strong&gt;HTTP status code&lt;/strong&gt;. This code provides information about the results of the request. An application sending requests to the API can check the status code and perform actions based on the result. These actions could include handling errors or displaying a success message to a user.&lt;/p&gt;
&lt;p&gt;Below is a list of the most common status codes returned by REST APIs:&lt;/p&gt;
&lt;div class=&quot;table-responsive&quot;&gt;
&lt;table class=&quot;table table-hover&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Code&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OK&lt;/td&gt;
&lt;td&gt;The requested action was successful.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;201&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Created&lt;/td&gt;
&lt;td&gt;A new resource was created.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;202&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Accepted&lt;/td&gt;
&lt;td&gt;The request was received, but no modification has been made yet.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;204&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No Content&lt;/td&gt;
&lt;td&gt;The request was successful, but the response has no content.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bad Request&lt;/td&gt;
&lt;td&gt;The request was malformed.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Unauthorized&lt;/td&gt;
&lt;td&gt;The client is not authorized to perform the requested action.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;404&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Not Found&lt;/td&gt;
&lt;td&gt;The requested resource was not found.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;415&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Unsupported Media Type&lt;/td&gt;
&lt;td&gt;The request data format is not supported by the server.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;422&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Unprocessable Entity&lt;/td&gt;
&lt;td&gt;The request data was properly formatted but contained invalid or missing data.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal Server Error&lt;/td&gt;
&lt;td&gt;The server threw an error when processing the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;These ten status codes represent only a small subset of the available &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_HTTP_status_codes&quot;&gt;HTTP status codes&lt;/a&gt;. Status codes are numbered based on the category of the result:&lt;/p&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;https://realpython.com/api-integration-in-python/?utm_source=realpython&amp;utm_medium=rss&quot;&gt;Read the full article at https://realpython.com/api-integration-in-python/ »&lt;/a&gt;&lt;/h2&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Pandas DataFrame: Working With Data Efficiently</title>
      <id>https://realpython.com/courses/pandas-dataframe-working-with-data/</id>
      <link href="https://realpython.com/courses/pandas-dataframe-working-with-data/"/>
      <updated>2021-07-27T14:00:00+00:00</updated>
      <summary>In this course, you&#x27;ll get started with Pandas DataFrames, which are powerful and widely used two-dimensional data structures. You&#x27;ll learn how to perform basic operations with data, handle missing values, work with time-series data, and visualize data from a Pandas DataFrame.</summary>
      <content type="html">
        &lt;p&gt;The &lt;a href=&quot;https://pandas.pydata.org/pandas-docs/stable/reference/frame.html&quot;&gt;Pandas DataFrame&lt;/a&gt; is a &lt;a href=&quot;https://pandas.pydata.org/pandas-docs/stable/user_guide/dsintro.html&quot;&gt;structure&lt;/a&gt; that contains &lt;strong&gt;two-dimensional data&lt;/strong&gt; and its corresponding &lt;strong&gt;labels&lt;/strong&gt;. DataFrames are widely used in &lt;a href=&quot;https://realpython.com/tutorials/data-science/&quot;&gt;data science&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/tutorials/machine-learning/&quot;&gt;machine learning&lt;/a&gt;, scientific computing, and many other data-intensive fields.&lt;/p&gt;
&lt;p&gt;DataFrames are similar to &lt;a href=&quot;https://realpython.com/python-sql-libraries/&quot;&gt;SQL tables&lt;/a&gt; or the spreadsheets that you work with in Excel or Calc. In many cases, DataFrames are faster, easier to use, and more powerful than tables or spreadsheets because they&amp;rsquo;re an integral part of the &lt;a href=&quot;https://www.python.org/about/&quot;&gt;Python&lt;/a&gt; and &lt;a href=&quot;https://numpy.org/#&quot;&gt;NumPy&lt;/a&gt; ecosystems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this course, you&amp;rsquo;ll learn:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What a &lt;strong&gt;Pandas DataFrame&lt;/strong&gt; is and how to create one&lt;/li&gt;
&lt;li&gt;How to &lt;strong&gt;access, modify, add, sort, filter, and delete&lt;/strong&gt; data&lt;/li&gt;
&lt;li&gt;How to handle &lt;strong&gt;missing values&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;How to work with &lt;strong&gt;time-series data&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;How to quickly &lt;strong&gt;visualize&lt;/strong&gt; data&lt;/li&gt;
&lt;/ul&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Python&#x27;s collections: A Buffet of Specialized Data Types</title>
      <id>https://realpython.com/python-collections-module/</id>
      <link href="https://realpython.com/python-collections-module/"/>
      <updated>2021-07-26T14:00:00+00:00</updated>
      <summary>In this tutorial, you&#x27;ll learn all about the series of specialized container data types in the collections module from the Python standard library.</summary>
      <content type="html">
        &lt;div&gt;&lt;p&gt;Python’s &lt;a href=&quot;https://docs.python.org/3/library/collections.html#module-collections&quot;&gt;&lt;code&gt;collections&lt;/code&gt;&lt;/a&gt; module provides a rich set of &lt;strong&gt;specialized container data types&lt;/strong&gt; carefully designed to approach specific programming problems in a Pythonic and efficient way. The module also provides wrapper classes that make it safer to create custom classes that behave similar to the built-in types &lt;code&gt;dict&lt;/code&gt;, &lt;code&gt;list&lt;/code&gt;, and &lt;code&gt;str&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Learning about the data types and classes in &lt;code&gt;collections&lt;/code&gt; will allow you to grow your programming tool kit with a valuable set of reliable and efficient tools.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this tutorial, you’ll learn how to:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Write &lt;strong&gt;readable&lt;/strong&gt; and &lt;strong&gt;explicit&lt;/strong&gt; code with &lt;code&gt;namedtuple&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Build &lt;strong&gt;efficient queues and stacks&lt;/strong&gt; with &lt;code&gt;deque&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Count&lt;/strong&gt; objects quickly with &lt;code&gt;Counter&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Handle &lt;strong&gt;missing dictionary keys&lt;/strong&gt; with &lt;code&gt;defaultdict&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Guarantee the &lt;strong&gt;insertion order&lt;/strong&gt; of keys with &lt;code&gt;OrderedDict&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Manage &lt;strong&gt;multiple dictionaries&lt;/strong&gt; as a single unit with &lt;code&gt;ChainMap&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To better understand the data types and classes in &lt;code&gt;collections&lt;/code&gt;, you should know the basics of working with Python’s built-in data types, such as &lt;a href=&quot;https://realpython.com/python-lists-tuples/&quot;&gt;lists, tuples&lt;/a&gt;, and &lt;a href=&quot;https://realpython.com/python-dicts/&quot;&gt;dictionaries&lt;/a&gt;. Additionally, the last part of the article requires some basic knowledge about &lt;a href=&quot;https://realpython.com/python3-object-oriented-programming/&quot;&gt;object-oriented programming&lt;/a&gt; in Python.&lt;/p&gt;
&lt;div class=&quot;alert alert-warning&quot; role=&quot;alert&quot;&gt;
&lt;p&gt;&lt;strong markdown=&quot;1&quot;&gt;Free Download:&lt;/strong&gt; &lt;a href=&quot;https://realpython.com/bonus/python-tricks-sample-pdf/&quot; class=&quot;alert-link&quot; data-toggle=&quot;modal&quot; data-target=&quot;#modal-python-tricks-sample-pdf&quot; data-focus=&quot;false&quot; markdown=&quot;1&quot;&gt;Get a sample chapter from Python Tricks: The Book&lt;/a&gt; that shows you Python’s best practices with simple examples you can apply instantly to write more beautiful + Pythonic code.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;getting-started-with-pythons-collections&quot;&gt;Getting Started With Python’s &lt;code&gt;collections&lt;/code&gt;&lt;a class=&quot;headerlink&quot; href=&quot;#getting-started-with-pythons-collections&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Back in &lt;a href=&quot;https://docs.python.org/3/whatsnew/2.4.html#new-improved-and-deprecated-modules&quot;&gt;Python 2.4&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/raymondh&quot;&gt;Raymond Hettinger&lt;/a&gt; contributed a new module called &lt;a href=&quot;https://docs.python.org/3/library/collections.html#module-collections&quot;&gt;&lt;code&gt;collections&lt;/code&gt;&lt;/a&gt; to the &lt;a href=&quot;https://docs.python.org/3/library/index.html&quot;&gt;standard library&lt;/a&gt;. The goal was to provide various specialized collection data types to approach specific programming problems.&lt;/p&gt;
&lt;p&gt;At that time, &lt;code&gt;collections&lt;/code&gt; only included one data structure, &lt;strong&gt;&lt;code&gt;deque&lt;/code&gt;&lt;/strong&gt;, which was specially designed as a &lt;a href=&quot;https://en.wikipedia.org/wiki/Double-ended_queue&quot;&gt;double-ended queue&lt;/a&gt; that supports efficient &lt;strong&gt;append&lt;/strong&gt; and &lt;strong&gt;pop&lt;/strong&gt; operations on either end of the sequence. From this point on, several modules in the standard library took advantage of &lt;code&gt;deque&lt;/code&gt; to improve the performance of their classes and structures. Some outstanding examples are &lt;a href=&quot;https://docs.python.org/3/library/queue.html#module-queue&quot;&gt;&lt;code&gt;queue&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://docs.python.org/3/library/threading.html#module-threading&quot;&gt;&lt;code&gt;threading&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With time, a handful of specialized container data types populated the module:&lt;/p&gt;
&lt;div class=&quot;table-responsive&quot;&gt;
&lt;table class=&quot;table table-hover&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data type&lt;/th&gt;
&lt;th&gt;Python version&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/library/collections.html#collections.deque&quot;&gt;&lt;code&gt;deque&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/whatsnew/2.4.html#new-improved-and-deprecated-modules&quot;&gt;2.4&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A sequence-like collection that supports efficient addition and removal of items from either end of the sequence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/library/collections.html#collections.defaultdict&quot;&gt;&lt;code&gt;defaultdict&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/whatsnew/2.5.html#new-improved-and-removed-modules&quot;&gt;2.5&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A dictionary subclass for constructing default values for missing keys and automatically adding them to the dictionary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/library/collections.html#collections.namedtuple&quot;&gt;&lt;code&gt;namedtuple()&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/whatsnew/2.6.html#new-and-improved-modules&quot;&gt;2.6&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A factory function for creating subclasses of &lt;code&gt;tuple&lt;/code&gt; that provides named fields that allow accessing items by name while keeping the ability to access items by index&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/library/collections.html#collections.OrderedDict&quot;&gt;&lt;code&gt;OrderedDict&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/whatsnew/2.7.html#new-and-improved-modules&quot;&gt;2.7&lt;/a&gt;, &lt;a href=&quot;https://docs.python.org/3/whatsnew/3.1.html#pep-372-ordered-dictionaries&quot;&gt;3.1&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A dictionary subclass that keeps the key-value pairs ordered according to when the keys are inserted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/library/collections.html#collections.Counter&quot;&gt;&lt;code&gt;Counter&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/whatsnew/2.7.html#new-and-improved-modules&quot;&gt;2.7&lt;/a&gt;, &lt;a href=&quot;https://docs.python.org/3/whatsnew/3.1.html#pep-372-ordered-dictionaries&quot;&gt;3.1&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A dictionary subclass that supports convenient counting of unique items in a sequence or iterable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/library/collections.html#collections.ChainMap&quot;&gt;&lt;code&gt;ChainMap&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/whatsnew/3.3.html#collections&quot;&gt;3.3&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A dictionary-like class that allows treating a number of mappings as a single dictionary object&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Besides these specialized data types, &lt;code&gt;collections&lt;/code&gt; also provides three base classes that facilitate the creations of custom lists, dictionaries, and &lt;a href=&quot;https://realpython.com/python-strings/&quot;&gt;strings&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&quot;table-responsive&quot;&gt;
&lt;table class=&quot;table table-hover&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Class&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/library/collections.html#collections.UserDict&quot;&gt;&lt;code&gt;UserDict&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A wrapper class around a dictionary object that facilitates subclassing &lt;code&gt;dict&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/library/collections.html#collections.UserList&quot;&gt;&lt;code&gt;UserList&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A wrapper class around a list object that facilitates subclassing &lt;code&gt;list&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://docs.python.org/3/library/collections.html#collections.UserString&quot;&gt;&lt;code&gt;UserString&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;A wrapper class around a string object that facilitates subclassing &lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;The need for these wrapper classes was partially eclipsed by the ability to subclass the corresponding standard built-in data types. However, sometimes using these classes is safer and less error-prone than using standard data types.&lt;/p&gt;
&lt;p&gt;With this brief introduction to &lt;code&gt;collections&lt;/code&gt; and the specific use cases that the data structures and classes in this module can solve, it’s time to take a closer look at them. Before that, it’s important to point out that this tutorial is an introduction to &lt;code&gt;collections&lt;/code&gt; as a whole. In most of the following sections, you’ll find a blue alert box that’ll guide you to a dedicated article on the class or function at hand.&lt;/p&gt;
&lt;h2 id=&quot;improving-code-readability-namedtuple&quot;&gt;Improving Code Readability: &lt;code&gt;namedtuple()&lt;/code&gt;&lt;a class=&quot;headerlink&quot; href=&quot;#improving-code-readability-namedtuple&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Python’s &lt;code&gt;namedtuple()&lt;/code&gt; is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Factory_(object-oriented_programming)&quot;&gt;factory function&lt;/a&gt; that allows you to create &lt;code&gt;tuple&lt;/code&gt; subclasses with &lt;strong&gt;named fields&lt;/strong&gt;. These fields give you direct access to the values in a given named tuple using the &lt;strong&gt;dot notation&lt;/strong&gt;, like in &lt;code&gt;obj.attr&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The need for this feature arose because using indices to access the values in a regular tuple is annoying, difficult to read, and error-prone. This is especially true if the tuple you’re working with has several items and is constructed far away from where you’re using it.&lt;/p&gt;
&lt;div class=&quot;alert alert-primary&quot; role=&quot;alert&quot;&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Check out &lt;a href=&quot;https://realpython.com/python-namedtuple/&quot;&gt;Write Pythonic and Clean Code With namedtuple&lt;/a&gt; for a deeper dive into how to use &lt;code&gt;namedtuple&lt;/code&gt; in Python.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;A tuple subclass with named fields that developers can access with the dot notation seemed like a desirable feature back in Python 2.6. That’s the origin of &lt;code&gt;namedtuple()&lt;/code&gt;. The tuple subclasses you can build with this function are a big win in code readability if you compare them with regular tuples.&lt;/p&gt;
&lt;p&gt;To put the code readability problem in perspective, consider &lt;a href=&quot;https://docs.python.org/3/library/functions.html#divmod&quot;&gt;&lt;code&gt;divmod()&lt;/code&gt;&lt;/a&gt;. This built-in function takes two (non-complex) &lt;a href=&quot;https://realpython.com/python-numbers/&quot;&gt;numbers&lt;/a&gt; and returns a tuple with the &lt;strong&gt;quotient&lt;/strong&gt; and &lt;strong&gt;remainder&lt;/strong&gt; that result from the &lt;strong&gt;integer division&lt;/strong&gt; of the input values:&lt;/p&gt;
&lt;div class=&quot;highlight python repl&quot;&gt;&lt;span class=&quot;repl-toggle&quot; title=&quot;Toggle REPL prompts and output&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;divmod&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;(2, 2)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;It works nicely. However, is this result readable? Can you tell what the meaning of each number in the output is? Fortunately, Python offers a way to improve this. You can code a custom version of &lt;code&gt;divmod()&lt;/code&gt; with an explicit result using &lt;code&gt;namedtuple&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&quot;highlight python repl&quot;&gt;&lt;span class=&quot;repl-toggle&quot; title=&quot;Toggle REPL prompts and output&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;collections&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;namedtuple&lt;/span&gt;

&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;custom_divmod&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;... &lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;DivMod&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;namedtuple&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;DivMod&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;quotient remainder&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;... &lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DivMod&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;divmod&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;...&lt;/span&gt;

&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;result&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;custom_divmod&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;result&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;DivMod(quotient=2, remainder=2)&lt;/span&gt;

&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;result&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;quotient&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;gp&quot;&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;n&quot;&gt;result&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;remainder&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now you know the meaning of each value in the result. You can also access each independent value using the dot notation and a descriptive field name.&lt;/p&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;https://realpython.com/python-collections-module/?utm_source=realpython&amp;utm_medium=rss&quot;&gt;Read the full article at https://realpython.com/python-collections-module/ »&lt;/a&gt;&lt;/h2&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Real Python Podcast – Episode #70: What Can You Do With Python and Counting Objects Using &quot;Counter&quot;</title>
      <id>https://realpython.com/podcasts/rpp/70/</id>
      <link href="https://realpython.com/podcasts/rpp/70/"/>
      <updated>2021-07-23T12:00:00+00:00</updated>
      <summary>How is Python being used today, and what can you do with the language? Do you want to develop software, dive into data science and math, automate parts of your job and  digital life, or work with electronics? This week on the show, David Amos is back, and he&#x27;s brought another batch of PyCoder&#x27;s Weekly articles and projects.</summary>
      <content type="html">
        &lt;p&gt;How is Python being used today, and what can you do with the language? Do you want to develop software, dive into data science and math, automate parts of your job and  digital life, or work with electronics? This week on the show, David Amos is back, and he&#x27;s brought another batch of PyCoder&#x27;s Weekly articles and projects.&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Your First Steps With Django: Set Up a Django Project</title>
      <id>https://realpython.com/django-setup/</id>
      <link href="https://realpython.com/django-setup/"/>
      <updated>2021-07-21T14:05:12+00:00</updated>
      <summary>This tutorial provides a walkthrough and a reference for starting a Django project and app. You can use it as a quick setup guide for any future Django project and tutorial you&#x27;ll work on.</summary>
      <content type="html">
        &lt;div&gt;&lt;p&gt;Before you can start to build the individual functionality of a new &lt;a href=&quot;https://www.djangoproject.com/&quot;&gt;Django&lt;/a&gt; web application, you always need to complete a couple of setup steps. This tutorial gives you a &lt;a href=&quot;#command-reference&quot;&gt;reference&lt;/a&gt; for the necessary steps to set up a Django project.&lt;/p&gt;
&lt;p&gt;The tutorial focuses on the initial steps you’ll need to take to start a new web application. To complete it, you’ll need to have &lt;a href=&quot;https://realpython.com/installing-python/&quot;&gt;Python installed&lt;/a&gt; and understand how to work with &lt;a href=&quot;https://realpython.com/python-virtual-environments-a-primer/&quot;&gt;virtual environments&lt;/a&gt; and Python’s package manager, &lt;a href=&quot;https://realpython.com/what-is-pip/&quot;&gt;&lt;code&gt;pip&lt;/code&gt;&lt;/a&gt;. While you won’t need much programming knowledge to complete this setup, you’ll need to &lt;a href=&quot;https://realpython.com/products/python-basics-book/&quot;&gt;know Python&lt;/a&gt; to do anything interesting with the resulting project scaffolding.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;By the end of this tutorial, you’ll know how to:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set up a &lt;strong&gt;virtual environment&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Install&lt;/strong&gt; Django&lt;/li&gt;
&lt;li&gt;Pin your project &lt;strong&gt;dependencies&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Set up a Django &lt;strong&gt;project&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Start a Django &lt;strong&gt;app&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use this tutorial as your go-to reference until you’ve built so many projects that the necessary commands become second nature. Until then, follow the steps outlined below. There are also a few exercises throughout the tutorial to help reinforce what you’ve learned.&lt;/p&gt;
&lt;div class=&quot;alert alert-warning&quot; role=&quot;alert&quot;&gt;&lt;p&gt;&lt;strong&gt;Free Bonus:&lt;/strong&gt; &lt;a href=&quot;#&quot; class=&quot;alert-link&quot; data-toggle=&quot;modal&quot; data-target=&quot;#modal-django-resources-learing-guide&quot; data-focus=&quot;false&quot;&gt;Click here to get access to a free Django Learning Resources Guide (PDF)&lt;/a&gt; that shows you tips and tricks as well as common pitfalls to avoid when building Python + Django web applications.&lt;/p&gt;&lt;/div&gt;

&lt;h2 id=&quot;prepare-your-environment&quot;&gt;Prepare Your Environment&lt;a class=&quot;headerlink&quot; href=&quot;#prepare-your-environment&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When you’re ready to start your new Django web application, create a new folder and navigate into it. In this folder, you’ll set up a new virtual environment using your command line:&lt;/p&gt;
&lt;div class=&quot;highlight sh&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$ &lt;/span&gt;python3 -m venv env
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This command sets up a new virtual environment named &lt;code&gt;env&lt;/code&gt; in your current working directory. Once the process is complete, you also need to activate the virtual environment:&lt;/p&gt;
&lt;div class=&quot;highlight sh&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;source&lt;/span&gt; env/bin/activate
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If the activation was successful, then you’ll see the name of your virtual environment, &lt;code&gt;(env)&lt;/code&gt;, at the beginning of your command prompt. This means that your environment setup is complete.&lt;/p&gt;
&lt;p&gt;You can learn more about how to &lt;a href=&quot;https://realpython.com/python-virtual-environments-a-primer/&quot;&gt;work with virtual environments in Python&lt;/a&gt;, and how to &lt;a href=&quot;https://realpython.com/learning-paths/perfect-your-python-development-setup/&quot;&gt;perfect your Python development setup&lt;/a&gt;, but for your Django setup, you have all you need. You can continue with installing the &lt;code&gt;django&lt;/code&gt; package.&lt;/p&gt;
&lt;h2 id=&quot;install-django-and-pin-your-dependencies&quot;&gt;Install Django and Pin Your Dependencies&lt;a class=&quot;headerlink&quot; href=&quot;#install-django-and-pin-your-dependencies&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Once you’ve created and activated your Python virtual environment, you can install Django into this dedicated development workspace:&lt;/p&gt;
&lt;div class=&quot;highlight sh&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;gp gp-VirtualEnv&quot;&gt;(env)&lt;/span&gt; &lt;span class=&quot;gp&quot;&gt;$ &lt;/span&gt;python -m pip install django
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This command fetches the &lt;code&gt;django&lt;/code&gt; package from the &lt;a href=&quot;https://realpython.com/pypi-publish-python-package/&quot;&gt;Python Package Index (PyPI)&lt;/a&gt; using &lt;code&gt;pip&lt;/code&gt;. After the installation has completed, you can &lt;strong&gt;pin&lt;/strong&gt; your dependencies to make sure that you’re keeping track of which Django version you installed:&lt;/p&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;https://realpython.com/django-setup/?utm_source=realpython&amp;utm_medium=rss&quot;&gt;Read the full article at https://realpython.com/django-setup/ »&lt;/a&gt;&lt;/h2&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Speech Recognition With Python</title>
      <id>https://realpython.com/courses/speech-recognition-python/</id>
      <link href="https://realpython.com/courses/speech-recognition-python/"/>
      <updated>2021-07-20T14:00:00+00:00</updated>
      <summary>In this course, you&#x27;ll cover the fundamentals of speech recognition with Python. You&#x27;ll learn which speech recognition library gives the best results and build a full-featured &quot;Guess The Word&quot; game with it.</summary>
      <content type="html">
        &lt;p&gt;Have you ever wondered how to add speech recognition to your Python project? It&amp;rsquo;s more straightforward than you might think. In this course, you&amp;rsquo;ll find out how.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this course, you&amp;rsquo;ll learn:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How &lt;strong&gt;speech recognition&lt;/strong&gt; works&lt;/li&gt;
&lt;li&gt;What speech recognition &lt;strong&gt;packages&lt;/strong&gt; are available on PyPI&lt;/li&gt;
&lt;li&gt;How to install and use the &lt;strong&gt;SpeechRecognition package&lt;/strong&gt;&amp;mdash;a full-featured and straightforward Python speech recognition library&lt;/li&gt;
&lt;/ul&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Python Community Interview With Dustin Ingram</title>
      <id>https://realpython.com/interview-dustin-ingram/</id>
      <link href="https://realpython.com/interview-dustin-ingram/"/>
      <updated>2021-07-19T14:00:00+00:00</updated>
      <summary>Today I&#x27;m joined by Dustin Ingram, a developer advocate at Google, a director of the PSF, and a maintainer of PyPI. In this interview, we discuss how Google&#x27;s use of Python might differ from your own, maintaining PyPI, his love of PyCons and cooking, and more.</summary>
      <content type="html">
        &lt;div&gt;&lt;p&gt;Today I’m joined by &lt;a href=&quot;https://dustingram.com/&quot;&gt;Dustin Ingram&lt;/a&gt;, a developer advocate at Google focused on supporting the Python community on Google Cloud. He is also a director of the Python Software Foundation (PSF) and a maintainer of PyPI. In this interview, we discuss how Google’s use of Python might differ from your own, what it takes to maintain PyPI, his goals as a PSF director, his love of PyCons, and more.&lt;/p&gt;
&lt;p class=&quot;mt-5&quot;&gt;&lt;strong&gt;Ricky:&lt;/strong&gt; &lt;em&gt;Thanks for joining me, Dustin. I’d like to start with my usual questions: how did you get into programming, and when did you start using Python?&lt;/em&gt; &lt;/p&gt;
&lt;figure&gt;&lt;img loading=&quot;lazy&quot; class=&quot;img-fluid w-25 float-right ml-3 rounded-circle&quot; src=&quot;https://files.realpython.com/media/294415.6f9dda6ea484.png&quot; width=&quot;400&quot; height=&quot;400&quot; srcset=&quot;https://robocrop.realpython.net/?url=https%3A//files.realpython.com/media/294415.6f9dda6ea484.png&amp;amp;w=100&amp;amp;sig=d9ae770bcb01e12278009fe5d5f6165c165b3ee9 100w, https://robocrop.realpython.net/?url=https%3A//files.realpython.com/media/294415.6f9dda6ea484.png&amp;amp;w=200&amp;amp;sig=ec0417cc938e48896c9746d14556213143508091 200w, https://files.realpython.com/media/294415.6f9dda6ea484.png 400w&quot; sizes=&quot;75vw&quot; alt=&quot;Dustin Ingram Headshot&quot; data-asset=&quot;3765&quot;&gt;&lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;Dustin:&lt;/strong&gt; Thanks for having me!&lt;/p&gt;
&lt;p&gt;I like to say that my first programming experience was when someone decided it was allowed—if not encouraged—for me to carry around a TI-83 calculator throughout high school. I spent far less time in geometry class learning geometry and far more time writing text-based games in &lt;a href=&quot;https://en.wikipedia.org/wiki/BASIC&quot;&gt;BASIC&lt;/a&gt; and, later, programs that would do my physics homework for me. &lt;/p&gt;
&lt;p&gt;I even released my first open source program: a little animation that made your calculator screen look like the flowing, garbled characters in &lt;em&gt;The Matrix&lt;/em&gt; (which I was obsessed with) and &lt;a href=&quot;https://www.ticalc.org/archives/files/fileinfo/296/29640.html&quot;&gt;published it&lt;/a&gt; to Texas Instruments’ third-party software repository.&lt;/p&gt;
&lt;p&gt;But my first actual exposure to programming was probably when I was first introduced to &lt;a href=&quot;https://en.wikipedia.org/wiki/Logo_(programming_language)&quot;&gt;Logo&lt;/a&gt;, the graphical programming language with the turtle as a cursor. I think it was elementary school, and the task was to try and reproduce some simple shapes, but I distinctly remember being blown away by the endless possibilities. I wasn’t confined to a predetermined path like a lot of the point-and-click computer games I had played before—I could make that turtle do anything.&lt;/p&gt;
&lt;p&gt;My dad is a tool designer, and when I was in high school, he ran a machine shop. The shop had a lot of the classic metalworking tools: lathes and milling machines that were operated mostly by hand. But they also had some newer computer numerical control (CNC) machines that were programmed with a language called &lt;a href=&quot;https://en.wikipedia.org/wiki/G-code&quot;&gt;G-code&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;If you’ve never seen G-code before, the best I can describe it is as a mashup of BASIC and Logo, but instead of a cute little turtle moving around, you have a drill bit spinning at several thousand rotations per minute attached to a half-ton machine. All the oldheads who were used to operating the classic, manual machines couldn’t quite wrap their head around this new technology, but it made total sense to me!&lt;/p&gt;
&lt;p&gt;Later in high school, I took some computer science classes that taught me some Java and convinced me that the field was worth pursuing. I went to college for computer science and encountered &lt;a href=&quot;https://en.wikipedia.org/wiki/Scheme_(programming_language)&quot;&gt;Scheme&lt;/a&gt; and other &lt;a href=&quot;https://en.wikipedia.org/wiki/Lisp_(programming_language)&quot;&gt;Lisps&lt;/a&gt;, some C and C++, but mostly more Java. &lt;/p&gt;
&lt;p&gt;Around that time, I started working at a research lab for the university, and while that was all Java too, some of the older, wiser grad students there were really into this new language called Python and were basically trying to sneak it into as many of their projects as they could. Once I was exposed to it, I was hooked too and started trying to write as much of it as I could.&lt;/p&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;https://realpython.com/interview-dustin-ingram/?utm_source=realpython&amp;utm_medium=rss&quot;&gt;Read the full article at https://realpython.com/interview-dustin-ingram/ »&lt;/a&gt;&lt;/h2&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Real Python Podcast – Episode #69: Planning a Faster Future at the Python Language Summit</title>
      <id>https://realpython.com/podcasts/rpp/69/</id>
      <link href="https://realpython.com/podcasts/rpp/69/"/>
      <updated>2021-07-16T12:00:00+00:00</updated>
      <summary>Do you wonder what the future may hold for the Python language? Are there speed improvements coming soon? What if you could be in the room while the core developers discuss Python&#x27;s future? This week on the show, we have Joanna Jablonski, who was invited to the Python Language Summit 2021 as a journalist to summarize and document the event.</summary>
      <content type="html">
        &lt;p&gt;Do you wonder what the future may hold for the Python language? Are there speed improvements coming soon? What if you could be in the room while the core developers discuss Python&#x27;s future? This week on the show, we have Joanna Jablonski, who was invited to the Python Language Summit 2021 as a journalist to summarize and document the event.&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Using FastAPI to Build Python Web APIs</title>
      <id>https://realpython.com/fastapi-python-web-apis/</id>
      <link href="https://realpython.com/fastapi-python-web-apis/"/>
      <updated>2021-07-14T14:00:00+00:00</updated>
      <summary>In this guide, you&#x27;ll learn the main concepts of FastAPI and how to use it to quickly create web APIs that implement best practices by default. By the end of it, you will be able to start creating production-ready web APIs.</summary>
      <content type="html">
        &lt;div&gt;&lt;p&gt;Creating APIs, or &lt;strong&gt;application programming interfaces&lt;/strong&gt;, is an important part of making your software accessible to a broad range of users. In this tutorial, you will learn the main concepts of &lt;strong&gt;FastAPI&lt;/strong&gt; and how to use it to quickly create web APIs that implement best practices by default.&lt;/p&gt;
&lt;p&gt;By the end of it, you will be able to start creating production-ready web APIs, and you will have the understanding needed to go deeper and learn more for your specific use cases.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this tutorial, you’ll learn how to&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;path parameters&lt;/strong&gt; to get a unique URL path per item&lt;/li&gt;
&lt;li&gt;Receive JSON data in your requests using &lt;strong&gt;pydantic&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Use API best practices, including &lt;strong&gt;validation&lt;/strong&gt;, &lt;strong&gt;serialization&lt;/strong&gt;, and &lt;strong&gt;documentation&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Continue learning about FastAPI for &lt;strong&gt;your use cases&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This tutorial is written by the &lt;a href=&quot;https://realpython.com/team/sramirez/&quot;&gt;author of FastAPI&lt;/a&gt;. It contains a careful selection of fragments from the official documentation, avoiding getting lost in technical details while helping you get up to speed as fast as possible.&lt;/p&gt;
&lt;p&gt;To get the most out of this tutorial, it would be helpful for you to know the basics of &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview&quot;&gt;what HTTP is and how it works&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/python-json/&quot;&gt;what JSON is&lt;/a&gt;, and &lt;a href=&quot;https://fastapi.tiangolo.com/python-types/&quot;&gt;Python type hints&lt;/a&gt;. You will also benefit from using a &lt;a href=&quot;https://realpython.com/python-virtual-environments-a-primer/&quot;&gt;virtual environment&lt;/a&gt;, as is the case for any Python project.&lt;/p&gt;
&lt;div class=&quot;alert alert-warning&quot; role=&quot;alert&quot;&gt;
&lt;p&gt;&lt;strong markdown=&quot;1&quot;&gt;Free Bonus:&lt;/strong&gt; &lt;a href=&quot;https://realpython.com/bonus/python-mastery-course/&quot; class=&quot;alert-link&quot; data-toggle=&quot;modal&quot; data-target=&quot;#modal-python-mastery-course&quot; data-focus=&quot;false&quot; markdown=&quot;1&quot;&gt;5 Thoughts On Python Mastery&lt;/a&gt;, a free course for Python developers that shows you the roadmap and the mindset you’ll need to take your Python skills to the next level.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;what-is-fastapi&quot;&gt;What Is FastAPI?&lt;a class=&quot;headerlink&quot; href=&quot;#what-is-fastapi&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;FastAPI is a modern, high-performance web framework for building APIs with Python based on standard type hints. It has the following key features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fast to run&lt;/strong&gt;: It offers very high performance, on par with &lt;strong&gt;NodeJS&lt;/strong&gt; and &lt;strong&gt;Go&lt;/strong&gt;, thanks to &lt;a href=&quot;https://www.starlette.io/&quot;&gt;Starlette&lt;/a&gt; and &lt;a href=&quot;https://pydantic-docs.helpmanual.io/&quot;&gt;pydantic&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fast to code&lt;/strong&gt;: It allows for significant increases in development speed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reduced number of bugs&lt;/strong&gt;: It reduces the possibility for human-induced errors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intuitive&lt;/strong&gt;: It offers great editor support, with completion everywhere and less time debugging.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Straightforward&lt;/strong&gt;: It’s designed to be uncomplicated to use and learn, so you can spend less time reading documentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Short&lt;/strong&gt;: It minimizes code duplication.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Robust&lt;/strong&gt;: It provides production-ready code with automatic interactive documentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Standards-based&lt;/strong&gt;: It’s based on the open standards for APIs, &lt;a href=&quot;https://github.com/OAI/OpenAPI-Specification&quot;&gt;OpenAPI&lt;/a&gt; and &lt;a href=&quot;https://json-schema.org/&quot;&gt;JSON Schema&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The framework is designed to optimize your developer experience so that you can write simple code to build production-ready APIs with best practices by default.&lt;/p&gt;
&lt;h2 id=&quot;install-fastapi&quot;&gt;Install FastAPI&lt;a class=&quot;headerlink&quot; href=&quot;#install-fastapi&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As with any other Python project, it would be best to start by creating a virtual environment. If you are not familiar with how to do that, then you can check out the &lt;a href=&quot;https://realpython.com/python-virtual-environments-a-primer/&quot;&gt;Primer on Virtual Environments&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first step is to install FastAPI and &lt;a href=&quot;https://www.uvicorn.org/#introduction&quot;&gt;Uvicorn&lt;/a&gt; using &lt;a href=&quot;https://realpython.com/what-is-pip/&quot;&gt;&lt;code&gt;pip&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&quot;highlight sh&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;gp&quot;&gt;$ &lt;/span&gt;python -m pip install fastapi uvicorn&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;standard&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;With that, you have FastAPI and Uvicorn installed and are ready to learn how to use them. FastAPI is the framework you’ll use to build your API, and Uvicorn is the server that will use the API you build to serve requests.&lt;/p&gt;
&lt;h2 id=&quot;first-steps&quot;&gt;First Steps&lt;a class=&quot;headerlink&quot; href=&quot;#first-steps&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;To get started, in this section, you will create a minimal FastAPI app, run it with a server using Uvicorn, and then learn all the interacting parts. This will give you a very quick overview of how everything works.&lt;/p&gt;
&lt;h3 id=&quot;create-a-first-api&quot;&gt;Create a First API&lt;a class=&quot;headerlink&quot; href=&quot;#create-a-first-api&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A basic FastAPI file looks like this:&lt;/p&gt;
&lt;div class=&quot;highlight python&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# main.py&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;fastapi&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;FastAPI&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;app&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;FastAPI&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;

&lt;span class=&quot;nd&quot;&gt;@app&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;root&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;():&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;message&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Hello World&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Copy the code above to a file named &lt;code&gt;main.py&lt;/code&gt;, and just like that, you have a fully functional API application with some best practices like automatic documentation and serialization built in. You will learn more about those features next.&lt;/p&gt;
&lt;p&gt;This code defines your application, but it won’t run on itself if you call it with &lt;code&gt;python&lt;/code&gt; directly. To run it, you need a &lt;strong&gt;server&lt;/strong&gt; program. In the steps above, you already installed &lt;a href=&quot;https://www.uvicorn.org/&quot;&gt;Uvicorn&lt;/a&gt;. That will be your server.&lt;/p&gt;
&lt;h3 id=&quot;run-the-first-api-app-with-uvicorn&quot;&gt;Run the First API App With Uvicorn&lt;a class=&quot;headerlink&quot; href=&quot;#run-the-first-api-app-with-uvicorn&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Run the live server using Uvicorn:&lt;/p&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;https://realpython.com/fastapi-python-web-apis/?utm_source=realpython&amp;utm_medium=rss&quot;&gt;Read the full article at https://realpython.com/fastapi-python-web-apis/ »&lt;/a&gt;&lt;/h2&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Square Root Function in Python</title>
      <id>https://realpython.com/courses/square-root-function-python/</id>
      <link href="https://realpython.com/courses/square-root-function-python/"/>
      <updated>2021-07-13T14:00:00+00:00</updated>
      <summary>In this quick and practical course, you&#x27;ll learn what a square root is and how to calculate one in Python. You&#x27;ll even see how you can use the Python square root function to solve a real-world problem.</summary>
      <content type="html">
        &lt;p&gt;Are you trying to solve a quadratic equation? Maybe you need to calculate the length of one side of a right triangle. You can use the &lt;code&gt;math&lt;/code&gt; module&amp;rsquo;s &lt;strong&gt;&lt;code&gt;sqrt()&lt;/code&gt;&lt;/strong&gt; method for determining the square root of a number. This course covers the use of &lt;code&gt;math.sqrt()&lt;/code&gt; as well as related methods.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this course, you&amp;rsquo;ll learn:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;About &lt;strong&gt;square roots&lt;/strong&gt; and related mathematical operations&lt;/li&gt;
&lt;li&gt;How to use the Python square root function, &lt;strong&gt;&lt;code&gt;sqrt()&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Where &lt;code&gt;sqrt()&lt;/code&gt; can be useful in &lt;strong&gt;real-world examples&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Python News: What&#x27;s New From June 2021?</title>
      <id>https://realpython.com/python-news-june-2021/</id>
      <link href="https://realpython.com/python-news-june-2021/"/>
      <updated>2021-07-12T14:00:00+00:00</updated>
      <summary>June 2021 was full of notable events in the Python world! In this article, you&#x27;ll get caught up on what&#x27;s been happening with Python during this past month, including some changes at the Python Software Foundation and the announcement of a new recipient of the PSF Fiscal Sponsorship Program.</summary>
      <content type="html">
        &lt;div&gt;&lt;p&gt;If you want to get up to speed on what happened in the world of &lt;strong&gt;Python&lt;/strong&gt; in &lt;strong&gt;June 2021&lt;/strong&gt;, then you’ve come to the right place to get your &lt;strong&gt;news&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;June was a month of change. &lt;a href=&quot;https://twitter.com/ewa_jodlowska&quot;&gt;Ewa Jodlowska&lt;/a&gt;, the &lt;strong&gt;Executive Director of the Python Software Foundation (PSF)&lt;/strong&gt;, announced her departure after serving for ten years, and the PSF Board of Directors gained &lt;strong&gt;three new directors&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Let’s dive into the biggest Python news from the past month!&lt;/p&gt;
&lt;div class=&quot;alert alert-warning&quot; role=&quot;alert&quot;&gt;
&lt;p&gt;&lt;strong markdown=&quot;1&quot;&gt;Free Bonus:&lt;/strong&gt; &lt;a href=&quot;https://realpython.com/bonus/python-mastery-course/&quot; class=&quot;alert-link&quot; data-toggle=&quot;modal&quot; data-target=&quot;#modal-python-mastery-course&quot; data-focus=&quot;false&quot; markdown=&quot;1&quot;&gt;5 Thoughts On Python Mastery&lt;/a&gt;, a free course for Python developers that shows you the roadmap and the mindset you’ll need to take your Python skills to the next level.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;ewa-jodlowska-steps-down-as-psf-executive-director&quot;&gt;Ewa Jodlowska Steps Down as PSF Executive Director&lt;a class=&quot;headerlink&quot; href=&quot;#ewa-jodlowska-steps-down-as-psf-executive-director&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;On June 16, the Python Software Foundation (PSF) &lt;a href=&quot;https://pyfound.blogspot.com/2021/06/update-on-python-software-foundation.html&quot;&gt;announced&lt;/a&gt; that Executive Director Ewa Jodlowska has decided to leave the foundation at the end of 2021.&lt;/p&gt;
&lt;p&gt;Even if you haven’t heard of Ewa, you’ve undoubtedly been impacted by her work. As Executive Director, Ewa is responsible for ensuring that the PSF achieves &lt;a href=&quot;https://www.python.org/psf/mission/&quot;&gt;its mission&lt;/a&gt; “to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers.”&lt;/p&gt;
&lt;p&gt;The PSF is responsible for managing and maintaining the &lt;a href=&quot;https://python.org&quot;&gt;python.org&lt;/a&gt; website as well as the &lt;a href=&quot;https://pypi.org/&quot;&gt;Python Package Index&lt;/a&gt;. The PSF also supports and funds events and workshops for organizations such as &lt;a href=&quot;https://djangogirls.org/&quot;&gt;Django Girls&lt;/a&gt; and &lt;a href=&quot;https://pyladies.com/&quot;&gt;PyLadies&lt;/a&gt; as well as other Python conferences and meetups worldwide.&lt;/p&gt;
&lt;p&gt;In addition to managing community outreach, the PSF supports and funds Python software development. This includes organizing, funding, and supporting CPython sprints. As you’ll learn &lt;a href=&quot;#jazzband-accepted-to-the-psf-fiscal-sponsorship-program&quot;&gt;later&lt;/a&gt; in this article, the PSF’s funding and support go beyond support for the core Python language. The PSF also helps Python libraries with various grants and fiscal sponsorship programs.&lt;/p&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;https://realpython.com/python-news-june-2021/?utm_source=realpython&amp;utm_medium=rss&quot;&gt;Read the full article at https://realpython.com/python-news-june-2021/ »&lt;/a&gt;&lt;/h2&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Real Python Podcast – Episode #68: Exploring the functools Module and Complex Numbers in Python</title>
      <id>https://realpython.com/podcasts/rpp/68/</id>
      <link href="https://realpython.com/podcasts/rpp/68/"/>
      <updated>2021-07-09T12:00:00+00:00</updated>
      <summary>Are you ready to expand your Python knowledge into the intermediate to advanced territory? What tools are awaiting your discovery inside Python&#x27;s functools module? This week on the show, David Amos is back, and he&#x27;s brought another batch of PyCoder&#x27;s Weekly articles and projects.</summary>
      <content type="html">
        &lt;p&gt;Are you ready to expand your Python knowledge into the intermediate to advanced territory? What tools are awaiting your discovery inside Python&#x27;s functools module? This week on the show, David Amos is back, and he&#x27;s brought another batch of PyCoder&#x27;s Weekly articles and projects.&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>What Can I Do With Python?</title>
      <id>https://realpython.com/what-can-i-do-with-python/</id>
      <link href="https://realpython.com/what-can-i-do-with-python/"/>
      <updated>2021-07-07T14:00:00+00:00</updated>
      <summary>In this tutorial, you&#x27;ll find a set of guidelines that will help you start applying your Python skills to real-world problems. By the end of your reading, you&#x27;ll be able to answer the question &quot;What can I do with Python?&quot;</summary>
      <content type="html">
        &lt;div&gt;&lt;p&gt;You’ve finished a course or finally made it to the end of a &lt;a href=&quot;https://realpython.com/products/python-basics-book/&quot;&gt;book&lt;/a&gt; that teaches you the &lt;a href=&quot;https://realpython.com/learning-paths/python3-introduction/&quot;&gt;basics of programming with Python&lt;/a&gt;. You’ve learned about &lt;a href=&quot;https://realpython.com/python-variables/&quot;&gt;variables&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/python-lists-tuples/&quot;&gt;lists, tuples&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/python-dicts/&quot;&gt;dictionaries&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/python-for-loop/&quot;&gt;&lt;code&gt;for&lt;/code&gt;&lt;/a&gt; and &lt;a href=&quot;https://realpython.com/python-while-loop/&quot;&gt;&lt;code&gt;while&lt;/code&gt;&lt;/a&gt; loops, &lt;a href=&quot;https://realpython.com/python-conditional-statements/&quot;&gt;conditional statements&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/python3-object-oriented-programming/&quot;&gt;object-oriented concepts&lt;/a&gt;, and more. So, what’s next? What can you do with Python nowadays?&lt;/p&gt;
&lt;p&gt;Python is a versatile programming language with many use cases in a variety of different fields. If you’ve grasped the basics of Python and are itching to build something with the language, then it’s time to figure out what your next step should be.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this article, you’ll see how you can use Python for:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Doing general &lt;strong&gt;software development&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Diving into &lt;strong&gt;data science and math&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Speeding up and automating your &lt;strong&gt;workflow&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Building &lt;strong&gt;embedded systems&lt;/strong&gt; and &lt;strong&gt;robots&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You’ll also find ideas for practical projects, resources, and tutorials that you can use to start building things with Python right away.&lt;/p&gt;
&lt;div class=&quot;alert alert-warning&quot; role=&quot;alert&quot;&gt;
&lt;p&gt;&lt;strong markdown=&quot;1&quot;&gt;Free Bonus:&lt;/strong&gt; &lt;a href=&quot;https://realpython.com/bonus/python-basics-sample-free-chapter/&quot; class=&quot;alert-link&quot; data-toggle=&quot;modal&quot; data-target=&quot;#modal-python-basics-sample-free-chapter&quot; data-focus=&quot;false&quot; markdown=&quot;1&quot;&gt;Get a sample chapter from Python Basics: A Practical Introduction to Python 3&lt;/a&gt; to see how you can go from beginner to intermediate in Python with a complete curriculum, up to date for Python 3.9.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&quot;python-in-the-real-world&quot;&gt;Python in the Real World&lt;a class=&quot;headerlink&quot; href=&quot;#python-in-the-real-world&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Python is a high-level and general-purpose programming language. As this definition implies, you can use Python for &lt;a href=&quot;https://www.jetbrains.com/lp/python-developers-survey-2020/#PurposesUsingPython&quot;&gt;several purposes&lt;/a&gt;, from &lt;a href=&quot;https://realpython.com/tutorials/web-dev/&quot;&gt;web development&lt;/a&gt; to &lt;a href=&quot;https://realpython.com/tutorials/data-science/&quot;&gt;data science&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/tutorials/machine-learning/&quot;&gt;machine learning&lt;/a&gt;, and &lt;a href=&quot;https://talkpython.fm/episodes/show/232/become-a-robot-developer-with-python&quot;&gt;robotics&lt;/a&gt;. Python’s real-world use cases are limitless.&lt;/p&gt;
&lt;p&gt;You’re probably wondering what people are &lt;a href=&quot;https://www.python.org/success-stories/&quot;&gt;successfully building&lt;/a&gt; with Python. If you take a quick look at companies using the language, then you’ll find &lt;a href=&quot;https://realpython.com/world-class-companies-using-python/&quot;&gt;world-class companies&lt;/a&gt;, such as Google, YouTube, Facebook, Instagram, Spotify, Netflix, and more.&lt;/p&gt;
&lt;p&gt;Google has used Python &lt;a href=&quot;https://stackoverflow.com/questions/2560310/heavy-usage-of-python-at-google/2561008#2561008&quot;&gt;from the start&lt;/a&gt;, and it’s gained a place as one of the tech giant’s main server-side languages. &lt;a href=&quot;https://twitter.com/gvanrossum&quot;&gt;Guido van Rossum&lt;/a&gt;, Python’s creator, worked there for several years, overseeing the language’s development.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pyfound.blogspot.com/2021/05/the-2021-python-language-summit-cpython.html&quot;&gt;Instagram likes Python&lt;/a&gt; for its simplicity. The service &lt;a href=&quot;https://instagram-engineering.com/web-service-efficiency-at-instagram-with-python-4976d078e366&quot;&gt;is known for&lt;/a&gt; running “the world’s largest deployment of the Django web framework, which is written entirely in Python.”&lt;/p&gt;
&lt;p&gt;Spotify uses the language for data analysis and back-end services. According to its team, Python’s ease of use leads to a lightning-fast development pipeline. Spotify performs a ton of analysis to give recommendations to its users, so it needs a productive tool that works well. Python to the rescue!&lt;/p&gt;
&lt;p&gt;You’ll also find that Python has been vital for science and &lt;a href=&quot;https://realpython.com/python-news-march-2021/#python-lands-on-mars&quot;&gt;space exploration&lt;/a&gt;, with a lot of exciting use cases in &lt;a href=&quot;https://en.wikipedia.org/wiki/Robotics&quot;&gt;robotics&lt;/a&gt; and hardware control.&lt;/p&gt;
&lt;p&gt;In this article, you’ll see how you can use your Python skills in a wide range of areas.&lt;/p&gt;
&lt;h2 id=&quot;develop-cool-software&quot;&gt;Develop Cool Software&lt;a class=&quot;headerlink&quot; href=&quot;#develop-cool-software&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Python’s ecosystem provides a rich set of &lt;a href=&quot;https://en.wikipedia.org/wiki/Software_framework&quot;&gt;frameworks&lt;/a&gt;, tools, and libraries that allow you to write almost any kind of application. You can use Python to build applications for the &lt;a href=&quot;https://en.wikipedia.org/wiki/World_Wide_Web&quot;&gt;Web&lt;/a&gt; as well as &lt;a href=&quot;https://en.wikipedia.org/wiki/Desktop_metaphor&quot;&gt;desktop&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Mobile_computing&quot;&gt;mobile&lt;/a&gt; platforms. You can even use Python to create video games.&lt;/p&gt;
&lt;h3 id=&quot;web-development&quot;&gt;Web Development&lt;a class=&quot;headerlink&quot; href=&quot;#web-development&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Developing web applications with Python is one of the most in-demand skills, with a lot of opportunities for you out there. In this field, you’ll find several useful Python frameworks, libraries, and tools for developing cool web applications, APIs, and more. Here are some of the most popular Python web frameworks:&lt;/p&gt;
&lt;div class=&quot;table-responsive&quot;&gt;
&lt;table class=&quot;table table-hover&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Framework&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://www.djangoproject.com/&quot;&gt;Django&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Django is a high-level framework that encourages rapid web application development with a clean and pragmatic design. It allows you to focus on writing your applications without having to reinvent the wheel.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://fastapi.tiangolo.com/&quot;&gt;FastAPI&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;FastAPI is a fast and performant web framework for building web APIs. It’s built on top of modern Python type hint features and enables &lt;a href=&quot;https://realpython.com/async-io-python/&quot;&gt;asynchronous&lt;/a&gt; programming.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://palletsprojects.com/p/flask/&quot;&gt;Flask&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Flask is a lightweight framework for creating &lt;a href=&quot;https://wsgi.readthedocs.io/&quot;&gt;WSGI&lt;/a&gt; web applications. It allows you to get started quickly and to scale up to complex applications if needed.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://www.tornadoweb.org/en/stable/&quot;&gt;Tornado&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Tornado is a web framework and asynchronous networking library. It uses non-blocking network &lt;a href=&quot;https://en.wikipedia.org/wiki/Input/output&quot;&gt;I/O&lt;/a&gt;, so you can write applications that can scale to tens of thousands of open connections.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;To get started with web development, check out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/tutorials/web-dev/&quot;&gt;Python Web Development Tutorials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/tutorials/django/&quot;&gt;Django Tutorials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://realpython.com/tutorials/flask/&quot;&gt;Flask Tutorials&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want some practical project ideas for applying your web development skills right away, then you can build a &lt;a href=&quot;https://realpython.com/get-started-with-django-1/&quot;&gt;portfolio web application with Django&lt;/a&gt;. With so many jobs and career opportunities out there, it’s a great idea to have a personal portfolio these days, so go ahead and give it a try. You don’t need to know anything about Django to get started with this step-by-step tutorial. It’s perfect if you’re itching to get your hands dirty with web development in Python.&lt;/p&gt;
&lt;h3 id=&quot;cli-development&quot;&gt;CLI Development&lt;a class=&quot;headerlink&quot; href=&quot;#cli-development&quot; title=&quot;Permanent link&quot;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Another field in which Python shines is &lt;a href=&quot;https://en.wikipedia.org/wiki/Command-line_interface&quot;&gt;command-line interface (CLI)&lt;/a&gt; application development. CLI applications are everywhere and allow you to automate repetitive and boring tasks in your day-to-day work by creating small and large tools for your command line.&lt;/p&gt;
&lt;p&gt;In Python, you have an impressive set of CLI libraries and frameworks that can make your life more pleasant and help you build command-line tools quickly:&lt;/p&gt;
&lt;/div&gt;&lt;h2&gt;&lt;a href=&quot;https://realpython.com/what-can-i-do-with-python/?utm_source=realpython&amp;utm_medium=rss&quot;&gt;Read the full article at https://realpython.com/what-can-i-do-with-python/ »&lt;/a&gt;&lt;/h2&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Defining and Calling Python Functions</title>
      <id>https://realpython.com/courses/defining-and-calling-functions/</id>
      <link href="https://realpython.com/courses/defining-and-calling-functions/"/>
      <updated>2021-07-06T14:00:00+00:00</updated>
      <summary>In this course, you&#x27;ll learn how to define and call your own Python function.  You&#x27;ll also learn about passing data to your function and returning data from your function back to its calling environment.</summary>
      <content type="html">
        &lt;p&gt;A &lt;strong&gt;function&lt;/strong&gt; is a self-contained block of code that encapsulates a specific task or related group of tasks. This course will show you how to &lt;strong&gt;define your own Python function&lt;/strong&gt;. You&amp;rsquo;ll learn when to divide your program into separate user-defined functions and what tools you&amp;rsquo;ll need to do this. &lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll also learn the various ways to pass data into a function when calling it, which allows for different behavior from one invocation to the next.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this course, you&amp;rsquo;ll learn:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How &lt;strong&gt;functions&lt;/strong&gt; work in Python and why they&amp;rsquo;re beneficial&lt;/li&gt;
&lt;li&gt;How to &lt;strong&gt;define and call&lt;/strong&gt; your own Python function&lt;/li&gt;
&lt;li&gt;Mechanisms for &lt;strong&gt;passing arguments&lt;/strong&gt; to your function&lt;/li&gt;
&lt;li&gt;Some differences between how to work with functions in &lt;strong&gt;Python vs C++&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;How to &lt;strong&gt;return data&lt;/strong&gt; from your function back to the calling environment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This course will be the most helpful for you if you&amp;rsquo;re already familiar with the fundamental concepts of Python, including &lt;a href=&quot;https://realpython.com/python-data-types/&quot;&gt;basic data types&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/python-lists-tuples/&quot;&gt;lists and tuples&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/python-dicts/&quot;&gt;dictionaries&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/lessons/import-statement/&quot;&gt;the import statement&lt;/a&gt;, &lt;a href=&quot;https://realpython.com/python-conditional-statements/&quot;&gt;conditional statements&lt;/a&gt;, and &lt;a href=&quot;https://realpython.com/python-for-loop/&quot;&gt;for loops&lt;/a&gt;.&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Real Python Podcast – Episode #67: Securing Your Python Software Supply Chain With Dustin Ingram</title>
      <id>https://realpython.com/podcasts/rpp/67/</id>
      <link href="https://realpython.com/podcasts/rpp/67/"/>
      <updated>2021-07-02T12:00:00+00:00</updated>
      <summary>How well do you know your software supply chain? When you PIP install a package, what steps can you take to minimize the risk of installing something malicious? This week on the show, we have Dustin Ingram, a director of the Python Software Foundation (PSF) and a maintainer of the Python Package Index (PyPI).</summary>
      <content type="html">
        &lt;p&gt;How well do you know your software supply chain? When you PIP install a package, what steps can you take to minimize the risk of installing something malicious? This week on the show, we have Dustin Ingram, a director of the Python Software Foundation (PSF) and a maintainer of the Python Package Index (PyPI).&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Python Inner Functions</title>
      <id>https://realpython.com/courses/python-inner-functions/</id>
      <link href="https://realpython.com/courses/python-inner-functions/"/>
      <updated>2021-06-29T14:00:00+00:00</updated>
      <summary>In this step-by-step course, you&#x27;ll learn what inner functions are in Python, how to define them, and what their main use cases are.</summary>
      <content type="html">
        &lt;p&gt;Python allows the declaration of functions inside of other &lt;a href=&quot;https://realpython.com/defining-your-own-python-function/&quot;&gt;functions&lt;/a&gt;. &lt;strong&gt;Inner functions&lt;/strong&gt;, also known as &lt;strong&gt;nested functions&lt;/strong&gt;, are defined within a function. This type of function has direct access to variables and names defined in the enclosing function in Python. Inner functions have many uses, most notably as closure factories and decorator functions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this course, you&amp;rsquo;ll learn how to:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Define&lt;/strong&gt; inner functions&lt;/li&gt;
&lt;li&gt;Use inner functions as &lt;strong&gt;helper functions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Build &lt;strong&gt;function closures&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Use captured variables in a closure&lt;/li&gt;
&lt;li&gt;Use captured data functions in a closure&lt;/li&gt;
&lt;li&gt;Work with &lt;strong&gt;decorators&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Real Python Podcast – Episode #66: Practicing Python With CSV Files and Extracting Values With &quot;filter()&quot;</title>
      <id>https://realpython.com/podcasts/rpp/66/</id>
      <link href="https://realpython.com/podcasts/rpp/66/"/>
      <updated>2021-06-25T12:00:00+00:00</updated>
      <summary>Are you ready to practice your Python skills some more? There is a new set of practice problems prepared for you to tackle, and this time they&#x27;re based on working with CSV files. This week on the show, David Amos is back, and he&#x27;s brought another batch of PyCoder&#x27;s Weekly articles and projects.</summary>
      <content type="html">
        &lt;p&gt;Are you ready to practice your Python skills some more? There is a new set of practice problems prepared for you to tackle, and this time they&#x27;re based on working with CSV files. This week on the show, David Amos is back, and he&#x27;s brought another batch of PyCoder&#x27;s Weekly articles and projects.&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Python vs JavaScript for Python Developers</title>
      <id>https://realpython.com/courses/python-vs-javascript-for-python-devs/</id>
      <link href="https://realpython.com/courses/python-vs-javascript-for-python-devs/"/>
      <updated>2021-06-22T14:00:00+00:00</updated>
      <summary>Python and JavaScript are two of the most popular programming languages in the world. In this course, you&#x27;ll take a deep dive into the JavaScript ecosystem by comparing Python vs JavaScript. You&#x27;ll learn the jargon, language history, and best practices from a Pythonista&#x27;s perspective.</summary>
      <content type="html">
        &lt;p&gt;Python isn&amp;rsquo;t the only language out there, and one of the other languages frequently fighting Python for the top of the &amp;ldquo;most popular&amp;rdquo; lists is &lt;strong&gt;JavaScript&lt;/strong&gt;. JavaScript is the de facto language on the web but also has a robust toolset on the server side. This course explores JavaScript from a Python programmer&amp;rsquo;s perspective.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve never used JavaScript before or have felt overwhelmed by the quick pace of its evolution in recent years, then this course will set you on the right path. You should already know the &lt;a href=&quot;https://realpython.com/products/python-basics-book/&quot;&gt;basics of Python&lt;/a&gt; to benefit fully from the comparisons made between the two languages.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this course, you will learn:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Where JavaScript comes from and where it is used&lt;/li&gt;
&lt;li&gt;How JavaScript&amp;rsquo;s &lt;strong&gt;type system&lt;/strong&gt; is different from Python&amp;rsquo;s&lt;/li&gt;
&lt;li&gt;How to write &lt;strong&gt;functions&lt;/strong&gt; in JavaScript&lt;/li&gt;
&lt;li&gt;The two ways of creating &lt;strong&gt;objects&lt;/strong&gt; in JavaScript&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;General language syntax&lt;/strong&gt; in JavaScript&lt;/li&gt;
&lt;li&gt;Surprises and behaviors in JavaScript that Python programmers wouldn&amp;rsquo;t expect&lt;/li&gt;
&lt;/ul&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Real Python Podcast – Episode #65: Expanding the International Python Community With the PSF</title>
      <id>https://realpython.com/podcasts/rpp/65/</id>
      <link href="https://realpython.com/podcasts/rpp/65/"/>
      <updated>2021-06-18T12:00:00+00:00</updated>
      <summary>The popularity of Python is continuing to grow Developers across the globe are embracing the language. How is Python being used in all of these different countries? How does an organization like the Python Software Foundation (PSF) work toward the goals in its mission statement for supporting and growing this international community? This week on the show, we have Marlene Mhangami, a PSF board member and part of the Diversity and Inclusion Work Group.</summary>
      <content type="html">
        &lt;p&gt;The popularity of Python is continuing to grow Developers across the globe are embracing the language. How is Python being used in all of these different countries? How does an organization like the Python Software Foundation (PSF) work toward the goals in its mission statement for supporting and growing this international community? This week on the show, we have Marlene Mhangami, a PSF board member and part of the Diversity and Inclusion Work Group.&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Using Pandas to Make a Gradebook in Python</title>
      <id>https://realpython.com/courses/gradebook-using-pandas-python/</id>
      <link href="https://realpython.com/courses/gradebook-using-pandas-python/"/>
      <updated>2021-06-15T14:00:00+00:00</updated>
      <summary>With this Python project, you&#x27;ll build a script to calculate grades for a class using pandas. The script will quickly and accurately calculate grades from a variety of data sources. You&#x27;ll see examples of loading, merging, and saving data with pandas, as well as plotting some summary statistics.</summary>
      <content type="html">
        &lt;p&gt;One of the jobs that all teachers have in common is &lt;strong&gt;evaluating students&lt;/strong&gt;. Whether you use exams, homework assignments, quizzes, or projects, you usually have to turn students&amp;rsquo; scores into a &lt;strong&gt;letter grade&lt;/strong&gt; at the end of the term. This often involves a bunch of calculations that you might do in a spreadsheet. Instead, you can consider using Python and &lt;a href=&quot;https://realpython.com/pandas-python-explore-dataset/&quot;&gt;pandas&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this course, you&amp;rsquo;ll learn how to&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Load&lt;/strong&gt; and &lt;strong&gt;merge&lt;/strong&gt; data from multiple sources with pandas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Filter&lt;/strong&gt; and &lt;strong&gt;group&lt;/strong&gt; data in a pandas DataFrame&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calculate&lt;/strong&gt; and &lt;strong&gt;plot&lt;/strong&gt; grades in a pandas DataFrame&lt;/li&gt;
&lt;/ul&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>The Real Python Podcast – Episode #64: Detecting Deforestation With Python &amp; Using GraphQL With Django and Vue</title>
      <id>https://realpython.com/podcasts/rpp/64/</id>
      <link href="https://realpython.com/podcasts/rpp/64/"/>
      <updated>2021-06-11T12:00:00+00:00</updated>
      <summary>Are you looking for an in-depth data science project to practice your skills on? Perhaps you would like to add new tools to your Python web development projects instead? This week on the show, David Amos is back, and he&#x27;s brought another batch of PyCoder&#x27;s Weekly articles and projects.</summary>
      <content type="html">
        &lt;p&gt;Are you looking for an in-depth data science project to practice your skills on? Perhaps you would like to add new tools to your Python web development projects instead? This week on the show, David Amos is back, and he&#x27;s brought another batch of PyCoder&#x27;s Weekly articles and projects.&lt;/p&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  
    <entry>
      <title>Python Basics: Setting Up Python</title>
      <id>https://realpython.com/courses/setting-up-python/</id>
      <link href="https://realpython.com/courses/setting-up-python/"/>
      <updated>2021-06-08T14:00:00+00:00</updated>
      <summary>The first step to getting started with Python is to set it up on your machine. In this course, you&#x27;ll learn how to download Python for Windows, macOS, and Ubuntu Linux and how to open Python&#x27;s Integrated Development and Learning Environment, IDLE.</summary>
      <content type="html">
        &lt;p&gt;Setting up Python is the first step to becoming a Python programmer. In this course, you&amp;rsquo;ll learn how to download and install Python for Windows, macOS, and Ubuntu Linux and how to open &lt;strong&gt;Python&amp;rsquo;s Integrated Development and Learning Environment, IDLE&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;There are many ways to install Python. You can download official Python distributions from &lt;a href=&quot;https://python.org&quot;&gt;Python.org&lt;/a&gt;, install from a package manager, and even install specialized distributions for scientific computing, Internet of Things, and embedded systems. This course focuses on official distributions, as they&amp;rsquo;re generally the best option for getting started with learning to program in Python.&lt;/p&gt;
&lt;p&gt;This course can be enjoyed alone or as an accompaniment to &lt;a href=&quot;http://pythonbasicsbook.com&quot;&gt;Python Basics: A Practical Introduction to Python 3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In this course, you&amp;rsquo;ll learn how to:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install Python on &lt;strong&gt;Windows&lt;/strong&gt;, &lt;strong&gt;macOS&lt;/strong&gt;, and &lt;strong&gt;Linux&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;IDLE&lt;/strong&gt;, Python&amp;rsquo;s integrated development and learning environment&lt;/li&gt;
&lt;/ul&gt;
        &lt;hr /&gt;
        &lt;p&gt;&lt;em&gt;[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short &amp;amp; sweet Python Trick delivered to your inbox every couple of days. &lt;a href=&quot;https://realpython.com/python-tricks/?utm_source=realpython&amp;amp;utm_medium=rss&amp;amp;utm_campaign=footer&quot;&gt;&amp;gt;&amp;gt; Click here to learn more and see examples&lt;/a&gt; ]&lt;/em&gt;&lt;/p&gt;
      </content>
    </entry>
  

</feed>
