Même les débutants veulent dire "Je comprends parfaitement Python"

Mon enfant "Ogyaaogyaa !! Je ne comprends pas du tout Python !!"

J'ai dit: "Oh, mon enfant, qui est un débutant en Python, ne comprend pas Python et je ne l'ai pas aujourd'hui ..."

J'ai dit: "Tout le monde ne peut pas créer facilement un programme en Python, mais je ne pense pas que les fonctions super pratiques qui sont si populaires ne soient pas connues. De plus, quand j'essaie d'utiliser les fonctions pratiques, je ne comprends pas le sens. Je ne sais pas. "

J'ai dit: "C'est pourquoi cette fois, je vais introduire une grammaire relativement nouvelle mais qui ne semble pas bien connue! Tout le monde semble viser une compréhension complète de Python!"

table des matières

Indice de saisie

J'ai dit: "Au début, les indices de type ajoutés dans la version 3.5!"

I "Savez-vous tous que Python est un langage ** à typage dynamique **?"

J'ai dit: "** Le typage dynamique ** signifie qu'il déterminera automatiquement le type sans spécifier le type!"

J'ai dit: "Par exemple, dans le langage ** à typage statique **, vous déclarez des variables comme celle-ci."

var name str = "nokonoko" //type de str
var age int = 5 //type int

I "Je me demande si je devrais décider à l'avance quelle valeur sera entrée dans la variable. Si j'entre un type autre que le type spécifié, une erreur se produira."

I "D'un autre côté, Python ..."

name = "nokonoko" #type de str
age = 5 #type int

J'ai dit: "Même si vous ne prenez pas la peine de déclarer le nom du type comme celui-ci, vous pouvez simplement déclarer la variable normalement et décider du type sans permission! Python est pratique!"

J'ai dit: "Si vous regardez ceci, ** typé statiquement ** est juste ennuyeux ..." Mais pourquoi y a-t-il encore un langage typé statiquement (plutôt, statique est plus populaire ...?) ... parce que cela a du mérite. Peut-être que c'est à peu près autant. "

--Vitesse: l'opération est rapide car la détermination du type est déjà terminée sur le code. --Sécurité: Avoir un type réduit la probabilité qu'un bug apparemment inconnu se produise. --Facile à lire: c'est difficile à écrire, mais il est facile de deviner le comportement car les types d'arguments et les valeurs de retour sont explicites.

J'ai dit: «** À petite échelle **, si vous le déplacez pour le moment, c'est OK **, ** la vitesse n'a pas d'importance **, ** si vous développez par vous-même **, vous ne vous souciez pas du type, mais c'est généralement le cas. Ce n'est pas. "

J'ai dit: «Il semble que Python soit né pour écrire des scripts simples en premier lieu, mais dans une situation aussi populaire, il semble qu'il y ait eu une forte demande pour que Python soit typé statiquement. Parce que c'est difficile à faire ... Je suis né avec un ** indice de type **! "

J'ai dit: "C'est utilisé comme ça."

def hello(name: str) -> str:
    return f"Hello {name}"

J'ai dit: "Vous pouvez définir les types de variables et les arguments de fonction et les valeurs de retour! Maintenant, lorsque vous écrivez du code à l'aide de l'IDE, etc., vous serez averti lorsque vous prenez des variables de types différents comme arguments. alors!!"

J'ai dit: "Mais ce n'est pas vraiment un langage typé, il peut être exécuté, alors faites attention!"

Résumé

Référence: typing --- support for type hints

Docstring

J'ai dit: "Ensuite, c'est Docstring! C'est aussi une fonction utile! Voyons ce que c'est!"

def hello(name):
    """Dites bonjour à la personne que vous mettez dans la dispute"""
    return f"Hello {name}"

J'ai dit: "Vous pouvez incorporer un document dans votre code en mettant une chaîne entre trois guillemets dans une fonction (ou un module de classe) comme celui-ci!"

J'ai dit: "C'est ce qui le différencie d'un simple commentaire, mais la chaîne de caractères intégrée ici n'est pas stockée dans la méthode spéciale __doc__ de cet objet."

J'ai dit: "Tsukoto peut se référer au document en utilisant` help () ʻen mode interactif, ou Sphinx. Si vous utilisez, cela créera automatiquement un document et vous obtiendrez de nombreuses offres! C'est un peu différent d'un simple commentaire. "

