Voici quelques grammaires que vous pourriez obtenir un slapstick si vous connaissez en Python

Je vais vous présenter la grammaire python dont vous pourrez peut-être vous débarrasser si vous connaissez principalement les nouvelles fonctions.

1. Formule de substitution

Il s'agit d'une nouvelle syntaxe ajoutée à partir de python3.8. C'est bon de savoir quelque chose de nouveau. Les expressions de substitution sont écrites dans la syntaxe : =, et les expressions conditionnelles et les instructions d'affectation peuvent être utilisées en même temps.

Par exemple, les expressions conditionnelles courantes suivantes

text = 'Hello New Expression!!'
text_length = len(text)
if text_length > 10:
    print(f"String is too long!!({text_length} length, expected <= 10)")

Il peut être abrégé comme suit en utilisant «: =». Vous pouvez voir que ʻif (text_length: = len (text))> 10: `lit les expressions d'affectation et conditionnelles.

text = 'Hello New Expression!!'
if (text_length := len(text)) > 10:
    print(f"String is too long!!({text_length} length, expected <= 10)")

refs Formule de substitution: https://www.python.org/dev/peps/pep-0572/

2. Notation inclusive autre que liste

Je pense qu'une notation d'inclusion courante consiste à générer une liste comme celle-ci:

numbers = [1,2,3]
dubble_numbers = [x*2 for x in numbers]
print(dubble_numbers)
#[2, 4, 6]

Bien que rarement utilisées, il existe également des notations inclusives pour les dictionnaires, les ensembles et les générateurs. C'est un point du visage de doya.

--Notation d'inclusion de dictionnaire

L'écriture d'une valeur-clé comme x: x * 2 dans {} générera un dictionnaire.

numbers = [1,2,3]
dubble_number_dict = {x:x*2 for x in numbers}
print(dubble_number_dict)
#{1: 2, 2: 4, 3: 6}

Si vous n'écrivez qu'une valeur dans {} comme x, un ensemble sera généré.

numbers = [1,2,3,1,1]
dubble_number_set = {x for x in numbers}
print(dubble_number_set)
# set([1, 2, 3])

--Type de générateur

Si vous écrivez dans () comme la notation d'inclusion de liste, un générateur sera généré à la place du tuple.

numbers = [1,2,3]
dubble_number_generator = (x for x in numbers)
print(dubble_number_generator)
# <generator object <genexpr> at 0x10d7779b0>

refs Structure des données: https://docs.python.org/3.9/tutorial/datastructures.html

3. Tapez indice

À partir de python3.5, il est possible de déclarer (pour être exact, annoter) le type dans le code comme un langage typé statiquement. J'ai l'impression d'abandonner les mérites d'un langage typé dynamiquement, mais quand il s'agit d'un développement compliqué, je pense que beaucoup de gens sont prudemment inquiets si les types ne sont pas explicitement déclarés. Précautions lors de l'utilisation

Le code source spécifique est le suivant. Il est plus facile à maintenir, mais c'est une extension des commentaires et n'est pas vérifié à l'exécution. text: str = 123 # Assignment int passe également sans erreur.

def greeting(name: str) -> str:
    return f'Hello {name}'

text: str = 'Python!!'
print(greeting(text))
# Hello Python!!

text: str = 123 # Assignment int
print(greeting(text)) # No error
# Hello 123

Les outils de vérification ne sont pas fournis par défaut, vous devez donc utiliser un outil externe. Le plus célèbre est probablement «mypy». http://www.mypy-lang.org/

Il existe diverses autres règles telles que la façon de déclarer des classes définies par l'utilisateur avec des indices de type, mais je les omettrai ici.

refs: Indice de type: https://docs.python.org/3.9/library/typing.html

  1. dataclass C'est un objet de données ajouté à partir de python3.7. Il s'agit d'une fonction de visage doya qui est utile lors de la définition d'une interface lors du développement d'un système Web. C'est une fonctionnalité que j'aime à un niveau où vous pouvez mettre à jour vers python3.7 pour l'utiliser. --Déclarez une classe avec un décorateur @ dataclass.

Un exemple d'utilisation concret est le suivant.

from dataclasses import dataclass,asdict,astuple

@dataclass
class Person:
    name: str
    age: int = 0

    def greeting(self) -> str:
        return f"My name is {self.name}, {self.age} years old."

tanaka = Person('tanaka',18)
print(tanaka.greeting())
# My name is tanaka, 18 years old.

baby = Person('taro') # Use default value
print(baby.greeting())
# My name is taro, 0 years old.

print(asdict(baby)) # To dict object 
# {'name': 'taro', 'age': 0}

print(astuple(baby)) # To tuple object
# ('taro', 0)

Il y a aussi des fonctions comme en faire un objet immuable et étendre le processus d'initialisation avec __post_init__, mais il est omis ici.

refs: dataclass: https://docs.python.org/3/library/dataclasses.html

5. f chaîne

C'est un modèle de chaîne de caractères ajouté à partir de python3.6.

C'est plus simple et plus sophistiqué que les méthodes de chaîne précédentes format () et % operator. Plus précisément, mettez «f» »au début de la chaîne de caractères et utilisez-la comme suit.

a,b = 1000,2000
print(f'a is {a},b is {b}')
# a is 1000,b is 2000

print(f'sum of ab is {a+b}') # can be calculated
# sum of ab is 3000

print(f'a: {a:,}') # separated by comma
# a: 1,000

Comme mentionné ci-dessus, le fait que le calcul dans la chaîne de caractères est possible et le point que le formatage flexible est possible sont les points qui peuvent être ridicules.

De plus, depuis python3.8, la fonction a été étendue pour le débogage des variables.

a,b = 1000,2000
print(f'a={a},b={b}') # before 3.8
# a=1000,b=2000

print(f'{a=},{b=}') # after 3.8
# a=1000,b=2000

En insérant = après la variable, vous pouvez voir que la valeur et le nom de la variable sont affichés.

refs: Format: https://docs.python.org/3/tutorial/inputoutput.html Débuggable: https://docs.python.org/3/whatsnew/3.8.html#f-strings-support-for-self-documenting-expressions-and-debugging

Résumé

Quand je travaille sur le terrain, je pense qu'il est difficile d'utiliser python2 et d'autres dettes passées, donc je suis enthousiasmé par les nouvelles fonctionnalités et je veux le réparer avec un visage burlesque.

Recommended Posts

Voici quelques grammaires que vous pourriez obtenir un slapstick si vous connaissez en Python
Que faire si vous obtenez moins zéro en Python
BigQuery - Si vous obtenez une erreur Reason: responseTooLarge en Python
Si vous rencontrez une "erreur de décodage Unicode" en Python
Comprendre le rendement Python Si vous mettez le rendement dans une fonction, elle se transforme en générateur
Pourquoi l'instruction main () -if de Python est-elle attachée?
Si vous écrivez TinderBot en Python, elle peut le faire
Si vous pensez que la personne que vous mettez avec pip ne fonctionne pas → Utilisez-vous python3 par hasard?
Si vous obtenez une erreur: ce port est déjà utilisé. Dans Django
Si vous êtes bloqué dans Impossible de charger mkl_intel_thread.dll en Python sous Windows
Supprimer un caractère spécifique en Python s'il s'agit du dernier
Si vous souhaitez affecter une exportation csv à une variable en python
Vérifiez si vous pouvez vous connecter à un port TCP en Python
Si vous voulez un singleton en python, considérez le module comme un singleton
Lors d'une erreur de programmation: (1146, "La table '<nom de la table>' n'existe pas") se produit dans Django
J'ai créé un bot Discord en Python qui se traduit quand il réagit
Que se passe-t-il si vous "importez A, B comme C" en Python?
Si vous obtenez une erreur sans attribut dans boto3, vérifiez la version
Un mémorandum de commandes de filtrage que vous pourriez oublier en un instant
Comment obtenir stacktrace en python
Obtenez un jeton pour conoha avec python
Que faire si vous obtenez une erreur "Aucune version trouvée" sur pipenv
Une solution si vous supprimez accidentellement l'interpréteur python dans / usr / local / bin /.
Créez un plugin qui vous permet de rechercher les onglets Sublime Text 3 en Python
[Débutant] Que se passe-t-il si j'écris un programme qui s'exécute sur php en Python?
Si vous les gars dans la cuisine de portée pouvez le faire avec une marge ~ ♪
Commande Linux (édition de base) utilisable à partir d'aujourd'hui si vous connaissez
Que faire si vous obtenez «Python non configuré». Utilisation de PyDev dans Eclipse
[Python] Choses à vérifier lorsqu'une erreur de décodage Unicode apparaît dans Django
Même si vous êtes un débutant en python et que vous avez moins d'un an de courses de chevaux, vous avez pu gagner un triple.