Table of Contents
Todaypython tutorial column introduces Python 3.9. " >Todaypython tutorial column introduces Python 3.9.
1. Dictionary (Merge & Update) Operator
2. Remove string prefixes and suffixes
3. zoneinfo time zone module
4. Built-in collection types are used in type hints
5. Topological sorting
6. Least Common Multiple (LCM)
7. A more powerful Python parser
Home Backend Development Python Tutorial Finally Introducing Python 3.9

Finally Introducing Python 3.9

Nov 19, 2020 pm 05:21 PM

Todaypython tutorial column introduces Python 3.9.

Finally Introducing Python 3.9

Python 3.9 is here!

Over the past year, developers from all over the world have been working on improvements to Python 3.8. Python 3.9 beta versions have been around for a while, with the first official version released on October 5, 2020.

Every Python version contains newly developed and improved features, and Python 3.9 is no exception.

Python 3.9,来了

[python learning exchange group]

The following introduces several major new features of Python 3.9.

1. Dictionary (Merge & Update) Operator

Dictionary is one of the most basic data structures in Python, and with the iteration of python versions, the performance is continuously optimized.

In Python3.9, the merge (|) and update (|=) operators have been added to the dict class. These updates complete the existing dict.update and {**d1,**d2} methods.

Traditional method of merging dictionaries:

>>> pycon = {2016: "Portland", 2018: "Cleveland"} # 字典1>>> europython = {2017: "Rimini", 2018: "Edinburgh", 2019: "Basel"} # 字典2# 方法一>>> {**pycon, **europython}{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}#方法二>>> merged = pycon.copy>>> for key, value in europython.items:... merged[key] = value...>>> merged{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}复制代码
Copy after login

Both methods merge dictionaries without changing the original data. Note that "Cleveland" in dictionary 1 has been overwritten by "Edinburgh" in merged dictionary 2.

You can also update dictionary 1:

>>> pycon.update(europython)>>> pycon{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}复制代码
Copy after login

The new version of Python introduces two new dictionary operators: merge(|) and update( |=). You can merge two dictionaries using |, while |= is used to update the dictionary:

>>> pycon = {2016: "Portland", 2018: "Cleveland"}>>> europython = {2017: "Rimini", 2018: "Edinburgh", 2019: "Basel"}>>> pycon | europython # 合并{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}>>> pycon |= europython # 更新>>> pycon{2016: 'Portland', 2018: 'Edinburgh', 2017: 'Rimini', 2019: 'Basel'}复制代码
Copy after login

d1|d2 and { ** d1, ** d2} have similar functions. They are both used to merge dictionaries and take unions. When encountering the same key, the latter will overwrite the former.

One of the advantages of using | is that it works with dictionary-like types and maintains the original type after merging:

>>> from collections import defaultdict>>> europe = defaultdict(lambda: "", {"Norway": "Oslo", "Spain": "Madrid"})>>> africa = defaultdict(lambda: "", {"Egypt": "Cairo", "Zimbabwe": "Harare"})>>> europe | africadefaultdict(<function <lambda> at 0x7f0cb42a6700>,{'Norway': 'Oslo', 'Spain': 'Madrid', 'Egypt': 'Cairo', 'Zimbabwe': 'Harare'})>>> {**europe, **africa}{'Norway': 'Oslo', 'Spain': 'Madrid', 'Egypt': 'Cairo', 'Zimbabwe': 'Harare'}复制代码
Copy after login

|=The function is to update the dictionary, similar to .update:

>>> libraries = {... "collections": "Container datatypes",... "math": "Mathematical functions",... }>>> libraries |= {"zoneinfo": "IANA time zone support"}>>> libraries{'collections': 'Container datatypes', 'math': 'Mathematical functions','zoneinfo': 'IANA time zone support'}复制代码
Copy after login

|= You can also use dictionary-like data structures for updates:

>>> libraries |= [("graphlib", "Functionality for graph-like structures")]>>> libraries{'collections': 'Container datatypes', 'math': 'Mathematical functions','zoneinfo': 'IANA time zone support','graphlib': 'Functionality for graph-like structures'}复制代码
Copy after login

2. Remove string prefixes and suffixes

In Python 3.9, you can use .removeprefix and .removesuffix to remove the beginning or end of a string respectively:

>>> "three cool features in Python".removesuffix(" Python")'three cool features in'>>> "three cool features in Python".removeprefix("three ")'cool features in Python'>>> "three cool features in Python".removeprefix("Something else")'three cool features in Python'复制代码
Copy after login

Some people will say that the .strip method is also possible, but this method will cause accidental deletion:

>>> "three cool features in Python".strip(" Python")'ree cool features i'复制代码
Copy after login

As you can see, you obviously want to delete the ending word python , but part of the there at the beginning has also been deleted - Th.

So .removeprefix and .removesuffix may be more accurate.

3. zoneinfo time zone module

zoneinfo is a newly introduced module in python3.9. Zoneinfo can access the Internet Assigned Numbers Authority (IANA) time zone database. IANA updates its database several times a year and is the most authoritative source of time zone information.

Using zoneinfo, you can get an object describing any time zone in the database:

>>> from zoneinfo import ZoneInfo>>> ZoneInfo("America/Vancouver")zoneinfo.ZoneInfo(key='America/Vancouver')

