Maison > développement back-end > Tutoriel Python > Explication détaillée des nouvelles fonctionnalités de la version officielle de Python 3.6

Explication détaillée des nouvelles fonctionnalités de la version officielle de Python 3.6

高洛峰
Libérer: 2017-03-24 17:51:15
original
1664 Les gens l'ont consulté

Selon le plan indiqué sur le site officiel de Python, la version officielle de Python 3.6 devrait être publiée le 16 décembre 2016, soit ce vendredi. Depuis mai de l'année dernière, Python 3.6 est en cours de développement et 4 versions Alpha, 4 versions Beta et une version Candidate ont été publiées par intermittence.
Nouvelles fonctionnalités de syntaxe
1. Littéraux de chaîne formatés
C'est-à-dire qu'en ajoutant le préfixe f ou F avant les chaînes ordinaires, l'effet est similaire à str.format( ). Par exemple,

name = "Fred"
print(f"He said his name is {name}.") # 'He said his name is Fred.'
Copier après la connexion


équivaut à :

print("He said his name is {name}.".format(**locals()))
Copier après la connexion


De plus, cette fonctionnalité prend également en charge les champs imbriqués, tels que :

width = 10
precision = 4
value = decimal.Decimal("12.34567")
print(f"result: {value:{width}.{precision}}") #'result:   12.35'
Copier après la connexion


2. Annotations de variables
Il s'agit des Typehints disponibles depuis Python 3.5. Dans Python3.5, il est utilisé comme ceci :

from typing import List
def test(a: List[int], b: int) -> int:
  return a[0] + b
print(test([3, 1], 2))
Copier après la connexion


La vérification de la syntaxe ici est uniquement générée dans l'éditeur (comme Pycharm). En utilisation réelle, une vérification stricte n'est pas effectuée.
Dans Python3.6, une nouvelle syntaxe a été introduite :

from typing import List, Dict
primes: List[int] = []
captain: str  # 此时没有初始值
class Starship:
  stats: Dict[str, int] = {}
Copier après la connexion


3. Underscores in Numeric Literals (Underscores in Numeric Literals)
permet l'utilisation de traits de soulignement dans les nombres. pour améliorer la lisibilité des nombres à plusieurs chiffres.

a = 1_000_000_000_000_000    # 1000000000000000
b = 0x_FF_FF_FF_FF       # 4294967295
Copier après la connexion


De plus, "String Formatting" prend également en charge l'option "_" pour imprimer une chaîne numérique plus lisible :

'{:_}'.format(1000000)     # '1_000_000'
'{:_x}'.format(0xFFFFFFFF)   # 'ffff_ffff'
Copier après la connexion


4. Générateurs
Dans Python 3.5, les nouvelles syntaxes async et wait sont introduites pour implémenter les coroutines. Cependant, il existe une restriction. Yield et wait ne peuvent pas être utilisés simultanément dans le même corps de fonction. Dans Python3.6, cette restriction est assouplie. Python3.6 permet la définition de générateurs asynchrones :

async def ticker(delay, to):
"""Yield numbers from 0 to *to* every *delay* seconds."""
  for i in range(to):
    yield i
    await asyncio.sleep(delay)
Copier après la connexion

<.>5. Les compréhensions asynchrones
permettent l'utilisation de la syntaxe async for ou wait dans les analyseurs de listes, d'ensembles et de dictionnaires.

result = [i async for i in aiter() if i % 2]
result = [await fun() for fun in funcs if await condition()]
Copier après la connexion


Nouveau module ajoutéUn nouveau module a été ajouté à la Python Standard Library (The Standard Library) : secrets. Ce module est utilisé pour générer des nombres aléatoires plus sécurisés pour gérer les données, telles que les mots de passe, l'authentification de compte, les jetons de sécurité et les secrets associés. Pour une utilisation spécifique, veuillez vous référer à la documentation officielle : secrets

Autres nouvelles fonctionnalités1 La nouvelle variable d'environnement PYTHONMALLOC permet aux développeurs de définir l'allocateur de mémoire, d'enregistrer des hooks de débogage, etc.
2. Le module asyncio est plus stable et efficace, et n'est plus un module temporaire, et les API qu'il contient sont également des versions stables.
3. Le module de saisie a également été amélioré et n'est plus un module temporaire.
4. datetime.strftime et date.strftime commencent à prendre en charge les identifiants de temps ISO 8601 %G, %u, %V.
5. Les modules hashlib et ssl commencent à prendre en charge OpenSSL1.1.0.
6. Le module hashlib commence à prendre en charge de nouveaux algorithmes de hachage, tels que BLAKE2, SHA-3 et SHAKE.
7. L'encodage par défaut du système de fichiers et de la console sous Windows est remplacé par UTF-8.
8. Les fonctions json.load() et json.loads() du module json commencent à prendre en charge les entrées de type binaire.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal