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!"
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é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!"
__doc __
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é!"
--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
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éférence: PEP 572 - Expressions d'attribution
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."
#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!"
>>> 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}
>>> set_obj = {i for i in range(10)}
>>> set_obj
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
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éférence: 5. Structures de données
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]
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