diff --git a/chapters/python.tex b/chapters/python.tex index 40a7e35..d7b822f 100755 --- a/chapters/python.tex +++ b/chapters/python.tex @@ -124,6 +124,9 @@ Nous pouvons donc utiliser ces mêmes \textbf{dunder methods} (\textbf{double-un \section{Structures de données} +Le langage Python est un langage orienté objet au sens où \textbf{tout} est un objet. +Cela signifie qu'il ne se limite pas à modéliser une structure de données, mais qu'il embarque son propre comportement, avec ses méthodes. + Les principales structures de données sont : \begin{itemize} @@ -135,9 +138,6 @@ Les principales structures de données sont : \subsection{Dictionnaires} -Dans le langage Python, un dictionnaire est un objet. -Cela signifie qu'il ne se limite pas à modéliser une structure de données, mais qu'il embarque son propre comportement, avec ses méthodes. - Au hasard des internets multimédias, on est tombé sur un morceau de code à base de \texttt{pop} et de réinitialisation. Quelque chose comme ceci: @@ -179,6 +179,40 @@ en gros, ça te retourne la valeur de la clé si elle existe, et si pas, cela te Ca évite, dans une boucle, de vérifier si la clé existe déjà, et si pas, de la créer +\section{Introspection} + +\begin{minted}{python} + + def on_command_1(): + print("Oune") + + def on_command_2(): + print("Dos") + + def on_command_3(): + print("Tresse") + + def prrrt(): + print("Won't be printed") +\end{minted} + + Tu peux retrouver les trois méthodes \texttt{on\_command\_*}` via la fonction `dir()`: + +\begin{minted}{python} + >>> import module_chelou + >>> dir(module_chelou) + ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'on_command_1', 'on_command_2', 'on_command_3', 'prrrt'] + + >>> for function_name in [x for x in dir(module_chelou) if "on_command_" in x]: + ... getattr(module_chelou, function_name)() + ... + Oune + Dos + Tresse + + ``` +\end{minted} + \section{The Zen of Python} (aussi connue sous PEP20 ;)) \index{PEP!PEP20}