feat(assessment): auto comprehensive assessment - rules engine from college scoring standard, per-semester stats, manual overrides, word export
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,880 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en" data-content_root="../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta property="og:title" content="What’s New In Python 3.1" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://docs.python.org/3/whatsnew/3.1.html" />
|
||||
<meta property="og:site_name" content="Python documentation" />
|
||||
<meta property="og:description" content="Author, Raymond Hettinger,. This article explains the new features in Python 3.1, compared to 3.0. Python 3.1 was released on June 27, 2009. PEP 372: Ordered Dictionaries: Regular Python dictionari..." />
|
||||
<meta property="og:image" content="_static/og-image.png" />
|
||||
<meta property="og:image:alt" content="Python documentation" />
|
||||
<meta name="description" content="Author, Raymond Hettinger,. This article explains the new features in Python 3.1, compared to 3.0. Python 3.1 was released on June 27, 2009. PEP 372: Ordered Dictionaries: Regular Python dictionari..." />
|
||||
<meta name="theme-color" content="#3776ab">
|
||||
<meta property="og:image:width" content="200">
|
||||
<meta property="og:image:height" content="200">
|
||||
|
||||
<title>What’s New In Python 3.1 — Python 3.15.0 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/classic.css?v=234b1a7c" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=48df1187" />
|
||||
<link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=0fc419ee" />
|
||||
|
||||
<script src="../_static/documentation_options.js?v=0fe728b1"></script>
|
||||
<script src="../_static/doctools.js?v=9bcbadda"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
<script src="../_static/sidebar.js"></script>
|
||||
|
||||
<link rel="search" type="application/opensearchdescription+xml"
|
||||
title="Search within Python 3.15.0 documentation"
|
||||
href="../_static/opensearch.xml"/>
|
||||
<link rel="author" title="About these documents" href="../about.html" />
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="copyright" title="Copyright" href="../copyright.html" />
|
||||
<link rel="next" title="What’s New In Python 3.0" href="3.0.html" />
|
||||
<link rel="prev" title="What’s New In Python 3.2" href="3.2.html" />
|
||||
|
||||
|
||||
<link rel="canonical" href="https://docs.python.org/3/whatsnew/3.1.html">
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
@media only screen {
|
||||
table.full-width-table {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
|
||||
<link rel="shortcut icon" type="image/png" href="../_static/py.svg">
|
||||
<script type="text/javascript" src="../_static/copybutton.js"></script>
|
||||
<script type="text/javascript" src="../_static/menu.js"></script>
|
||||
<script type="text/javascript" src="../_static/search-focus.js"></script>
|
||||
<script type="text/javascript" src="../_static/themetoggle.js"></script>
|
||||
<script type="text/javascript" src="../_static/rtd_switcher.js"></script>
|
||||
<meta name="readthedocs-addons-api-version" content="1">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="mobile-nav">
|
||||
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
|
||||
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">
|
||||
<nav class="nav-content" role="navigation">
|
||||
<label for="menuToggler" class="toggler__label">
|
||||
<span></span>
|
||||
</label>
|
||||
<span class="nav-items-wrapper">
|
||||
<a href="https://www.python.org/" class="nav-logo">
|
||||
<img src="../_static/py.svg" alt="Python logo">
|
||||
</a>
|
||||
<span class="version_switcher_placeholder"></span>
|
||||
<form role="search" class="search" action="../search.html" method="get">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
|
||||
<path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
|
||||
</svg>
|
||||
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q">
|
||||
<input type="submit" value="Go">
|
||||
</form>
|
||||
</span>
|
||||
</nav>
|
||||
<div class="menu-wrapper">
|
||||
<nav class="menu" role="navigation" aria-label="main navigation">
|
||||
<div class="language_switcher_placeholder"></div>
|
||||
|
||||
<label class="theme-selector-label">
|
||||
Theme
|
||||
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||
<option value="auto" selected>Auto</option>
|
||||
<option value="light">Light</option>
|
||||
<option value="dark">Dark</option>
|
||||
</select>
|
||||
</label>
|
||||
<div>
|
||||
<h3><a href="../contents.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">What’s New In Python 3.1</a><ul>
|
||||
<li><a class="reference internal" href="#pep-372-ordered-dictionaries">PEP 372: Ordered Dictionaries</a></li>
|
||||
<li><a class="reference internal" href="#pep-378-format-specifier-for-thousands-separator">PEP 378: Format Specifier for Thousands Separator</a></li>
|
||||
<li><a class="reference internal" href="#other-language-changes">Other Language Changes</a></li>
|
||||
<li><a class="reference internal" href="#new-improved-and-deprecated-modules">New, Improved, and Deprecated Modules</a></li>
|
||||
<li><a class="reference internal" href="#optimizations">Optimizations</a></li>
|
||||
<li><a class="reference internal" href="#idle">IDLE</a></li>
|
||||
<li><a class="reference internal" href="#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li><a class="reference internal" href="#porting-to-python-3-1">Porting to Python 3.1</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="3.2.html"
|
||||
title="previous chapter">What’s New In Python 3.2</a></p>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="3.0.html"
|
||||
title="next chapter">What’s New In Python 3.0</a></p>
|
||||
</div>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const title = document.querySelector('meta[property="og:title"]').content;
|
||||
const elements = document.querySelectorAll('.improvepage');
|
||||
const pageurl = window.location.href.split('?')[0];
|
||||
elements.forEach(element => {
|
||||
const url = new URL(element.href.split('?')[0].replace("-nojs", ""));
|
||||
url.searchParams.set('pagetitle', title);
|
||||
url.searchParams.set('pageurl', pageurl);
|
||||
url.searchParams.set('pagesource', "whatsnew/3.1.rst");
|
||||
element.href = url.toString();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="../bugs.html">Report a bug</a></li>
|
||||
<li><a class="improvepage" href="../improve-page-nojs.html">Improve this page</a></li>
|
||||
<li>
|
||||
<a href="https://github.com/python/cpython/blob/3.15/Doc/whatsnew/3.1.rst?plain=1"
|
||||
rel="nofollow">Show source
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="related" role="navigation" aria-label="Related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="3.0.html" title="What’s New In Python 3.0"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="3.2.html" title="What’s New In Python 3.2"
|
||||
accesskey="P">previous</a> |</li>
|
||||
|
||||
<li class="root-icon"><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||
<li class="switchers">
|
||||
<div class="language_switcher_placeholder"></div>
|
||||
<div class="version_switcher_placeholder"></div>
|
||||
</li>
|
||||
<li>
|
||||
|
||||
</li>
|
||||
<li id="cpython-language-and-version">
|
||||
<a href="../index.html">3.15.0 Documentation</a> »
|
||||
</li>
|
||||
|
||||
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">What’s New in Python</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">What’s New In Python 3.1</a></li>
|
||||
<li class="right">
|
||||
|
||||
|
||||
<div class="inline-search" role="search">
|
||||
<form class="inline-search" action="../search.html" method="get">
|
||||
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||||
<input type="submit" value="Go">
|
||||
</form>
|
||||
</div>
|
||||
|
|
||||
</li>
|
||||
<li class="right">
|
||||
<label class="theme-selector-label">
|
||||
Theme
|
||||
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||
<option value="auto" selected>Auto</option>
|
||||
<option value="light">Light</option>
|
||||
<option value="dark">Dark</option>
|
||||
</select>
|
||||
</label> |</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="what-s-new-in-python-3-1">
|
||||
<h1>What’s New In Python 3.1<a class="headerlink" href="#what-s-new-in-python-3-1" title="Link to this heading">¶</a></h1>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Author<span class="colon">:</span></dt>
|
||||
<dd class="field-odd"><p>Raymond Hettinger</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<p>This article explains the new features in Python 3.1, compared to 3.0.
|
||||
Python 3.1 was released on June 27, 2009.</p>
|
||||
<section id="pep-372-ordered-dictionaries">
|
||||
<h2>PEP 372: Ordered Dictionaries<a class="headerlink" href="#pep-372-ordered-dictionaries" title="Link to this heading">¶</a></h2>
|
||||
<p>Regular Python dictionaries iterate over key/value pairs in arbitrary order.
|
||||
Over the years, a number of authors have written alternative implementations
|
||||
that remember the order that the keys were originally inserted. Based on
|
||||
the experiences from those implementations, a new
|
||||
<a class="reference internal" href="../library/collections.html#collections.OrderedDict" title="collections.OrderedDict"><code class="xref py py-class docutils literal notranslate"><span class="pre">collections.OrderedDict</span></code></a> class has been introduced.</p>
|
||||
<p>The OrderedDict API is substantially the same as regular dictionaries
|
||||
but will iterate over keys and values in a guaranteed order depending on
|
||||
when a key was first inserted. If a new entry overwrites an existing entry,
|
||||
the original insertion position is left unchanged. Deleting an entry and
|
||||
reinserting it will move it to the end.</p>
|
||||
<p>The standard library now supports use of ordered dictionaries in several
|
||||
modules. The <a class="reference internal" href="../library/configparser.html#module-configparser" title="configparser: Configuration file parser."><code class="xref py py-mod docutils literal notranslate"><span class="pre">configparser</span></code></a> module uses them by default. This lets
|
||||
configuration files be read, modified, and then written back in their original
|
||||
order. The <em>_asdict()</em> method for <a class="reference internal" href="../library/collections.html#collections.namedtuple" title="collections.namedtuple"><code class="xref py py-func docutils literal notranslate"><span class="pre">collections.namedtuple()</span></code></a> now
|
||||
returns an ordered dictionary with the values appearing in the same order as
|
||||
the underlying tuple indices. The <a class="reference internal" href="../library/json.html#module-json" title="json: Encode and decode the JSON format."><code class="xref py py-mod docutils literal notranslate"><span class="pre">json</span></code></a> module is being built-out with
|
||||
an <em>object_pairs_hook</em> to allow OrderedDicts to be built by the decoder.
|
||||
Support was also added for third-party tools like <a class="reference external" href="https://pyyaml.org/">PyYAML</a>.</p>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
<dl class="simple">
|
||||
<dt><span class="target" id="index-0"></span><a class="pep reference external" href="https://peps.python.org/pep-0372/"><strong>PEP 372</strong></a> - Ordered Dictionaries</dt><dd><p>PEP written by Armin Ronacher and Raymond Hettinger. Implementation
|
||||
written by Raymond Hettinger.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<p>Since an ordered dictionary remembers its insertion order, it can be used
|
||||
in conjunction with sorting to make a sorted dictionary:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="c1"># regular unsorted dictionary</span>
|
||||
<span class="gp">>>> </span><span class="n">d</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'banana'</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="s1">'apple'</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span> <span class="s1">'pear'</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="s1">'orange'</span><span class="p">:</span> <span class="mi">2</span><span class="p">}</span>
|
||||
|
||||
<span class="gp">>>> </span><span class="c1"># dictionary sorted by key</span>
|
||||
<span class="gp">>>> </span><span class="n">OrderedDict</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">items</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="n">t</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
|
||||
<span class="go">OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])</span>
|
||||
|
||||
<span class="gp">>>> </span><span class="c1"># dictionary sorted by value</span>
|
||||
<span class="gp">>>> </span><span class="n">OrderedDict</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">items</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="n">t</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
|
||||
<span class="go">OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])</span>
|
||||
|
||||
<span class="gp">>>> </span><span class="c1"># dictionary sorted by length of the key string</span>
|
||||
<span class="gp">>>> </span><span class="n">OrderedDict</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">items</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">t</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">[</span><span class="mi">0</span><span class="p">])))</span>
|
||||
<span class="go">OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The new sorted dictionaries maintain their sort order when entries
|
||||
are deleted. But when new keys are added, the keys are appended
|
||||
to the end and the sort is not maintained.</p>
|
||||
</section>
|
||||
<section id="pep-378-format-specifier-for-thousands-separator">
|
||||
<h2>PEP 378: Format Specifier for Thousands Separator<a class="headerlink" href="#pep-378-format-specifier-for-thousands-separator" title="Link to this heading">¶</a></h2>
|
||||
<p>The built-in <a class="reference internal" href="../builtins/functions.html#format" title="format"><code class="xref py py-func docutils literal notranslate"><span class="pre">format()</span></code></a> function and the <a class="reference internal" href="../builtins/stdtypes.html#str.format" title="str.format"><code class="xref py py-meth docutils literal notranslate"><span class="pre">str.format()</span></code></a> method use
|
||||
a mini-language that now includes a simple, non-locale aware way to format
|
||||
a number with a thousands separator. That provides a way to humanize a
|
||||
program’s output, improving its professional appearance and readability:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">format</span><span class="p">(</span><span class="mi">1234567</span><span class="p">,</span> <span class="s1">',d'</span><span class="p">)</span>
|
||||
<span class="go">'1,234,567'</span>
|
||||
<span class="gp">>>> </span><span class="nb">format</span><span class="p">(</span><span class="mf">1234567.89</span><span class="p">,</span> <span class="s1">',.2f'</span><span class="p">)</span>
|
||||
<span class="go">'1,234,567.89'</span>
|
||||
<span class="gp">>>> </span><span class="nb">format</span><span class="p">(</span><span class="mf">12345.6</span> <span class="o">+</span> <span class="mf">8901234.12</span><span class="n">j</span><span class="p">,</span> <span class="s1">',f'</span><span class="p">)</span>
|
||||
<span class="go">'12,345.600000+8,901,234.120000j'</span>
|
||||
<span class="gp">>>> </span><span class="nb">format</span><span class="p">(</span><span class="n">Decimal</span><span class="p">(</span><span class="s1">'1234567.89'</span><span class="p">),</span> <span class="s1">',f'</span><span class="p">)</span>
|
||||
<span class="go">'1,234,567.89'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The supported types are <a class="reference internal" href="../builtins/functions.html#int" title="int"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a>, <a class="reference internal" href="../builtins/functions.html#float" title="float"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>, <a class="reference internal" href="../builtins/functions.html#complex" title="complex"><code class="xref py py-class docutils literal notranslate"><span class="pre">complex</span></code></a>
|
||||
and <a class="reference internal" href="../library/decimal.html#decimal.Decimal" title="decimal.Decimal"><code class="xref py py-class docutils literal notranslate"><span class="pre">decimal.Decimal</span></code></a>.</p>
|
||||
<p>Discussions are underway about how to specify alternative separators
|
||||
like dots, spaces, apostrophes, or underscores. Locale-aware applications
|
||||
should use the existing <em>n</em> format specifier which already has some support
|
||||
for thousands separators.</p>
|
||||
<div class="admonition seealso">
|
||||
<p class="admonition-title">See also</p>
|
||||
<dl class="simple">
|
||||
<dt><span class="target" id="index-1"></span><a class="pep reference external" href="https://peps.python.org/pep-0378/"><strong>PEP 378</strong></a> - Format Specifier for Thousands Separator</dt><dd><p>PEP written by Raymond Hettinger and implemented by Eric Smith and
|
||||
Mark Dickinson.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</section>
|
||||
<section id="other-language-changes">
|
||||
<h2>Other Language Changes<a class="headerlink" href="#other-language-changes" title="Link to this heading">¶</a></h2>
|
||||
<p>Some smaller changes made to the core Python language are:</p>
|
||||
<ul>
|
||||
<li><p>Directories and zip archives containing a <code class="file docutils literal notranslate"><span class="pre">__main__.py</span></code>
|
||||
file can now be executed directly by passing their name to the
|
||||
interpreter. The directory/zipfile is automatically inserted as the
|
||||
first entry in sys.path. (Suggestion and initial patch by Andy Chu;
|
||||
revised patch by Phillip J. Eby and Nick Coghlan; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=1739468">bpo-1739468</a>.)</p></li>
|
||||
<li><p>The <a class="reference internal" href="../builtins/functions.html#int" title="int"><code class="xref py py-func docutils literal notranslate"><span class="pre">int()</span></code></a> type gained a <code class="docutils literal notranslate"><span class="pre">bit_length</span></code> method that returns the
|
||||
number of bits necessary to represent its argument in binary:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">n</span> <span class="o">=</span> <span class="mi">37</span>
|
||||
<span class="gp">>>> </span><span class="nb">bin</span><span class="p">(</span><span class="mi">37</span><span class="p">)</span>
|
||||
<span class="go">'0b100101'</span>
|
||||
<span class="gp">>>> </span><span class="n">n</span><span class="o">.</span><span class="n">bit_length</span><span class="p">()</span>
|
||||
<span class="go">6</span>
|
||||
<span class="gp">>>> </span><span class="n">n</span> <span class="o">=</span> <span class="mi">2</span><span class="o">**</span><span class="mi">123</span><span class="o">-</span><span class="mi">1</span>
|
||||
<span class="gp">>>> </span><span class="n">n</span><span class="o">.</span><span class="n">bit_length</span><span class="p">()</span>
|
||||
<span class="go">123</span>
|
||||
<span class="gp">>>> </span><span class="p">(</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">bit_length</span><span class="p">()</span>
|
||||
<span class="go">124</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>(Contributed by Fredrik Johansson, Victor Stinner, Raymond Hettinger,
|
||||
and Mark Dickinson; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=3439">bpo-3439</a>.)</p>
|
||||
</li>
|
||||
<li><p>The fields in <a class="reference internal" href="../builtins/functions.html#format" title="format"><code class="xref py py-func docutils literal notranslate"><span class="pre">format()</span></code></a> strings can now be automatically
|
||||
numbered:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="s1">'Sir </span><span class="si">{}</span><span class="s1"> of </span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s1">'Gallahad'</span><span class="p">,</span> <span class="s1">'Camelot'</span><span class="p">)</span>
|
||||
<span class="go">'Sir Gallahad of Camelot'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Formerly, the string would have required numbered fields such as:
|
||||
<code class="docutils literal notranslate"><span class="pre">'Sir</span> <span class="pre">{0}</span> <span class="pre">of</span> <span class="pre">{1}'</span></code>.</p>
|
||||
<p>(Contributed by Eric Smith; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=5237">bpo-5237</a>.)</p>
|
||||
</li>
|
||||
<li><p>The <code class="xref py py-func docutils literal notranslate"><span class="pre">string.maketrans()</span></code> function is deprecated and is replaced by new
|
||||
static methods, <a class="reference internal" href="../builtins/stdtypes.html#bytes.maketrans" title="bytes.maketrans"><code class="xref py py-meth docutils literal notranslate"><span class="pre">bytes.maketrans()</span></code></a> and <a class="reference internal" href="../builtins/stdtypes.html#bytearray.maketrans" title="bytearray.maketrans"><code class="xref py py-meth docutils literal notranslate"><span class="pre">bytearray.maketrans()</span></code></a>.
|
||||
This change solves the confusion around which types were supported by the
|
||||
<a class="reference internal" href="../library/string.html#module-string" title="string: Common string operations."><code class="xref py py-mod docutils literal notranslate"><span class="pre">string</span></code></a> module. Now, <a class="reference internal" href="../builtins/stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>, <a class="reference internal" href="../builtins/stdtypes.html#bytes" title="bytes"><code class="xref py py-class docutils literal notranslate"><span class="pre">bytes</span></code></a>, and
|
||||
<a class="reference internal" href="../builtins/stdtypes.html#bytearray" title="bytearray"><code class="xref py py-class docutils literal notranslate"><span class="pre">bytearray</span></code></a> each have their own <strong>maketrans</strong> and <strong>translate</strong>
|
||||
methods with intermediate translation tables of the appropriate type.</p>
|
||||
<p>(Contributed by Georg Brandl; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=5675">bpo-5675</a>.)</p>
|
||||
</li>
|
||||
<li><p>The syntax of the <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> statement now allows multiple context
|
||||
managers in a single statement:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">'mylog.txt'</span><span class="p">)</span> <span class="k">as</span> <span class="n">infile</span><span class="p">,</span> <span class="nb">open</span><span class="p">(</span><span class="s1">'a.out'</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">)</span> <span class="k">as</span> <span class="n">outfile</span><span class="p">:</span>
|
||||
<span class="gp">... </span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">infile</span><span class="p">:</span>
|
||||
<span class="gp">... </span> <span class="k">if</span> <span class="s1">'<critical>'</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
|
||||
<span class="gp">... </span> <span class="n">outfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>With the new syntax, the <code class="xref py py-func docutils literal notranslate"><span class="pre">contextlib.nested()</span></code> function is no longer
|
||||
needed and is now deprecated.</p>
|
||||
<p>(Contributed by Georg Brandl and Mattias Brändström;
|
||||
<a class="reference external" href="https://codereview.appspot.com/53094">appspot issue 53094</a>.)</p>
|
||||
</li>
|
||||
<li><p><code class="docutils literal notranslate"><span class="pre">round(x,</span> <span class="pre">n)</span></code> now returns an integer if <em>x</em> is an integer.
|
||||
Previously it returned a float:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">round</span><span class="p">(</span><span class="mi">1123</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="go">1100</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>(Contributed by Mark Dickinson; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4707">bpo-4707</a>.)</p>
|
||||
</li>
|
||||
<li><p>Python now uses David Gay’s algorithm for finding the shortest floating-point
|
||||
representation that doesn’t change its value. This should help
|
||||
mitigate some of the confusion surrounding binary floating-point
|
||||
numbers.</p>
|
||||
<p>The significance is easily seen with a number like <code class="docutils literal notranslate"><span class="pre">1.1</span></code> which does not
|
||||
have an exact equivalent in binary floating point. Since there is no exact
|
||||
equivalent, an expression like <code class="docutils literal notranslate"><span class="pre">float('1.1')</span></code> evaluates to the nearest
|
||||
representable value which is <code class="docutils literal notranslate"><span class="pre">0x1.199999999999ap+0</span></code> in hex or
|
||||
<code class="docutils literal notranslate"><span class="pre">1.100000000000000088817841970012523233890533447265625</span></code> in decimal. That
|
||||
nearest value was and still is used in subsequent floating-point
|
||||
calculations.</p>
|
||||
<p>What is new is how the number gets displayed. Formerly, Python used a
|
||||
simple approach. The value of <code class="docutils literal notranslate"><span class="pre">repr(1.1)</span></code> was computed as <code class="docutils literal notranslate"><span class="pre">format(1.1,</span>
|
||||
<span class="pre">'.17g')</span></code> which evaluated to <code class="docutils literal notranslate"><span class="pre">'1.1000000000000001'</span></code>. The advantage of
|
||||
using 17 digits was that it relied on IEEE-754 guarantees to assure that
|
||||
<code class="docutils literal notranslate"><span class="pre">eval(repr(1.1))</span></code> would round-trip exactly to its original value. The
|
||||
disadvantage is that many people found the output to be confusing (mistaking
|
||||
intrinsic limitations of binary floating-point representation as being a
|
||||
problem with Python itself).</p>
|
||||
<p>The new algorithm for <code class="docutils literal notranslate"><span class="pre">repr(1.1)</span></code> is smarter and returns <code class="docutils literal notranslate"><span class="pre">'1.1'</span></code>.
|
||||
Effectively, it searches all equivalent string representations (ones that
|
||||
get stored with the same underlying float value) and returns the shortest
|
||||
representation.</p>
|
||||
<p>The new algorithm tends to emit cleaner representations when possible, but
|
||||
it does not change the underlying values. So, it is still the case that
|
||||
<code class="docutils literal notranslate"><span class="pre">1.1</span> <span class="pre">+</span> <span class="pre">2.2</span> <span class="pre">!=</span> <span class="pre">3.3</span></code> even though the representations may suggest otherwise.</p>
|
||||
<p>The new algorithm depends on certain features in the underlying floating-point
|
||||
implementation. If the required features are not found, the old
|
||||
algorithm will continue to be used. Also, the text pickle protocols
|
||||
assure cross-platform portability by using the old algorithm.</p>
|
||||
<p>(Contributed by Eric Smith and Mark Dickinson; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=1580">bpo-1580</a>)</p>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="new-improved-and-deprecated-modules">
|
||||
<h2>New, Improved, and Deprecated Modules<a class="headerlink" href="#new-improved-and-deprecated-modules" title="Link to this heading">¶</a></h2>
|
||||
<ul>
|
||||
<li><p>Added a <a class="reference internal" href="../library/collections.html#collections.Counter" title="collections.Counter"><code class="xref py py-class docutils literal notranslate"><span class="pre">collections.Counter</span></code></a> class to support convenient
|
||||
counting of unique items in a sequence or iterable:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Counter</span><span class="p">([</span><span class="s1">'red'</span><span class="p">,</span> <span class="s1">'blue'</span><span class="p">,</span> <span class="s1">'red'</span><span class="p">,</span> <span class="s1">'green'</span><span class="p">,</span> <span class="s1">'blue'</span><span class="p">,</span> <span class="s1">'blue'</span><span class="p">])</span>
|
||||
<span class="go">Counter({'blue': 3, 'red': 2, 'green': 1})</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>(Contributed by Raymond Hettinger; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=1696199">bpo-1696199</a>.)</p>
|
||||
</li>
|
||||
<li><p>Added a new module, <a class="reference internal" href="../library/tkinter.ttk.html#module-tkinter.ttk" title="tkinter.ttk: Tk themed widget set"><code class="xref py py-mod docutils literal notranslate"><span class="pre">tkinter.ttk</span></code></a> for access to the Tk themed widget set.
|
||||
The basic idea of ttk is to separate, to the extent possible, the code
|
||||
implementing a widget’s behavior from the code implementing its appearance.</p>
|
||||
<p>(Contributed by Guilherme Polo; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=2983">bpo-2983</a>.)</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../library/gzip.html#gzip.GzipFile" title="gzip.GzipFile"><code class="xref py py-class docutils literal notranslate"><span class="pre">gzip.GzipFile</span></code></a> and <a class="reference internal" href="../library/bz2.html#bz2.BZ2File" title="bz2.BZ2File"><code class="xref py py-class docutils literal notranslate"><span class="pre">bz2.BZ2File</span></code></a> classes now support
|
||||
the context management protocol:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="c1"># Automatically close file after writing</span>
|
||||
<span class="gp">>>> </span><span class="k">with</span> <span class="n">gzip</span><span class="o">.</span><span class="n">GzipFile</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s2">"wb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
||||
<span class="gp">... </span> <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">b</span><span class="s2">"xxx"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>(Contributed by Antoine Pitrou.)</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../library/decimal.html#module-decimal" title="decimal: Implementation of the General Decimal Arithmetic Specification."><code class="xref py py-mod docutils literal notranslate"><span class="pre">decimal</span></code></a> module now supports methods for creating a
|
||||
decimal object from a binary <a class="reference internal" href="../builtins/functions.html#float" title="float"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>. The conversion is
|
||||
exact but can sometimes be surprising:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">Decimal</span><span class="o">.</span><span class="n">from_float</span><span class="p">(</span><span class="mf">1.1</span><span class="p">)</span>
|
||||
<span class="go">Decimal('1.100000000000000088817841970012523233890533447265625')</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The long decimal result shows the actual binary fraction being
|
||||
stored for <em>1.1</em>. The fraction has many digits because <em>1.1</em> cannot
|
||||
be exactly represented in binary.</p>
|
||||
<p>(Contributed by Raymond Hettinger and Mark Dickinson.)</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../library/itertools.html#module-itertools" title="itertools: Functions creating iterators for efficient looping."><code class="xref py py-mod docutils literal notranslate"><span class="pre">itertools</span></code></a> module grew two new functions. The
|
||||
<a class="reference internal" href="../library/itertools.html#itertools.combinations_with_replacement" title="itertools.combinations_with_replacement"><code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.combinations_with_replacement()</span></code></a> function is one of
|
||||
four for generating combinatorics including permutations and Cartesian
|
||||
products. The <a class="reference internal" href="../library/itertools.html#itertools.compress" title="itertools.compress"><code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.compress()</span></code></a> function mimics its namesake
|
||||
from APL. Also, the existing <a class="reference internal" href="../library/itertools.html#itertools.count" title="itertools.count"><code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.count()</span></code></a> function now has
|
||||
an optional <em>step</em> argument and can accept any type of counting
|
||||
sequence including <a class="reference internal" href="../library/fractions.html#fractions.Fraction" title="fractions.Fraction"><code class="xref py py-class docutils literal notranslate"><span class="pre">fractions.Fraction</span></code></a> and
|
||||
<a class="reference internal" href="../library/decimal.html#decimal.Decimal" title="decimal.Decimal"><code class="xref py py-class docutils literal notranslate"><span class="pre">decimal.Decimal</span></code></a>:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="p">[</span><span class="n">p</span><span class="o">+</span><span class="n">q</span> <span class="k">for</span> <span class="n">p</span><span class="p">,</span><span class="n">q</span> <span class="ow">in</span> <span class="n">combinations_with_replacement</span><span class="p">(</span><span class="s1">'LOVE'</span><span class="p">,</span> <span class="mi">2</span><span class="p">)]</span>
|
||||
<span class="go">['LL', 'LO', 'LV', 'LE', 'OO', 'OV', 'OE', 'VV', 'VE', 'EE']</span>
|
||||
|
||||
<span class="gp">>>> </span><span class="nb">list</span><span class="p">(</span><span class="n">compress</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">),</span> <span class="n">selectors</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]))</span>
|
||||
<span class="go">[2, 3, 5, 7]</span>
|
||||
|
||||
<span class="gp">>>> </span><span class="n">c</span> <span class="o">=</span> <span class="n">count</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="n">Fraction</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span> <span class="n">step</span><span class="o">=</span><span class="n">Fraction</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">6</span><span class="p">))</span>
|
||||
<span class="gp">>>> </span><span class="p">[</span><span class="nb">next</span><span class="p">(</span><span class="n">c</span><span class="p">),</span> <span class="nb">next</span><span class="p">(</span><span class="n">c</span><span class="p">),</span> <span class="nb">next</span><span class="p">(</span><span class="n">c</span><span class="p">),</span> <span class="nb">next</span><span class="p">(</span><span class="n">c</span><span class="p">)]</span>
|
||||
<span class="go">[Fraction(1, 2), Fraction(2, 3), Fraction(5, 6), Fraction(1, 1)]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>(Contributed by Raymond Hettinger.)</p>
|
||||
</li>
|
||||
<li><p><a class="reference internal" href="../library/collections.html#collections.namedtuple" title="collections.namedtuple"><code class="xref py py-func docutils literal notranslate"><span class="pre">collections.namedtuple()</span></code></a> now supports a keyword argument
|
||||
<em>rename</em> which lets invalid fieldnames be automatically converted to
|
||||
positional names in the form _0, _1, etc. This is useful when
|
||||
the field names are being created by an external source such as a
|
||||
CSV header, SQL field list, or user input:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">query</span> <span class="o">=</span> <span class="nb">input</span><span class="p">()</span>
|
||||
<span class="go">SELECT region, dept, count(*) FROM main GROUPBY region, dept</span>
|
||||
|
||||
<span class="gp">>>> </span><span class="n">cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">query</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">query_fields</span> <span class="o">=</span> <span class="p">[</span><span class="n">desc</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">desc</span> <span class="ow">in</span> <span class="n">cursor</span><span class="o">.</span><span class="n">description</span><span class="p">]</span>
|
||||
<span class="gp">>>> </span><span class="n">UserQuery</span> <span class="o">=</span> <span class="n">namedtuple</span><span class="p">(</span><span class="s1">'UserQuery'</span><span class="p">,</span> <span class="n">query_fields</span><span class="p">,</span> <span class="n">rename</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">pprint</span><span class="o">.</span><span class="n">pprint</span><span class="p">([</span><span class="n">UserQuery</span><span class="p">(</span><span class="o">*</span><span class="n">row</span><span class="p">)</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">cursor</span><span class="p">])</span>
|
||||
<span class="go">[UserQuery(region='South', dept='Shipping', _2=185),</span>
|
||||
<span class="go"> UserQuery(region='North', dept='Accounting', _2=37),</span>
|
||||
<span class="go"> UserQuery(region='West', dept='Sales', _2=419)]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>(Contributed by Raymond Hettinger; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=1818">bpo-1818</a>.)</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../library/re.html#re.sub" title="re.sub"><code class="xref py py-func docutils literal notranslate"><span class="pre">re.sub()</span></code></a>, <a class="reference internal" href="../library/re.html#re.subn" title="re.subn"><code class="xref py py-func docutils literal notranslate"><span class="pre">re.subn()</span></code></a> and <a class="reference internal" href="../library/re.html#re.split" title="re.split"><code class="xref py py-func docutils literal notranslate"><span class="pre">re.split()</span></code></a> functions now
|
||||
accept a flags parameter.</p>
|
||||
<p>(Contributed by Gregory Smith.)</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../library/logging.html#module-logging" title="logging: Flexible event logging system for applications."><code class="xref py py-mod docutils literal notranslate"><span class="pre">logging</span></code></a> module now implements a simple <a class="reference internal" href="../library/logging.handlers.html#logging.NullHandler" title="logging.NullHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">logging.NullHandler</span></code></a>
|
||||
class for applications that are not using logging but are calling
|
||||
library code that does. Setting-up a null handler will suppress
|
||||
spurious warnings such as “No handlers could be found for logger foo”:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">h</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">NullHandler</span><span class="p">()</span>
|
||||
<span class="gp">>>> </span><span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s2">"foo"</span><span class="p">)</span><span class="o">.</span><span class="n">addHandler</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>(Contributed by Vinay Sajip; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4384">bpo-4384</a>).</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../library/runpy.html#module-runpy" title="runpy: Locate and run Python modules without importing them first."><code class="xref py py-mod docutils literal notranslate"><span class="pre">runpy</span></code></a> module which supports the <code class="docutils literal notranslate"><span class="pre">-m</span></code> command line switch
|
||||
now supports the execution of packages by looking for and executing
|
||||
a <code class="docutils literal notranslate"><span class="pre">__main__</span></code> submodule when a package name is supplied.</p>
|
||||
<p>(Contributed by Andi Vajda; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4195">bpo-4195</a>.)</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../library/pdb.html#module-pdb" title="pdb: The Python debugger for interactive interpreters."><code class="xref py py-mod docutils literal notranslate"><span class="pre">pdb</span></code></a> module can now access and display source code loaded via
|
||||
<a class="reference internal" href="../library/zipimport.html#module-zipimport" title="zipimport: Support for importing Python modules from ZIP archives."><code class="xref py py-mod docutils literal notranslate"><span class="pre">zipimport</span></code></a> (or any other conformant <span class="target" id="index-2"></span><a class="pep reference external" href="https://peps.python.org/pep-0302/"><strong>PEP 302</strong></a> loader).</p>
|
||||
<p>(Contributed by Alexander Belopolsky; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4201">bpo-4201</a>.)</p>
|
||||
</li>
|
||||
<li><p><a class="reference internal" href="../library/functools.html#functools.partial" title="functools.partial"><code class="xref py py-class docutils literal notranslate"><span class="pre">functools.partial</span></code></a> objects can now be pickled.</p></li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<div><p>(Suggested by Antoine Pitrou and Jesse Noller. Implemented by
|
||||
Jack Diederich; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=5228">bpo-5228</a>.)</p>
|
||||
</div></blockquote>
|
||||
<ul>
|
||||
<li><p>Add <a class="reference internal" href="../library/pydoc.html#module-pydoc" title="pydoc: Documentation generator and online help system."><code class="xref py py-mod docutils literal notranslate"><span class="pre">pydoc</span></code></a> help topics for symbols so that <code class="docutils literal notranslate"><span class="pre">help('@')</span></code>
|
||||
works as expected in the interactive environment.</p>
|
||||
<p>(Contributed by David Laban; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4739">bpo-4739</a>.)</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../library/unittest.html#module-unittest" title="unittest: Unit testing framework for Python."><code class="xref py py-mod docutils literal notranslate"><span class="pre">unittest</span></code></a> module now supports skipping individual tests or classes
|
||||
of tests. And it supports marking a test as an expected failure, a test that
|
||||
is known to be broken, but shouldn’t be counted as a failure on a
|
||||
TestResult:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">TestGizmo</span><span class="p">(</span><span class="n">unittest</span><span class="o">.</span><span class="n">TestCase</span><span class="p">):</span>
|
||||
|
||||
<span class="nd">@unittest</span><span class="o">.</span><span class="n">skipUnless</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">platform</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"win"</span><span class="p">),</span> <span class="s2">"requires Windows"</span><span class="p">)</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">test_gizmo_on_windows</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="o">...</span>
|
||||
|
||||
<span class="nd">@unittest</span><span class="o">.</span><span class="n">expectedFailure</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">test_gimzo_without_required_library</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="o">...</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Also, tests for exceptions have been builtout to work with context managers
|
||||
using the <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> statement:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">test_division_by_zero</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">assertRaises</span><span class="p">(</span><span class="ne">ZeroDivisionError</span><span class="p">):</span>
|
||||
<span class="n">x</span> <span class="o">/</span> <span class="mi">0</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>In addition, several new assertion methods were added including
|
||||
<a class="reference internal" href="../library/unittest.html#unittest.TestCase.assertSetEqual" title="unittest.TestCase.assertSetEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertSetEqual()</span></code></a>,
|
||||
<a class="reference internal" href="../library/unittest.html#unittest.TestCase.assertDictEqual" title="unittest.TestCase.assertDictEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertDictEqual()</span></code></a>,
|
||||
<code class="xref py py-meth docutils literal notranslate"><span class="pre">assertDictContainsSubset()</span></code>,
|
||||
<a class="reference internal" href="../library/unittest.html#unittest.TestCase.assertListEqual" title="unittest.TestCase.assertListEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertListEqual()</span></code></a>,
|
||||
<a class="reference internal" href="../library/unittest.html#unittest.TestCase.assertTupleEqual" title="unittest.TestCase.assertTupleEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertTupleEqual()</span></code></a>,
|
||||
<a class="reference internal" href="../library/unittest.html#unittest.TestCase.assertSequenceEqual" title="unittest.TestCase.assertSequenceEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertSequenceEqual()</span></code></a>,
|
||||
<a class="reference internal" href="../library/unittest.html#unittest.TestCase.assertRaisesRegex" title="unittest.TestCase.assertRaisesRegex"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertRaisesRegexp()</span></code></a>,
|
||||
<a class="reference internal" href="../library/unittest.html#unittest.TestCase.assertIsNone" title="unittest.TestCase.assertIsNone"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertIsNone()</span></code></a>,
|
||||
and <a class="reference internal" href="../library/unittest.html#unittest.TestCase.assertIsNotNone" title="unittest.TestCase.assertIsNotNone"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertIsNotNone()</span></code></a>.</p>
|
||||
<p>(Contributed by Benjamin Peterson and Antoine Pitrou.)</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../library/io.html#module-io" title="io: Core tools for working with streams."><code class="xref py py-mod docutils literal notranslate"><span class="pre">io</span></code></a> module has three new constants for the <a class="reference internal" href="../library/io.html#io.IOBase.seek" title="io.IOBase.seek"><code class="xref py py-meth docutils literal notranslate"><span class="pre">seek()</span></code></a>
|
||||
method: <a class="reference internal" href="../library/os.html#os.SEEK_SET" title="os.SEEK_SET"><code class="xref py py-data docutils literal notranslate"><span class="pre">SEEK_SET</span></code></a>, <a class="reference internal" href="../library/os.html#os.SEEK_CUR" title="os.SEEK_CUR"><code class="xref py py-data docutils literal notranslate"><span class="pre">SEEK_CUR</span></code></a>, and <a class="reference internal" href="../library/os.html#os.SEEK_END" title="os.SEEK_END"><code class="xref py py-data docutils literal notranslate"><span class="pre">SEEK_END</span></code></a>.</p></li>
|
||||
<li><p>The <a class="reference internal" href="../library/sys.html#sys.version_info" title="sys.version_info"><code class="xref py py-data docutils literal notranslate"><span class="pre">sys.version_info</span></code></a> tuple is now a named tuple:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sys</span><span class="o">.</span><span class="n">version_info</span>
|
||||
<span class="go">sys.version_info(major=3, minor=1, micro=0, releaselevel='alpha', serial=2)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>(Contributed by Ross Light; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4285">bpo-4285</a>.)</p>
|
||||
</li>
|
||||
<li><p>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">nntplib</span></code> and <a class="reference internal" href="../library/imaplib.html#module-imaplib" title="imaplib: IMAP4 protocol client (requires sockets)."><code class="xref py py-mod docutils literal notranslate"><span class="pre">imaplib</span></code></a> modules now support IPv6.</p>
|
||||
<p>(Contributed by Derek Morr; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=1655">bpo-1655</a> and <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=1664">bpo-1664</a>.)</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../library/pickle.html#module-pickle" title="pickle: Convert Python objects to streams of bytes and back."><code class="xref py py-mod docutils literal notranslate"><span class="pre">pickle</span></code></a> module has been adapted for better interoperability with
|
||||
Python 2.x when used with protocol 2 or lower. The reorganization of the
|
||||
standard library changed the formal reference for many objects. For
|
||||
example, <code class="docutils literal notranslate"><span class="pre">__builtin__.set</span></code> in Python 2 is called <code class="docutils literal notranslate"><span class="pre">builtins.set</span></code> in Python
|
||||
3. This change confounded efforts to share data between different versions of
|
||||
Python. But now when protocol 2 or lower is selected, the pickler will
|
||||
automatically use the old Python 2 names for both loading and dumping. This
|
||||
remapping is turned-on by default but can be disabled with the <em>fix_imports</em>
|
||||
option:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">s</span> <span class="o">=</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">}</span>
|
||||
<span class="gp">>>> </span><span class="n">pickle</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">protocol</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="go">b'c__builtin__\nset\np0\n((lp1\nL1L\naL2L\naL3L\natp2\nRp3\n.'</span>
|
||||
<span class="gp">>>> </span><span class="n">pickle</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">protocol</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">fix_imports</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="go">b'cbuiltins\nset\np0\n((lp1\nL1L\naL2L\naL3L\natp2\nRp3\n.'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>An unfortunate but unavoidable side-effect of this change is that protocol 2
|
||||
pickles produced by Python 3.1 won’t be readable with Python 3.0. The latest
|
||||
pickle protocol, protocol 3, should be used when migrating data between
|
||||
Python 3.x implementations, as it doesn’t attempt to remain compatible with
|
||||
Python 2.x.</p>
|
||||
<p>(Contributed by Alexandre Vassalotti and Antoine Pitrou, <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=6137">bpo-6137</a>.)</p>
|
||||
</li>
|
||||
<li><p>A new module, <a class="reference internal" href="../library/importlib.html#module-importlib" title="importlib: The implementation of the import machinery."><code class="xref py py-mod docutils literal notranslate"><span class="pre">importlib</span></code></a> was added. It provides a complete, portable,
|
||||
pure Python reference implementation of the <a class="reference internal" href="../reference/simple_stmts.html#import"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">import</span></code></a> statement and its
|
||||
counterpart, the <a class="reference internal" href="../builtins/functions.html#import__" title="__import__"><code class="xref py py-func docutils literal notranslate"><span class="pre">__import__()</span></code></a> function. It represents a substantial
|
||||
step forward in documenting and defining the actions that take place during
|
||||
imports.</p>
|
||||
<p>(Contributed by Brett Cannon.)</p>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="optimizations">
|
||||
<h2>Optimizations<a class="headerlink" href="#optimizations" title="Link to this heading">¶</a></h2>
|
||||
<p>Major performance enhancements have been added:</p>
|
||||
<ul>
|
||||
<li><p>The new I/O library (as defined in <span class="target" id="index-3"></span><a class="pep reference external" href="https://peps.python.org/pep-3116/"><strong>PEP 3116</strong></a>) was mostly written in
|
||||
Python and quickly proved to be a problematic bottleneck in Python 3.0.
|
||||
In Python 3.1, the I/O library has been entirely rewritten in C and is
|
||||
2 to 20 times faster depending on the task at hand. The pure Python
|
||||
version is still available for experimentation purposes through
|
||||
the <code class="docutils literal notranslate"><span class="pre">_pyio</span></code> module.</p>
|
||||
<p>(Contributed by Amaury Forgeot d’Arc and Antoine Pitrou.)</p>
|
||||
</li>
|
||||
<li><p>Added a heuristic so that tuples and dicts containing only untrackable objects
|
||||
are not tracked by the garbage collector. This can reduce the size of
|
||||
collections and therefore the garbage collection overhead on long-running
|
||||
programs, depending on their particular use of datatypes.</p>
|
||||
<p>(Contributed by Antoine Pitrou, <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4688">bpo-4688</a>.)</p>
|
||||
</li>
|
||||
<li><p>Enabling a configure option named <code class="docutils literal notranslate"><span class="pre">--with-computed-gotos</span></code>
|
||||
on compilers that support it (notably: gcc, SunPro, icc), the bytecode
|
||||
evaluation loop is compiled with a new dispatch mechanism which gives
|
||||
speedups of up to 20%, depending on the system, the compiler, and
|
||||
the benchmark.</p>
|
||||
<p>(Contributed by Antoine Pitrou along with a number of other participants,
|
||||
<a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4753">bpo-4753</a>).</p>
|
||||
</li>
|
||||
<li><p>The decoding of UTF-8, UTF-16 and LATIN-1 is now two to four times
|
||||
faster.</p>
|
||||
<p>(Contributed by Antoine Pitrou and Amaury Forgeot d’Arc, <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4868">bpo-4868</a>.)</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../library/json.html#module-json" title="json: Encode and decode the JSON format."><code class="xref py py-mod docutils literal notranslate"><span class="pre">json</span></code></a> module now has a C extension to substantially improve
|
||||
its performance. In addition, the API was modified so that json works
|
||||
only with <a class="reference internal" href="../builtins/stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>, not with <a class="reference internal" href="../builtins/stdtypes.html#bytes" title="bytes"><code class="xref py py-class docutils literal notranslate"><span class="pre">bytes</span></code></a>. That change makes the
|
||||
module closely match the <a class="reference external" href="https://json.org/">JSON specification</a>
|
||||
which is defined in terms of Unicode.</p>
|
||||
<p>(Contributed by Bob Ippolito and converted to Py3.1 by Antoine Pitrou
|
||||
and Benjamin Peterson; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4136">bpo-4136</a>.)</p>
|
||||
</li>
|
||||
<li><p>Unpickling now interns the attribute names of pickled objects. This saves
|
||||
memory and allows pickles to be smaller.</p>
|
||||
<p>(Contributed by Jake McGuire and Antoine Pitrou; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=5084">bpo-5084</a>.)</p>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="idle">
|
||||
<h2>IDLE<a class="headerlink" href="#idle" title="Link to this heading">¶</a></h2>
|
||||
<ul>
|
||||
<li><p>IDLE’s format menu now provides an option to strip trailing whitespace
|
||||
from a source file.</p>
|
||||
<p>(Contributed by Roger D. Serwy; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=5150">bpo-5150</a>.)</p>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="build-and-c-api-changes">
|
||||
<h2>Build and C API Changes<a class="headerlink" href="#build-and-c-api-changes" title="Link to this heading">¶</a></h2>
|
||||
<p>Changes to Python’s build process and to the C API include:</p>
|
||||
<ul>
|
||||
<li><p>Integers are now stored internally either in base <code class="docutils literal notranslate"><span class="pre">2**15</span></code> or in base
|
||||
<code class="docutils literal notranslate"><span class="pre">2**30</span></code>, the base being determined at build time. Previously, they
|
||||
were always stored in base <code class="docutils literal notranslate"><span class="pre">2**15</span></code>. Using base <code class="docutils literal notranslate"><span class="pre">2**30</span></code> gives
|
||||
significant performance improvements on 64-bit machines, but
|
||||
benchmark results on 32-bit machines have been mixed. Therefore,
|
||||
the default is to use base <code class="docutils literal notranslate"><span class="pre">2**30</span></code> on 64-bit machines and base <code class="docutils literal notranslate"><span class="pre">2**15</span></code>
|
||||
on 32-bit machines; on Unix, there’s a new configure option
|
||||
<code class="docutils literal notranslate"><span class="pre">--enable-big-digits</span></code> that can be used to override this default.</p>
|
||||
<p>Apart from the performance improvements this change should be invisible to
|
||||
end users, with one exception: for testing and debugging purposes there’s a
|
||||
new <a class="reference internal" href="../library/sys.html#sys.int_info" title="sys.int_info"><code class="xref py py-data docutils literal notranslate"><span class="pre">sys.int_info</span></code></a> that provides information about the
|
||||
internal format, giving the number of bits per digit and the size in bytes
|
||||
of the C type used to store each digit:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
|
||||
<span class="gp">>>> </span><span class="n">sys</span><span class="o">.</span><span class="n">int_info</span>
|
||||
<span class="go">sys.int_info(bits_per_digit=30, sizeof_digit=4)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>(Contributed by Mark Dickinson; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4258">bpo-4258</a>.)</p>
|
||||
</li>
|
||||
<li><p>The <a class="reference internal" href="../c-api/long.html#c.PyLong_AsUnsignedLongLong" title="PyLong_AsUnsignedLongLong"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyLong_AsUnsignedLongLong()</span></code></a> function now handles a negative
|
||||
<em>pylong</em> by raising <a class="reference internal" href="../builtins/exceptions.html#OverflowError" title="OverflowError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">OverflowError</span></code></a> instead of <a class="reference internal" href="../builtins/exceptions.html#TypeError" title="TypeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TypeError</span></code></a>.</p>
|
||||
<p>(Contributed by Mark Dickinson and Lisandro Dalcrin; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=5175">bpo-5175</a>.)</p>
|
||||
</li>
|
||||
<li><p>Deprecated <code class="xref c c-func docutils literal notranslate"><span class="pre">PyNumber_Int()</span></code>. Use <a class="reference internal" href="../c-api/number.html#c.PyNumber_Long" title="PyNumber_Long"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyNumber_Long()</span></code></a> instead.</p>
|
||||
<p>(Contributed by Mark Dickinson; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=4910">bpo-4910</a>.)</p>
|
||||
</li>
|
||||
<li><p>Added a new <a class="reference internal" href="../c-api/conversion.html#c.PyOS_string_to_double" title="PyOS_string_to_double"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyOS_string_to_double()</span></code></a> function to replace the
|
||||
deprecated functions <code class="xref c c-func docutils literal notranslate"><span class="pre">PyOS_ascii_strtod()</span></code> and <code class="xref c c-func docutils literal notranslate"><span class="pre">PyOS_ascii_atof()</span></code>.</p>
|
||||
<p>(Contributed by Mark Dickinson; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=5914">bpo-5914</a>.)</p>
|
||||
</li>
|
||||
<li><p>Added <a class="reference internal" href="../c-api/capsule.html#c.PyCapsule" title="PyCapsule"><code class="xref c c-type docutils literal notranslate"><span class="pre">PyCapsule</span></code></a> as a replacement for the <code class="xref c c-type docutils literal notranslate"><span class="pre">PyCObject</span></code> API.
|
||||
The principal difference is that the new type has a well defined interface
|
||||
for passing typing safety information and a less complicated signature
|
||||
for calling a destructor. The old type had a problematic API and is now
|
||||
deprecated.</p>
|
||||
<p>(Contributed by Larry Hastings; <a class="reference external" href="https://bugs.python.org/issue?@action=redirect&bpo=5630">bpo-5630</a>.)</p>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="porting-to-python-3-1">
|
||||
<h2>Porting to Python 3.1<a class="headerlink" href="#porting-to-python-3-1" title="Link to this heading">¶</a></h2>
|
||||
<p>This section lists previously described changes and other bugfixes
|
||||
that may require changes to your code:</p>
|
||||
<ul>
|
||||
<li><p>The new floating-point string representations can break existing doctests.
|
||||
For example:</p>
|
||||
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="nf">e</span><span class="p">():</span>
|
||||
<span class="w"> </span><span class="sd">'''Compute the base of natural logarithms.</span>
|
||||
|
||||
<span class="sd"> >>> e()</span>
|
||||
<span class="sd"> 2.7182818284590451</span>
|
||||
|
||||
<span class="sd"> '''</span>
|
||||
<span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="mi">1</span><span class="o">/</span><span class="n">math</span><span class="o">.</span><span class="n">factorial</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">reversed</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">30</span><span class="p">)))</span>
|
||||
|
||||
<span class="n">doctest</span><span class="o">.</span><span class="n">testmod</span><span class="p">()</span>
|
||||
|
||||
<span class="o">**********************************************************************</span>
|
||||
<span class="n">Failed</span> <span class="n">example</span><span class="p">:</span>
|
||||
<span class="n">e</span><span class="p">()</span>
|
||||
<span class="n">Expected</span><span class="p">:</span>
|
||||
<span class="mf">2.7182818284590451</span>
|
||||
<span class="n">Got</span><span class="p">:</span>
|
||||
<span class="mf">2.718281828459045</span>
|
||||
<span class="o">**********************************************************************</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</li>
|
||||
<li><p>The automatic name remapping in the pickle module for protocol 2 or lower can
|
||||
make Python 3.1 pickles unreadable in Python 3.0. One solution is to use
|
||||
protocol 3. Another solution is to set the <em>fix_imports</em> option to <code class="docutils literal notranslate"><span class="pre">False</span></code>.
|
||||
See the discussion above for more details.</p></li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<div>
|
||||
<h3><a href="../contents.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">What’s New In Python 3.1</a><ul>
|
||||
<li><a class="reference internal" href="#pep-372-ordered-dictionaries">PEP 372: Ordered Dictionaries</a></li>
|
||||
<li><a class="reference internal" href="#pep-378-format-specifier-for-thousands-separator">PEP 378: Format Specifier for Thousands Separator</a></li>
|
||||
<li><a class="reference internal" href="#other-language-changes">Other Language Changes</a></li>
|
||||
<li><a class="reference internal" href="#new-improved-and-deprecated-modules">New, Improved, and Deprecated Modules</a></li>
|
||||
<li><a class="reference internal" href="#optimizations">Optimizations</a></li>
|
||||
<li><a class="reference internal" href="#idle">IDLE</a></li>
|
||||
<li><a class="reference internal" href="#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li><a class="reference internal" href="#porting-to-python-3-1">Porting to Python 3.1</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="3.2.html"
|
||||
title="previous chapter">What’s New In Python 3.2</a></p>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="3.0.html"
|
||||
title="next chapter">What’s New In Python 3.0</a></p>
|
||||
</div>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const title = document.querySelector('meta[property="og:title"]').content;
|
||||
const elements = document.querySelectorAll('.improvepage');
|
||||
const pageurl = window.location.href.split('?')[0];
|
||||
elements.forEach(element => {
|
||||
const url = new URL(element.href.split('?')[0].replace("-nojs", ""));
|
||||
url.searchParams.set('pagetitle', title);
|
||||
url.searchParams.set('pageurl', pageurl);
|
||||
url.searchParams.set('pagesource', "whatsnew/3.1.rst");
|
||||
element.href = url.toString();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="../bugs.html">Report a bug</a></li>
|
||||
<li><a class="improvepage" href="../improve-page-nojs.html">Improve this page</a></li>
|
||||
<li>
|
||||
<a href="https://github.com/python/cpython/blob/3.15/Doc/whatsnew/3.1.rst?plain=1"
|
||||
rel="nofollow">Show source
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="sidebarbutton" title="Collapse sidebar">
|
||||
<span>«</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related" role="navigation" aria-label="Related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="3.0.html" title="What’s New In Python 3.0"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="3.2.html" title="What’s New In Python 3.2"
|
||||
>previous</a> |</li>
|
||||
|
||||
<li class="root-icon"><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||
<li class="switchers">
|
||||
<div class="language_switcher_placeholder"></div>
|
||||
<div class="version_switcher_placeholder"></div>
|
||||
</li>
|
||||
<li>
|
||||
|
||||
</li>
|
||||
<li id="cpython-language-and-version">
|
||||
<a href="../index.html">3.15.0 Documentation</a> »
|
||||
</li>
|
||||
|
||||
<li class="nav-item nav-item-1"><a href="index.html" >What’s New in Python</a> »</li>
|
||||
<li class="nav-item nav-item-this"><a href="">What’s New In Python 3.1</a></li>
|
||||
<li class="right">
|
||||
|
||||
|
||||
<div class="inline-search" role="search">
|
||||
<form class="inline-search" action="../search.html" method="get">
|
||||
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||||
<input type="submit" value="Go">
|
||||
</form>
|
||||
</div>
|
||||
|
|
||||
</li>
|
||||
<li class="right">
|
||||
<label class="theme-selector-label">
|
||||
Theme
|
||||
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||
<option value="auto" selected>Auto</option>
|
||||
<option value="light">Light</option>
|
||||
<option value="dark">Dark</option>
|
||||
</select>
|
||||
</label> |</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© <a href="../copyright.html">Copyright</a> 2001 Python Software Foundation.
|
||||
<br>
|
||||
This page is licensed under the Python Software Foundation License Version 2.
|
||||
<br>
|
||||
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
|
||||
<br>
|
||||
|
||||
See <a href="/license.html">History and License</a> for more information.<br>
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
The Python Software Foundation is a non-profit corporation.
|
||||
<a href="https://www.python.org/psf/donations/">Please donate.</a>
|
||||
<br>
|
||||
<br>
|
||||
Last updated on Oct 09, 2026 (11:35 UTC).
|
||||
|
||||
<a href="/bugs.html">Found a bug</a>?
|
||||
|
||||
<br>
|
||||
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,933 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en" data-content_root="../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta property="og:title" content="What’s New in Python" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://docs.python.org/3/whatsnew/index.html" />
|
||||
<meta property="og:site_name" content="Python documentation" />
|
||||
<meta property="og:description" content="The “What’s New in Python” series of essays takes tours through the most important changes between major Python versions. They are a “must read” for anyone wishing to stay up-to-date after a new re..." />
|
||||
<meta property="og:image" content="_static/og-image.png" />
|
||||
<meta property="og:image:alt" content="Python documentation" />
|
||||
<meta name="description" content="The “What’s New in Python” series of essays takes tours through the most important changes between major Python versions. They are a “must read” for anyone wishing to stay up-to-date after a new re..." />
|
||||
<meta name="theme-color" content="#3776ab">
|
||||
<meta property="og:image:width" content="200">
|
||||
<meta property="og:image:height" content="200">
|
||||
|
||||
<title>What’s New in Python — Python 3.15.0 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/classic.css?v=234b1a7c" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=48df1187" />
|
||||
<link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=0fc419ee" />
|
||||
|
||||
<script src="../_static/documentation_options.js?v=0fe728b1"></script>
|
||||
<script src="../_static/doctools.js?v=9bcbadda"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
|
||||
<script src="../_static/sidebar.js"></script>
|
||||
|
||||
<link rel="search" type="application/opensearchdescription+xml"
|
||||
title="Search within Python 3.15.0 documentation"
|
||||
href="../_static/opensearch.xml"/>
|
||||
<link rel="author" title="About these documents" href="../about.html" />
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
<link rel="copyright" title="Copyright" href="../copyright.html" />
|
||||
<link rel="next" title="What’s new in Python 3.15" href="3.15.html" />
|
||||
<link rel="prev" title="Python Documentation contents" href="../contents.html" />
|
||||
|
||||
|
||||
<link rel="canonical" href="https://docs.python.org/3/whatsnew/index.html">
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
@media only screen {
|
||||
table.full-width-table {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
|
||||
<link rel="shortcut icon" type="image/png" href="../_static/py.svg">
|
||||
<script type="text/javascript" src="../_static/copybutton.js"></script>
|
||||
<script type="text/javascript" src="../_static/menu.js"></script>
|
||||
<script type="text/javascript" src="../_static/search-focus.js"></script>
|
||||
<script type="text/javascript" src="../_static/themetoggle.js"></script>
|
||||
<script type="text/javascript" src="../_static/rtd_switcher.js"></script>
|
||||
<meta name="readthedocs-addons-api-version" content="1">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="mobile-nav">
|
||||
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
|
||||
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">
|
||||
<nav class="nav-content" role="navigation">
|
||||
<label for="menuToggler" class="toggler__label">
|
||||
<span></span>
|
||||
</label>
|
||||
<span class="nav-items-wrapper">
|
||||
<a href="https://www.python.org/" class="nav-logo">
|
||||
<img src="../_static/py.svg" alt="Python logo">
|
||||
</a>
|
||||
<span class="version_switcher_placeholder"></span>
|
||||
<form role="search" class="search" action="../search.html" method="get">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
|
||||
<path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
|
||||
</svg>
|
||||
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q">
|
||||
<input type="submit" value="Go">
|
||||
</form>
|
||||
</span>
|
||||
</nav>
|
||||
<div class="menu-wrapper">
|
||||
<nav class="menu" role="navigation" aria-label="main navigation">
|
||||
<div class="language_switcher_placeholder"></div>
|
||||
|
||||
<label class="theme-selector-label">
|
||||
Theme
|
||||
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||
<option value="auto" selected>Auto</option>
|
||||
<option value="light">Light</option>
|
||||
<option value="dark">Dark</option>
|
||||
</select>
|
||||
</label>
|
||||
<div>
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="../contents.html"
|
||||
title="previous chapter">Python Documentation contents</a></p>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="3.15.html"
|
||||
title="next chapter">What’s new in Python 3.15</a></p>
|
||||
</div>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const title = document.querySelector('meta[property="og:title"]').content;
|
||||
const elements = document.querySelectorAll('.improvepage');
|
||||
const pageurl = window.location.href.split('?')[0];
|
||||
elements.forEach(element => {
|
||||
const url = new URL(element.href.split('?')[0].replace("-nojs", ""));
|
||||
url.searchParams.set('pagetitle', title);
|
||||
url.searchParams.set('pageurl', pageurl);
|
||||
url.searchParams.set('pagesource', "whatsnew/index.rst");
|
||||
element.href = url.toString();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="../bugs.html">Report a bug</a></li>
|
||||
<li><a class="improvepage" href="../improve-page-nojs.html">Improve this page</a></li>
|
||||
<li>
|
||||
<a href="https://github.com/python/cpython/blob/3.15/Doc/whatsnew/index.rst?plain=1"
|
||||
rel="nofollow">Show source
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="related" role="navigation" aria-label="Related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../genindex.html" title="General Index"
|
||||
accesskey="I">index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="3.15.html" title="What’s new in Python 3.15"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="../contents.html" title="Python Documentation contents"
|
||||
accesskey="P">previous</a> |</li>
|
||||
|
||||
<li class="root-icon"><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||
<li class="switchers">
|
||||
<div class="language_switcher_placeholder"></div>
|
||||
<div class="version_switcher_placeholder"></div>
|
||||
</li>
|
||||
<li>
|
||||
|
||||
</li>
|
||||
<li id="cpython-language-and-version">
|
||||
<a href="../index.html">3.15.0 Documentation</a> »
|
||||
</li>
|
||||
|
||||
<li class="nav-item nav-item-this"><a href="">What’s New in Python</a></li>
|
||||
<li class="right">
|
||||
|
||||
|
||||
<div class="inline-search" role="search">
|
||||
<form class="inline-search" action="../search.html" method="get">
|
||||
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||||
<input type="submit" value="Go">
|
||||
</form>
|
||||
</div>
|
||||
|
|
||||
</li>
|
||||
<li class="right">
|
||||
<label class="theme-selector-label">
|
||||
Theme
|
||||
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||
<option value="auto" selected>Auto</option>
|
||||
<option value="light">Light</option>
|
||||
<option value="dark">Dark</option>
|
||||
</select>
|
||||
</label> |</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body" role="main">
|
||||
|
||||
<section id="what-s-new-in-python">
|
||||
<span id="whatsnew-index"></span><h1>What’s New in Python<a class="headerlink" href="#what-s-new-in-python" title="Link to this heading">¶</a></h1>
|
||||
<p>The “What’s New in Python” series of essays takes tours through the most
|
||||
important changes between major Python versions. They are a “must read” for
|
||||
anyone wishing to stay up-to-date after a new release.</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.15.html">What’s new in Python 3.15</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#summary-release-highlights">Summary – Release highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#new-features">New features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#other-language-changes">Other language changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#default-interactive-shell">Default interactive shell</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#new-modules">New modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#improved-modules">Improved modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#removed">Removed</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#deprecated">Deprecated</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#c-api-changes">C API changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#build-changes">Build changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.15.html#porting-to-python-3-15">Porting to Python 3.15</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.14.html">What’s new in Python 3.14</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#summary-release-highlights">Summary – Release highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#new-features">New features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#other-language-changes">Other language changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#new-modules">New modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#improved-modules">Improved modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#removed">Removed</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#deprecated">Deprecated</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#cpython-bytecode-changes">CPython bytecode changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#c-api-changes">C API changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#build-changes">Build changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#porting-to-python-3-14">Porting to Python 3.14</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.14.html#notable-changes-in-3-14-5">Notable changes in 3.14.5</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.13.html">What’s New In Python 3.13</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#summary-release-highlights">Summary – Release Highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#new-features">New Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#new-modules">New Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#improved-modules">Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#removed-modules-and-apis">Removed Modules And APIs</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#new-deprecations">New Deprecations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#cpython-bytecode-changes">CPython Bytecode Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#c-api-changes">C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#build-changes">Build Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#porting-to-python-3-13">Porting to Python 3.13</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.13.html#regression-test-changes">Regression Test Changes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.12.html">What’s New In Python 3.12</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#summary-release-highlights">Summary – Release highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#new-features">New Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#new-features-related-to-type-hints">New Features Related to Type Hints</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#new-modules">New Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#improved-modules">Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#cpython-bytecode-changes">CPython bytecode changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#demos-and-tools">Demos and Tools</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#deprecated">Deprecated</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#removed">Removed</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#porting-to-python-3-12">Porting to Python 3.12</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#build-changes">Build Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.12.html#c-api-changes">C API Changes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.11.html">What’s New In Python 3.11</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#summary-release-highlights">Summary – Release highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#new-features">New Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#new-features-related-to-type-hints">New Features Related to Type Hints</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#other-cpython-implementation-changes">Other CPython Implementation Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#new-modules">New Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#improved-modules">Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#faster-cpython">Faster CPython</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#cpython-bytecode-changes">CPython bytecode changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#deprecated">Deprecated</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#pending-removal-in-python-3-12">Pending Removal in Python 3.12</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#removed">Removed</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#porting-to-python-3-11">Porting to Python 3.11</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#build-changes">Build Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#c-api-changes">C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#notable-changes-in-3-11-4">Notable changes in 3.11.4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.11.html#notable-changes-in-3-11-5">Notable changes in 3.11.5</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.10.html">What’s New In Python 3.10</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#summary-release-highlights">Summary – Release highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#new-features">New Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#new-features-related-to-type-hints">New Features Related to Type Hints</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#new-modules">New Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#improved-modules">Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#deprecated">Deprecated</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#removed">Removed</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#porting-to-python-3-10">Porting to Python 3.10</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#cpython-bytecode-changes">CPython bytecode changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#build-changes">Build Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#c-api-changes">C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#notable-security-feature-in-3-10-7">Notable security feature in 3.10.7</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#notable-security-feature-in-3-10-8">Notable security feature in 3.10.8</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.10.html#notable-changes-in-3-10-12">Notable changes in 3.10.12</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.9.html">What’s New In Python 3.9</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#summary-release-highlights">Summary – Release highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#you-should-check-for-deprecationwarning-in-your-code">You should check for DeprecationWarning in your code</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#new-features">New Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#new-modules">New Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#improved-modules">Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#deprecated">Deprecated</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#removed">Removed</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#porting-to-python-3-9">Porting to Python 3.9</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#build-changes">Build Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#c-api-changes">C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#notable-changes-in-python-3-9-1">Notable changes in Python 3.9.1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#notable-changes-in-python-3-9-2">Notable changes in Python 3.9.2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#notable-changes-in-python-3-9-3">Notable changes in Python 3.9.3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#notable-changes-in-python-3-9-5">Notable changes in Python 3.9.5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#notable-security-feature-in-3-9-14">Notable security feature in 3.9.14</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.9.html#notable-changes-in-3-9-17">Notable changes in 3.9.17</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.8.html">What’s New In Python 3.8</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#summary-release-highlights">Summary – Release highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#new-features">New Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#new-modules">New Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#improved-modules">Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#deprecated">Deprecated</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#api-and-feature-removals">API and Feature Removals</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#porting-to-python-3-8">Porting to Python 3.8</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#notable-changes-in-python-3-8-1">Notable changes in Python 3.8.1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#notable-changes-in-python-3-8-2">Notable changes in Python 3.8.2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#notable-changes-in-python-3-8-3">Notable changes in Python 3.8.3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#notable-changes-in-python-3-8-8">Notable changes in Python 3.8.8</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#notable-changes-in-python-3-8-9">Notable changes in Python 3.8.9</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#notable-changes-in-python-3-8-10">Notable changes in Python 3.8.10</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#id1">Notable changes in Python 3.8.10</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#notable-changes-in-python-3-8-12">Notable changes in Python 3.8.12</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#notable-security-feature-in-3-8-14">Notable security feature in 3.8.14</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.8.html#notable-changes-in-3-8-17">Notable changes in 3.8.17</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.7.html">What’s New In Python 3.7</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#summary-release-highlights">Summary – Release Highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#new-features">New Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#new-modules">New Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#improved-modules">Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#c-api-changes">C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#build-changes">Build Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#other-cpython-implementation-changes">Other CPython Implementation Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#deprecated-python-behavior">Deprecated Python Behavior</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#deprecated-python-modules-functions-and-methods">Deprecated Python modules, functions and methods</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#deprecated-functions-and-types-of-the-c-api">Deprecated functions and types of the C API</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#platform-support-removals">Platform Support Removals</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#api-and-feature-removals">API and Feature Removals</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#module-removals">Module Removals</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#windows-only-changes">Windows-only Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#porting-to-python-3-7">Porting to Python 3.7</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#notable-changes-in-python-3-7-1">Notable changes in Python 3.7.1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#notable-changes-in-python-3-7-2">Notable changes in Python 3.7.2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#notable-changes-in-python-3-7-6">Notable changes in Python 3.7.6</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#notable-changes-in-python-3-7-10">Notable changes in Python 3.7.10</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#notable-changes-in-python-3-7-11">Notable changes in Python 3.7.11</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.7.html#notable-security-feature-in-3-7-14">Notable security feature in 3.7.14</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.6.html">What’s New In Python 3.6</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#summary-release-highlights">Summary – Release highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#new-features">New Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#new-modules">New Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#improved-modules">Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#other-improvements">Other Improvements</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#deprecated">Deprecated</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#removed">Removed</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#porting-to-python-3-6">Porting to Python 3.6</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#notable-changes-in-python-3-6-2">Notable changes in Python 3.6.2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#notable-changes-in-python-3-6-4">Notable changes in Python 3.6.4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#notable-changes-in-python-3-6-5">Notable changes in Python 3.6.5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#notable-changes-in-python-3-6-7">Notable changes in Python 3.6.7</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#notable-changes-in-python-3-6-10">Notable changes in Python 3.6.10</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#notable-changes-in-python-3-6-13">Notable changes in Python 3.6.13</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.6.html#notable-changes-in-python-3-6-14">Notable changes in Python 3.6.14</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.5.html">What’s New In Python 3.5</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#summary-release-highlights">Summary – Release highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#new-features">New Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#new-modules">New Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#improved-modules">Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#other-module-level-changes">Other module-level changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#deprecated">Deprecated</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#removed">Removed</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#porting-to-python-3-5">Porting to Python 3.5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.5.html#notable-changes-in-python-3-5-4">Notable changes in Python 3.5.4</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.4.html">What’s New In Python 3.4</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.4.html#summary-release-highlights">Summary – Release Highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.4.html#new-features">New Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.4.html#new-modules">New Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.4.html#improved-modules">Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.4.html#cpython-implementation-changes">CPython Implementation Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.4.html#deprecated">Deprecated</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.4.html#removed">Removed</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.4.html#porting-to-python-3-4">Porting to Python 3.4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.4.html#changed-in-3-4-3">Changed in 3.4.3</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.3.html">What’s New In Python 3.3</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#summary-release-highlights">Summary – Release highlights</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-405-virtual-environments">PEP 405: Virtual Environments</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-420-implicit-namespace-packages">PEP 420: Implicit Namespace Packages</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-3118-new-memoryview-implementation-and-buffer-protocol-documentation">PEP 3118: New memoryview implementation and buffer protocol documentation</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-393-flexible-string-representation">PEP 393: Flexible String Representation</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-397-python-launcher-for-windows">PEP 397: Python Launcher for Windows</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-3151-reworking-the-os-and-io-exception-hierarchy">PEP 3151: Reworking the OS and IO exception hierarchy</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-380-syntax-for-delegating-to-a-subgenerator">PEP 380: Syntax for Delegating to a Subgenerator</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-409-suppressing-exception-context">PEP 409: Suppressing exception context</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-414-explicit-unicode-literals">PEP 414: Explicit Unicode literals</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-3155-qualified-name-for-classes-and-functions">PEP 3155: Qualified name for classes and functions</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-412-key-sharing-dictionary">PEP 412: Key-Sharing Dictionary</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-362-function-signature-object">PEP 362: Function Signature Object</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#pep-421-adding-sys-implementation">PEP 421: Adding sys.implementation</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#using-importlib-as-the-implementation-of-import">Using importlib as the Implementation of Import</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#a-finer-grained-import-lock">A Finer-Grained Import Lock</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#builtin-functions-and-types">Builtin functions and types</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#new-modules">New Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#improved-modules">Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#deprecated">Deprecated</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.3.html#porting-to-python-3-3">Porting to Python 3.3</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.2.html">What’s New In Python 3.2</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#pep-384-defining-a-stable-abi">PEP 384: Defining a Stable ABI</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#pep-389-argparse-command-line-parsing-module">PEP 389: Argparse Command Line Parsing Module</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#pep-391-dictionary-based-configuration-for-logging">PEP 391: Dictionary Based Configuration for Logging</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#pep-3148-the-concurrent-futures-module">PEP 3148: The <code class="docutils literal notranslate"><span class="pre">concurrent.futures</span></code> module</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#pep-3147-pyc-repository-directories">PEP 3147: PYC Repository Directories</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#pep-3149-abi-version-tagged-so-files">PEP 3149: ABI Version Tagged .so Files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#pep-3333-python-web-server-gateway-interface-v1-0-1">PEP 3333: Python Web Server Gateway Interface v1.0.1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#new-improved-and-deprecated-modules">New, Improved, and Deprecated Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#multi-threading">Multi-threading</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#unicode">Unicode</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#codecs">Codecs</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#documentation">Documentation</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#idle">IDLE</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#code-repository">Code Repository</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.2.html#porting-to-python-3-2">Porting to Python 3.2</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.1.html">What’s New In Python 3.1</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.1.html#pep-372-ordered-dictionaries">PEP 372: Ordered Dictionaries</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.1.html#pep-378-format-specifier-for-thousands-separator">PEP 378: Format Specifier for Thousands Separator</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.1.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.1.html#new-improved-and-deprecated-modules">New, Improved, and Deprecated Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.1.html#optimizations">Optimizations</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.1.html#idle">IDLE</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.1.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.1.html#porting-to-python-3-1">Porting to Python 3.1</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="3.0.html">What’s New In Python 3.0</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.0.html#common-stumbling-blocks">Common Stumbling Blocks</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.0.html#overview-of-syntax-changes">Overview Of Syntax Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.0.html#changes-already-present-in-python-2-6">Changes Already Present In Python 2.6</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.0.html#library-changes">Library Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.0.html#pep-3101-a-new-approach-to-string-formatting"><strong>PEP 3101</strong>: A New Approach To String Formatting</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.0.html#changes-to-exceptions">Changes To Exceptions</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.0.html#miscellaneous-other-changes">Miscellaneous Other Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.0.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.0.html#performance">Performance</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="3.0.html#porting-to-python-3-0">Porting To Python 3.0</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="2.7.html">What’s New in Python 2.7</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#the-future-for-python-2-x">The Future for Python 2.x</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#changes-to-the-handling-of-deprecation-warnings">Changes to the Handling of Deprecation Warnings</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#python-3-1-features">Python 3.1 Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#pep-372-adding-an-ordered-dictionary-to-collections">PEP 372: Adding an Ordered Dictionary to collections</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#pep-378-format-specifier-for-thousands-separator">PEP 378: Format Specifier for Thousands Separator</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#pep-389-the-argparse-module-for-parsing-command-lines">PEP 389: The argparse Module for Parsing Command Lines</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#pep-391-dictionary-based-configuration-for-logging">PEP 391: Dictionary-Based Configuration For Logging</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#pep-3106-dictionary-views">PEP 3106: Dictionary Views</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#pep-3137-the-memoryview-object">PEP 3137: The memoryview Object</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#new-and-improved-modules">New and Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#other-changes-and-fixes">Other Changes and Fixes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#porting-to-python-2-7">Porting to Python 2.7</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#new-features-added-to-python-2-7-maintenance-releases">New Features Added to Python 2.7 Maintenance Releases</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.7.html#acknowledgements">Acknowledgements</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="2.6.html">What’s New in Python 2.6</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#python-3-0">Python 3.0</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#changes-to-the-development-process">Changes to the Development Process</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-343-the-with-statement">PEP 343: The ‘with’ statement</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-366-explicit-relative-imports-from-a-main-module">PEP 366: Explicit Relative Imports From a Main Module</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-370-per-user-site-packages-directory">PEP 370: Per-user <code class="docutils literal notranslate"><span class="pre">site-packages</span></code> Directory</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-371-the-multiprocessing-package">PEP 371: The <code class="docutils literal notranslate"><span class="pre">multiprocessing</span></code> Package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-3101-advanced-string-formatting">PEP 3101: Advanced String Formatting</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-3105-print-as-a-function">PEP 3105: <code class="docutils literal notranslate"><span class="pre">print</span></code> As a Function</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-3110-exception-handling-changes">PEP 3110: Exception-Handling Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-3112-byte-literals">PEP 3112: Byte Literals</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-3116-new-i-o-library">PEP 3116: New I/O Library</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-3118-revised-buffer-protocol">PEP 3118: Revised Buffer Protocol</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-3119-abstract-base-classes">PEP 3119: Abstract Base Classes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-3127-integer-literal-support-and-syntax">PEP 3127: Integer Literal Support and Syntax</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-3129-class-decorators">PEP 3129: Class Decorators</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#pep-3141-a-type-hierarchy-for-numbers">PEP 3141: A Type Hierarchy for Numbers</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#new-and-improved-modules">New and Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#deprecations-and-removals">Deprecations and Removals</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#porting-to-python-2-6">Porting to Python 2.6</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.6.html#acknowledgements">Acknowledgements</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="2.5.html">What’s New in Python 2.5</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#pep-308-conditional-expressions">PEP 308: Conditional Expressions</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#pep-309-partial-function-application">PEP 309: Partial Function Application</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#pep-314-metadata-for-python-software-packages-v1-1">PEP 314: Metadata for Python Software Packages v1.1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#pep-328-absolute-and-relative-imports">PEP 328: Absolute and Relative Imports</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#pep-338-executing-modules-as-scripts">PEP 338: Executing Modules as Scripts</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#pep-341-unified-try-except-finally">PEP 341: Unified try/except/finally</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#pep-342-new-generator-features">PEP 342: New Generator Features</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#pep-343-the-with-statement">PEP 343: The ‘with’ statement</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#pep-352-exceptions-as-new-style-classes">PEP 352: Exceptions as New-Style Classes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#pep-353-using-ssize-t-as-the-index-type">PEP 353: Using ssize_t as the index type</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#pep-357-the-index-method">PEP 357: The ‘__index__’ method</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#new-improved-and-removed-modules">New, Improved, and Removed Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#porting-to-python-2-5">Porting to Python 2.5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.5.html#acknowledgements">Acknowledgements</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="2.4.html">What’s New in Python 2.4</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#pep-218-built-in-set-objects">PEP 218: Built-In Set Objects</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#pep-237-unifying-long-integers-and-integers">PEP 237: Unifying Long Integers and Integers</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#pep-289-generator-expressions">PEP 289: Generator Expressions</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#pep-292-simpler-string-substitutions">PEP 292: Simpler String Substitutions</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#pep-318-decorators-for-functions-and-methods">PEP 318: Decorators for Functions and Methods</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#pep-322-reverse-iteration">PEP 322: Reverse Iteration</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#pep-324-new-subprocess-module">PEP 324: New subprocess Module</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#pep-327-decimal-data-type">PEP 327: Decimal Data Type</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#pep-328-multi-line-imports">PEP 328: Multi-line Imports</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#pep-331-locale-independent-float-string-conversions">PEP 331: Locale-Independent Float/String Conversions</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#new-improved-and-deprecated-modules">New, Improved, and Deprecated Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#porting-to-python-2-4">Porting to Python 2.4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.4.html#acknowledgements">Acknowledgements</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="2.3.html">What’s New in Python 2.3</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-218-a-standard-set-datatype">PEP 218: A Standard Set Datatype</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-255-simple-generators">PEP 255: Simple Generators</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-263-source-code-encodings">PEP 263: Source Code Encodings</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-273-importing-modules-from-zip-archives">PEP 273: Importing Modules from ZIP Archives</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-277-unicode-file-name-support-for-windows-nt">PEP 277: Unicode file name support for Windows NT</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-278-universal-newline-support">PEP 278: Universal Newline Support</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-279-enumerate">PEP 279: enumerate()</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-282-the-logging-package">PEP 282: The logging Package</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-285-a-boolean-type">PEP 285: A Boolean Type</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-293-codec-error-handling-callbacks">PEP 293: Codec Error Handling Callbacks</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-301-package-index-and-metadata-for-distutils">PEP 301: Package Index and Metadata for Distutils</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-302-new-import-hooks">PEP 302: New Import Hooks</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-305-comma-separated-files">PEP 305: Comma-separated Files</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pep-307-pickle-enhancements">PEP 307: Pickle Enhancements</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#extended-slices">Extended Slices</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#other-language-changes">Other Language Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#new-improved-and-deprecated-modules">New, Improved, and Deprecated Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#pymalloc-a-specialized-object-allocator">Pymalloc: A Specialized Object Allocator</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#build-and-c-api-changes">Build and C API Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#other-changes-and-fixes">Other Changes and Fixes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#porting-to-python-2-3">Porting to Python 2.3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.3.html#acknowledgements">Acknowledgements</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="2.2.html">What’s New in Python 2.2</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#introduction">Introduction</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#peps-252-and-253-type-and-class-changes">PEPs 252 and 253: Type and Class Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#pep-234-iterators">PEP 234: Iterators</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#pep-255-simple-generators">PEP 255: Simple Generators</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#pep-237-unifying-long-integers-and-integers">PEP 237: Unifying Long Integers and Integers</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#pep-238-changing-the-division-operator">PEP 238: Changing the Division Operator</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#unicode-changes">Unicode Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#pep-227-nested-scopes">PEP 227: Nested Scopes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#new-and-improved-modules">New and Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#interpreter-changes-and-fixes">Interpreter Changes and Fixes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#other-changes-and-fixes">Other Changes and Fixes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.2.html#acknowledgements">Acknowledgements</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="2.1.html">What’s New in Python 2.1</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#introduction">Introduction</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#pep-227-nested-scopes">PEP 227: Nested Scopes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#pep-236-future-directives">PEP 236: __future__ Directives</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#pep-207-rich-comparisons">PEP 207: Rich Comparisons</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#pep-230-warning-framework">PEP 230: Warning Framework</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#pep-229-new-build-system">PEP 229: New Build System</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#pep-205-weak-references">PEP 205: Weak References</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#pep-232-function-attributes">PEP 232: Function Attributes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#pep-235-importing-modules-on-case-insensitive-platforms">PEP 235: Importing Modules on Case-Insensitive Platforms</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#pep-217-interactive-display-hook">PEP 217: Interactive Display Hook</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#pep-208-new-coercion-model">PEP 208: New Coercion Model</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#pep-241-metadata-in-python-packages">PEP 241: Metadata in Python Packages</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#new-and-improved-modules">New and Improved Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#other-changes-and-fixes">Other Changes and Fixes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.1.html#acknowledgements">Acknowledgements</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="2.0.html">What’s New in Python 2.0</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#introduction">Introduction</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#what-about-python-1-6">What About Python 1.6?</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#new-development-process">New Development Process</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#unicode">Unicode</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#list-comprehensions">List Comprehensions</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#augmented-assignment">Augmented Assignment</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#string-methods">String Methods</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#garbage-collection-of-cycles">Garbage Collection of Cycles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#other-core-changes">Other Core Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#porting-to-2-0">Porting to 2.0</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#extending-embedding-changes">Extending/Embedding Changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#distutils-making-modules-easy-to-install">Distutils: Making Modules Easy to Install</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#xml-modules">XML Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#module-changes">Module changes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#new-modules">New modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#idle-improvements">IDLE Improvements</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#deleted-and-deprecated-modules">Deleted and Deprecated Modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="2.0.html#acknowledgements">Acknowledgements</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<p>The “Changelog” is an HTML version of the <a class="extlink-pypi reference external" href="https://pypi.org/project/blurb/">file built</a>
|
||||
from the contents of the
|
||||
<a class="extlink-source reference external" href="https://github.com/python/cpython/tree/3.15/Misc/NEWS.d">Misc/NEWS.d</a> directory tree, which contains <em>all</em> nontrivial changes
|
||||
to Python for the current version.</p>
|
||||
<div class="toctree-wrapper compound">
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-final">Python 3.15.0 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-release-candidate-3">Python 3.15.0 release candidate 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-release-candidate-2">Python 3.15.0 release candidate 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-release-candidate-1">Python 3.15.0 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-beta-4">Python 3.15.0 beta 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-beta-3">Python 3.15.0 beta 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-beta-2">Python 3.15.0 beta 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-beta-1">Python 3.15.0 beta 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-alpha-8">Python 3.15.0 alpha 8</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-alpha-7">Python 3.15.0 alpha 7</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-alpha-6">Python 3.15.0 alpha 6</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-alpha-5">Python 3.15.0 alpha 5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-alpha-4">Python 3.15.0 alpha 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-alpha-3">Python 3.15.0 alpha 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-alpha-2">Python 3.15.0 alpha 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-15-0-alpha-1">Python 3.15.0 alpha 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-14-0-beta-1">Python 3.14.0 beta 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-14-0-alpha-7">Python 3.14.0 alpha 7</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-14-0-alpha-6">Python 3.14.0 alpha 6</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-14-0-alpha-5">Python 3.14.0 alpha 5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-14-0-alpha-4">Python 3.14.0 alpha 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-14-0-alpha-3">Python 3.14.0 alpha 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-14-0-alpha-2">Python 3.14.0 alpha 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-14-0-alpha-1">Python 3.14.0 alpha 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-13-0-beta-1">Python 3.13.0 beta 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-13-0-alpha-6">Python 3.13.0 alpha 6</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-13-0-alpha-5">Python 3.13.0 alpha 5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-13-0-alpha-4">Python 3.13.0 alpha 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-13-0-alpha-3">Python 3.13.0 alpha 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-13-0-alpha-2">Python 3.13.0 alpha 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-13-0-alpha-1">Python 3.13.0 alpha 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-12-0-beta-1">Python 3.12.0 beta 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-12-0-alpha-7">Python 3.12.0 alpha 7</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-12-0-alpha-6">Python 3.12.0 alpha 6</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-12-0-alpha-5">Python 3.12.0 alpha 5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-12-0-alpha-4">Python 3.12.0 alpha 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-12-0-alpha-3">Python 3.12.0 alpha 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-12-0-alpha-2">Python 3.12.0 alpha 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-12-0-alpha-1">Python 3.12.0 alpha 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-11-0-beta-1">Python 3.11.0 beta 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-11-0-alpha-7">Python 3.11.0 alpha 7</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-11-0-alpha-6">Python 3.11.0 alpha 6</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-11-0-alpha-5">Python 3.11.0 alpha 5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-11-0-alpha-4">Python 3.11.0 alpha 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-11-0-alpha-3">Python 3.11.0 alpha 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-11-0-alpha-2">Python 3.11.0 alpha 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-11-0-alpha-1">Python 3.11.0 alpha 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-10-0-beta-1">Python 3.10.0 beta 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-10-0-alpha-7">Python 3.10.0 alpha 7</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-10-0-alpha-6">Python 3.10.0 alpha 6</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-10-0-alpha-5">Python 3.10.0 alpha 5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-10-0-alpha-4">Python 3.10.0 alpha 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-10-0-alpha-3">Python 3.10.0 alpha 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-10-0-alpha-2">Python 3.10.0 alpha 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-10-0-alpha-1">Python 3.10.0 alpha 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-9-0-beta-1">Python 3.9.0 beta 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-9-0-alpha-6">Python 3.9.0 alpha 6</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-9-0-alpha-5">Python 3.9.0 alpha 5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-9-0-alpha-4">Python 3.9.0 alpha 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-9-0-alpha-3">Python 3.9.0 alpha 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-9-0-alpha-2">Python 3.9.0 alpha 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-9-0-alpha-1">Python 3.9.0 alpha 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-8-0-beta-1">Python 3.8.0 beta 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-8-0-alpha-4">Python 3.8.0 alpha 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-8-0-alpha-3">Python 3.8.0 alpha 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-8-0-alpha-2">Python 3.8.0 alpha 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-8-0-alpha-1">Python 3.8.0 alpha 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-7-0-final">Python 3.7.0 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-7-0-release-candidate-1">Python 3.7.0 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-7-0-beta-5">Python 3.7.0 beta 5</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-7-0-beta-4">Python 3.7.0 beta 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-7-0-beta-3">Python 3.7.0 beta 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-7-0-beta-2">Python 3.7.0 beta 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-7-0-beta-1">Python 3.7.0 beta 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-7-0-alpha-4">Python 3.7.0 alpha 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-7-0-alpha-3">Python 3.7.0 alpha 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-7-0-alpha-2">Python 3.7.0 alpha 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-7-0-alpha-1">Python 3.7.0 alpha 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-6-final">Python 3.6.6 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-6-release-candidate-1">Python 3.6.6 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-5-final">Python 3.6.5 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-5-release-candidate-1">Python 3.6.5 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-4-final">Python 3.6.4 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-4-release-candidate-1">Python 3.6.4 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-3-final">Python 3.6.3 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-3-release-candidate-1">Python 3.6.3 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-2-final">Python 3.6.2 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-2-release-candidate-2">Python 3.6.2 release candidate 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-2-release-candidate-1">Python 3.6.2 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-1-final">Python 3.6.1 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-1-release-candidate-1">Python 3.6.1 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-0-final">Python 3.6.0 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-0-release-candidate-2">Python 3.6.0 release candidate 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-0-release-candidate-1">Python 3.6.0 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-0-beta-4">Python 3.6.0 beta 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-0-beta-3">Python 3.6.0 beta 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-0-beta-2">Python 3.6.0 beta 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-0-beta-1">Python 3.6.0 beta 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-0-alpha-4">Python 3.6.0 alpha 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-0-alpha-3">Python 3.6.0 alpha 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-0-alpha-2">Python 3.6.0 alpha 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-6-0-alpha-1">Python 3.6.0 alpha 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-5-final">Python 3.5.5 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-5-release-candidate-1">Python 3.5.5 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-4-final">Python 3.5.4 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-4-release-candidate-1">Python 3.5.4 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-3-final">Python 3.5.3 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-3-release-candidate-1">Python 3.5.3 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-2-final">Python 3.5.2 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-2-release-candidate-1">Python 3.5.2 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-1-final">Python 3.5.1 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-1-release-candidate-1">Python 3.5.1 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-final">Python 3.5.0 final</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-release-candidate-4">Python 3.5.0 release candidate 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-release-candidate-3">Python 3.5.0 release candidate 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-release-candidate-2">Python 3.5.0 release candidate 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-release-candidate-1">Python 3.5.0 release candidate 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-beta-4">Python 3.5.0 beta 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-beta-3">Python 3.5.0 beta 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-beta-2">Python 3.5.0 beta 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-beta-1">Python 3.5.0 beta 1</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-alpha-4">Python 3.5.0 alpha 4</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-alpha-3">Python 3.5.0 alpha 3</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-alpha-2">Python 3.5.0 alpha 2</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="changelog.html#python-3-5-0-alpha-1">Python 3.5.0 alpha 1</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<div>
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="../contents.html"
|
||||
title="previous chapter">Python Documentation contents</a></p>
|
||||
</div>
|
||||
<div>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="3.15.html"
|
||||
title="next chapter">What’s new in Python 3.15</a></p>
|
||||
</div>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const title = document.querySelector('meta[property="og:title"]').content;
|
||||
const elements = document.querySelectorAll('.improvepage');
|
||||
const pageurl = window.location.href.split('?')[0];
|
||||
elements.forEach(element => {
|
||||
const url = new URL(element.href.split('?')[0].replace("-nojs", ""));
|
||||
url.searchParams.set('pagetitle', title);
|
||||
url.searchParams.set('pageurl', pageurl);
|
||||
url.searchParams.set('pagesource', "whatsnew/index.rst");
|
||||
element.href = url.toString();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="../bugs.html">Report a bug</a></li>
|
||||
<li><a class="improvepage" href="../improve-page-nojs.html">Improve this page</a></li>
|
||||
<li>
|
||||
<a href="https://github.com/python/cpython/blob/3.15/Doc/whatsnew/index.rst?plain=1"
|
||||
rel="nofollow">Show source
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="sidebarbutton" title="Collapse sidebar">
|
||||
<span>«</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="clearer"></div>
|
||||
</div>
|
||||
<div class="related" role="navigation" aria-label="Related">
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<li class="right" style="margin-right: 10px">
|
||||
<a href="../genindex.html" title="General Index"
|
||||
>index</a></li>
|
||||
<li class="right" >
|
||||
<a href="../py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="3.15.html" title="What’s new in Python 3.15"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="../contents.html" title="Python Documentation contents"
|
||||
>previous</a> |</li>
|
||||
|
||||
<li class="root-icon"><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
|
||||
<li><a href="https://www.python.org/">Python</a> »</li>
|
||||
<li class="switchers">
|
||||
<div class="language_switcher_placeholder"></div>
|
||||
<div class="version_switcher_placeholder"></div>
|
||||
</li>
|
||||
<li>
|
||||
|
||||
</li>
|
||||
<li id="cpython-language-and-version">
|
||||
<a href="../index.html">3.15.0 Documentation</a> »
|
||||
</li>
|
||||
|
||||
<li class="nav-item nav-item-this"><a href="">What’s New in Python</a></li>
|
||||
<li class="right">
|
||||
|
||||
|
||||
<div class="inline-search" role="search">
|
||||
<form class="inline-search" action="../search.html" method="get">
|
||||
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
|
||||
<input type="submit" value="Go">
|
||||
</form>
|
||||
</div>
|
||||
|
|
||||
</li>
|
||||
<li class="right">
|
||||
<label class="theme-selector-label">
|
||||
Theme
|
||||
<select class="theme-selector" oninput="activateTheme(this.value)">
|
||||
<option value="auto" selected>Auto</option>
|
||||
<option value="light">Light</option>
|
||||
<option value="dark">Dark</option>
|
||||
</select>
|
||||
</label> |</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© <a href="../copyright.html">Copyright</a> 2001 Python Software Foundation.
|
||||
<br>
|
||||
This page is licensed under the Python Software Foundation License Version 2.
|
||||
<br>
|
||||
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
|
||||
<br>
|
||||
|
||||
See <a href="/license.html">History and License</a> for more information.<br>
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
The Python Software Foundation is a non-profit corporation.
|
||||
<a href="https://www.python.org/psf/donations/">Please donate.</a>
|
||||
<br>
|
||||
<br>
|
||||
Last updated on Oct 09, 2026 (11:35 UTC).
|
||||
|
||||
<a href="/bugs.html">Found a bug</a>?
|
||||
|
||||
<br>
|
||||
|
||||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user