>>> help(hello)
Help on function hello in module __main__:
hello(name)
Dites bonjour à la personne que vous mettez dans la dispute

J'ai dit: "Plus !!!!!! En incorporant plusieurs lignes de Docstring, vous pouvez écrire les indices de type que j'ai expliqués plus tôt dans Docstring!"

J'aime ça!"

def hello(name):
    """Dites bonjour à la personne que vous mettez dans la dispute

    Args:
        name(str):Le nom de la personne que vous souhaitez saluer

    Returns:
        str:Salutations
    """
    return f"Hello {name}"

J'ai dit: "Vous pouvez vérifier le type avec l'IDE, etc., tout comme vous avez mis l'indice de type avec ceci!"

J'ai dit: "Celui que j'ai écrit ci-dessus s'appelle" style Google ", mais je peux écrire diverses choses autres que les arguments et les valeurs de retour, et il existe d'autres façons de l'écrire en premier lieu, donc si vous êtes curieux, vérifiez-le! "

J'ai dit: "C'est pratique pour développer avec un grand nombre de personnes, donc tout le monde devrait l'essayer!"

Résumé

Référence: PEP 257 --Docstring Conventions

f-string

I "Ensuite est la f-string (f string et!) Ajouté dans la version 3.6"

J'ai dit: «Il y a environ deux façons d'incorporer une variable dans une chaîne de caractères.

>>> name = "nokonoko"
>>> age = 5
>>> print("{}Est{}je suis vieux".format(name, age))
nokonoko a 5 ans

Je "toka"

>>> print("%s est%s ans" % (name, age))
nokonoko a 5 ans

Je suis «Tokayana».

J'ai dit: "Comme ça ... c'est vieux."

Je "Je ne peux pas faire ça comme ça maintenant!"

>>> print(f"{name}Est{age}je suis vieux")
nokonoko a 5 ans

J'ai dit: "Doya. J'ai effacé toutes les méthodes et tous les symboles que je ne comprends pas et je l'ai simplifié!"

J'ai dit: "Plus. Vous pouvez le faire à partir de Python 3.8."

>>> print(f"name={name}, age={age}") # 3.Jusqu'à 7
name=nokonoko, age=5

>>> print(f"{name=}, {age=}") # 3.À partir de 8
name='nokonoko', age=5

J'ai dit: "En mettant variables et=dans {}, les noms des variables sont automatiquement affichés! C'est utile lors du débogage!"

J'ai dit: "Utilisons activement ceci lors de la création d'un nouveau projet par commodité!"

Résumé

--Il existe différents types d'incorporation de chaînes de caractères, mais le plus pratique est la dernière ** f-string **. --Depuis Python 3.8, vous pouvez également incorporer des noms de variables, ce qui est encore plus pratique.

Référence: 2.4.3. Littéraux de chaîne formatés

Opérateur Seiuchi

I "Ensuite vient le ** opérateur Seiuchi ** ajouté dans la version 3.8!"

J'ai dit: "L'opérateur Seiuchi est un opérateur d'affectation: =, et il semble qu'il a été appelé parce qu'il ressemble aux yeux et aux crocs de Seiuchi vu de côté! "

Je "... eh bien, je ne peux pas le voir !!!"

J'ai dit: "Une fonction qui vous permet de la laisser pour le moment et de l'assigner à une variable dans une instruction if ou for! C'est comme ça!"

# 3.Jusqu'à 7
>>> name = "nokonoko"
>>> if name == "nokonoko":
...     print("beau, hein")
... else:
...     print("Ce n'est pas beau")
beau, hein

# 3.À partir de 8
if name := "nokonoko" == "nokonoko":
...     print("beau, hein")
... else:
...     print("Ce n'est pas beau")
beau, hein

J'ai dit: "Eh bien, c'est un résultat naturel."

J'ai dit: "C'est une fonction qui vous permet d'assigner à une variable dans une expression conditionnelle comme celle-ci, et c'est une excellente fonction qui peut raccourcir les expressions redondantes."

J'ai dit: "Cependant, ce n'est pas si bien connu en raison de ses fonctionnalités vraiment nouvelles, et selon la façon dont il est utilisé, il peut réduire sa lisibilité, alors utilisez-le avec prudence!"