>>> from zoneinfo import ZoneInfo>>> from datetime import datetime, timedelta>>> # 夏令时>>> dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo("America/Los_Angeles"))>>> print(dt)2020-10-31 12:00:00-07:00>>> dt.tzname'PDT'>>> # 标准时间>>> dt += timedelta(days=7)>>> print(dt)2020-11-07 12:00:00-08:00>>> print(dt.tzname)PST复制代码
Copy after login

4. Built-in collection types are used in type hints

In type hints, you can now use built-in Collection types (such as list and dict) are used as generic types without having to import the corresponding uppercase type (such as List or Dict) from typing.

def greet_all(names: list[str]) -> None:for name in names:print("Hello", name)复制代码
Copy after login

5. Topological sorting

Python 3.9 adds a new module graphlib, which contains the graphlib.TopologicalSorter class to provide the functionality to perform topological sorting.

>>> dependencies = {... "realpython-reader": {"feedparser", "html2text"},... "feedparser": {"sgmllib3k"},... }...>>> from graphlib import TopologicalSorter>>> ts = TopologicalSorter(dependencies)>>> list(ts.static_order)['html2text', 'sgmllib3k', 'feedparser', 'realpython-reader']复制代码
Copy after login

6. Least Common Multiple (LCM)

Python has long had a function for calculating the greatest common divisor (GCD) of two numbers:

>>> import math>>> math.gcd(49, 14)7复制代码
Copy after login

Least Common Multiple (LCM) is related to the greatest common divisor (GCD). LCM can be defined according to GCD:

>>> def lcm(num1, num2):... if num1 == num2 == 0:... return 0... return num1 * num2 // math.gcd(num1, num2)...>>> lcm(49, 14)98复制代码
Copy after login

In Python 3.9, you no longer need to define your own LCM function. It adds the function of calculating the least common multiple:

>>> import math>>> math.lcm(49, 14)98复制代码
Copy after login

7. A more powerful Python parser

One of the coolest features of Python 3.9 is a feature that people don’t notice in daily programming, and that is the update of the parser. The parser is the basic component of the Python interpreter. In the latest version, the parser has been rebuilt.

Python has previously used the LL(1) parser to parse source code into a parse tree. You can think of an LL(1) parser as a parser that reads one character at a time and interprets the source code without backtracking.

The new interpreter is implemented based on PEG (parsing expression grammar), not LL(1). The performance of the new parser is comparable to the old parser, and PEG is more flexible than LL(1) when designing new language features.

Of the entire standard library, the PEG parser is slightly faster, however it also uses more memory. In fact, it's hard to tell how good or bad the performance is when using the new parser.

Related free learning recommendations: python tutorial(Video)

The above is the detailed content of Finally Introducing Python 3.9. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to solve the permissions problem encountered when viewing Python version in Linux terminal? How to solve the permissions problem encountered when viewing Python version in Linux terminal? Apr 01, 2025 pm 05:09 PM

Solution to permission issues when viewing Python version in Linux terminal When you try to view Python version in Linux terminal, enter python...

How to efficiently copy the entire column of one DataFrame into another DataFrame with different structures in Python? How to efficiently copy the entire column of one DataFrame into another DataFrame with different structures in Python? Apr 01, 2025 pm 11:15 PM

When using Python's pandas library, how to copy whole columns between two DataFrames with different structures is a common problem. Suppose we have two Dats...

How to teach computer novice programming basics in project and problem-driven methods within 10 hours? How to teach computer novice programming basics in project and problem-driven methods within 10 hours? Apr 02, 2025 am 07:18 AM

How to teach computer novice programming basics within 10 hours? If you only have 10 hours to teach computer novice some programming knowledge, what would you choose to teach...

How to avoid being detected by the browser when using Fiddler Everywhere for man-in-the-middle reading? How to avoid being detected by the browser when using Fiddler Everywhere for man-in-the-middle reading? Apr 02, 2025 am 07:15 AM

How to avoid being detected when using FiddlerEverywhere for man-in-the-middle readings When you use FiddlerEverywhere...

How does Uvicorn continuously listen for HTTP requests without serving_forever()? How does Uvicorn continuously listen for HTTP requests without serving_forever()? Apr 01, 2025 pm 10:51 PM

How does Uvicorn continuously listen for HTTP requests? Uvicorn is a lightweight web server based on ASGI. One of its core functions is to listen for HTTP requests and proceed...

How to dynamically create an object through a string and call its methods in Python? How to dynamically create an object through a string and call its methods in Python? Apr 01, 2025 pm 11:18 PM

In Python, how to dynamically create an object through a string and call its methods? This is a common programming requirement, especially if it needs to be configured or run...

What are some popular Python libraries and their uses? What are some popular Python libraries and their uses? Mar 21, 2025 pm 06:46 PM

The article discusses popular Python libraries like NumPy, Pandas, Matplotlib, Scikit-learn, TensorFlow, Django, Flask, and Requests, detailing their uses in scientific computing, data analysis, visualization, machine learning, web development, and H

What are regular expressions? What are regular expressions? Mar 20, 2025 pm 06:25 PM

Regular expressions are powerful tools for pattern matching and text manipulation in programming, enhancing efficiency in text processing across various applications.

See all articles