J'ai dit: "Surtout en Python, ** les instructions if et for ne créent pas de portée locale **, alors soyez prudent!"

Résumé

Référence: PEP 572 - Expressions d'attribution

Notation d'inclusion

I "Ensuite est la notation d'inclusion!"

J'ai dit: "Il s'agit d'une fonction pour créer simplement un objet (ayant une référence à un autre objet) qui stocke plusieurs valeurs telles qu'une variable appelée ** objet conteneur **."

J'ai dit: "Le plus couramment utilisé est la notation d'inclusion de liste."

Notation d'inclusion de liste

#Créer une nouvelle liste
>>> numbers = []
>>> for i in range(10):
...     numbers.append(i)
>>> numbers
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#Si vous utilisez la notation d'inclusion, ce sera comme ceci
>>> numbers = [i for i in range(10)]
>>> numbers
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

J'ai dit: "C'est une excellente chose qui permet de définir un tableau en utilisant une instruction for sur une ligne!"

J'ai dit: "Et vous pouvez également intégrer une instruction if!"

#Ordinaire pour déclaration
>>> numbers = []
>>> for i in range(10):
...     if i % 2 == 0:
...         numbers.append(i)
...         
>>> numbers
[0, 2, 4, 6, 8]

#Notation d'inclusion
>>> numbers = [i for i in range(10) if i % 2 == 0]
>>> numbers
[0, 2, 4, 6, 8]

J'ai dit: "De plus, contrairement à l'instruction for, elle ferme la portée!"

#Ordinaire pour déclaration
>>> numbers = []
>>> for i in range(10):
...     numbers.append(i)
#La variable i définie dans l'instruction for peut être référencée
>>> i
9

#Notation d'inclusion
>>> numbers = [i for i in range(10)]
#Une exception se produit car la variable i n'est pas définie
>>> i
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'i' is not defined

J'ai dit: "Parce que cela évitera les bugs ennuyeux, utilisez la notation d'inclusion autant que possible lors de la création d'une nouvelle liste!"

J'ai dit: "Au fait, la notation d'inclusion peut être utilisée pour autre chose que la liste! Je vais vous présenter cela aussi!"

Notation d'inclusion de dictionnaire

>>> dict_obj = {str(i): i for i in range(10)}
>>> dict_obj
{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}

Définir la notation d'inclusion

>>> set_obj = {i for i in range(10)}
>>> set_obj
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

Type de générateur

Je pense, "D'après le flux jusqu'à présent, si vous définissez le symbole de conclusion sur (), vous pouvez le faire avec la notation d'inclusion tapple, mais c'est une petite exception, et vous pouvez créer un générateur. Faites attention car c'est compliqué! "

gen_obj = (i for i in range(10))
gen_obj
<generator object <genexpr> at 0x10df04580>

J'ai dit: "Il existe diverses inclusions, et toutes sont pratiques, alors veuillez les utiliser!"

Résumé

Référence: 5. Structures de données

Générateur

J'ai dit: "Ensuite, il y a un générateur! C'est une fonction qui existe depuis longtemps, mais c'est une fonction que les débutants ne comprennent pas vraiment comment utiliser. Si vous ne vous souciez pas de faire un générateur, vous pouvez faire une liste ..."

J'ai pensé: "J'ai pensé, mais je sens que je vais être un grand succès dans les deux points suivants."

Je "par exemple ..."

while True:
    print("Renvoie une valeur")

J'ai dit: "Quand j'écris du code, j'entre immédiatement dans une boucle infinie. Il est possible que le système continue à être consommé et que le système tombe en panne ... donc je fais généralement attention de ne pas le faire."

J'ai dit: "La même chose peut arriver même si vous êtes limité à une boucle infinie, ou si vous faites une liste énorme avec de lourds calculs mathématiques."

J'ai dit: "Mais si vous utilisez le générateur comme indiqué ci-dessous, vous n'avez pas à surcharger la mémoire de la création d'un nouvel élément jusqu'à ce que l'élément suivant soit requis (en appelant la méthode spéciale __next__)!"

J'ai dit: "Il y a deux façons de créer un générateur, spécifiquement de cette façon!"

#Comment créer une fonction
>>> def my_gen():
...     x = 0
...     while True:
...         yield x
...         x += 1
#La valeur de retour est générateur
>>> my_gen()
<generator object my_gen at 0x10df04510>

>>> for i in my_gen():
...     print(i)
0
1
2
3
...

#Comment utiliser une expression de générateur
>>> my_gen = (i for i in range(10000) if i % 2 == 0)
>>> for i in my_gen:
...     print(i)   
0
2
4
6
8

J'ai dit: "La valeur de retour du générateur est un itérateur, donc elle peut être utilisée dans l'instruction for!"

J'ai dit: "Cela semble être très pratique lorsque vous voulez lire et traiter un csv avec 1 million d'enregistrements!"

J'ai dit: "Au fait, le générateur peut aussi être converti en d'autres objets conteneurs! Mais attention car il peut consommer beaucoup de mémoire au moment de la génération!"

>>> my_gen = (i for i in range(10000) if i % 2 == 0)
>>> my_list = list(my_gen)
>>> type(my_list)
<class 'list'>
>>> my_list
[0, 2, 4, 6, 8, 10, 12, 14, 16,...9992, 9994, 9996, 9998]

Résumé

Commentaire général

J'ai dit: "Comment as-tu fait?

Mon enfant "Ogyaaogyaa !! Python semble super facile !!"

J'ai dit: "Ouais. Il semble que mon enfant puisse comprendre Python complètement. Devant l'écran, vous ferez de votre mieux pour devenir un homme à la compréhension complète de Python!"

Oshimai

Recommended Posts

Même les débutants veulent dire "Je comprends parfaitement Python"
Même avec JavaScript, je veux voir Python `range ()`!
Je veux bien comprendre les bases de Bokeh
Je veux comprendre à peu près systemd
Je veux déboguer avec Python
Je veux utiliser jar de python
Je veux créer un environnement Python
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
[Python] pandas à bien comprendre en 10 minutes
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
Je veux que CAPTCHA dise des mots HIWAI
Je veux faire le test de Dunnett en Python
Je veux utiliser MATLAB feval avec python
Je veux mémoriser, y compris les arguments de mots clés de Python
Je veux créer une fenêtre avec Python
Je souhaite envoyer un e-mail depuis Gmail en utilisant Python.
[Python] Je veux gérer 7DaysToDie depuis Discord! 1/3
Je veux moquer datetime.datetime.now () même avec pytest!
Je veux faire un jeu avec Python
Je veux fusionner des dictionnaires imbriqués en Python
Je souhaite utiliser le répertoire temporaire avec Python2
Je veux utiliser le solveur ceres de python
#Unresolved Je veux compiler gobject-introspection avec Python3
Je veux résoudre APG4b avec Python (chapitre 2)
Je souhaite vendre les produits que j'ai listés par python scraping Mercari
[Python] Je veux gérer 7DaysToDie depuis Discord! 2/3
Je veux créer du code C ++ à partir de code Python!
Je veux écrire dans un fichier avec Python
Je veux afficher la progression en Python!
Je veux écrire en Python! (1) Vérification du format de code
Je veux comprendre (l'ingénierie) UMAP plus fort que t-SNE
[Pour les débutants] Comment utiliser la commande say avec python!
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
Je veux répéter plusieurs fois un générateur Python
Python que je voudrais recommander aux débutants en programmation
Je veux générer rapidement UUID (memo memo) ~ Edition Python ~
Je veux gérer l'optimisation avec python et cplex
Je veux écrire en Python! (2) Écrivons un test
Je veux échantillonner au hasard un fichier avec Python
Je veux hériter de l'arrière avec la classe de données python
Je veux travailler avec un robot en python.
[Python] Je veux faire d'une liste imbriquée un taple
Je veux écrire en Python! (3) Utiliser des simulacres
Je veux AWS Lambda avec Python sur Mac!
Je veux dire qu'il y a un prétraitement des données ~
Je veux utiliser le jeu de données R avec python
Je veux faire fonctionner un ordinateur quantique avec Python
Je veux faire quelque chose avec Python à la fin
Je veux manipuler des chaînes dans Kotlin comme Python!
Je veux faire Wake On LAN de manière entièrement automatique
Essayez de comprendre Python soi
Je veux résoudre SUDOKU
3 raisons pour lesquelles les débutants en programmation devraient commencer avec Python
Je comprends Python en japonais!
~ Conseils pour les débutants de Python présentés avec amour par Pythonista ③ ~
Je veux pouvoir analyser des données avec Python (partie 3)