tée des variables avec les instructions global et nonlocal**. global permet de rendre une variable locale de portée globale, et nonlocal permet de rendre une variable locale de port... tours de fonction**.
</note>
===== L'instruction nonlocal =====
Pour expliquer le comportement de **l'instruction nonlocal**, on va implémenter une petite fonction. ''
que ce qui sera retourné sera un **itérateur** et non pas une liste, un set ou un dictionnaire. C'est d... nstruction ''return'', elle va retourner l'objet *None* ; si vous mettez une instruction ''return'', el... for i in divdis(28):
... print(i)
TypeError: 'NoneType' object is not iterable
</code>
Ici *divdiv... , lorsqu'on l'appelle elle ne retourne rien, donc None ; et c'est sur ce None qu'on essaie de faire la
ier un nom à un âge, donc "indicer" mes séquences non plus avec des entiers mais avec par exemple des c... e 'jo' est la clé correspondant au premier couple non je vais donc passer au deuxième couple ; est-ce q... l'efficacité d'une table de hash est conditionnée non seulement par la taille du tableau, si j'ai un ta... nte et qui permet également d'indexer des valeurs non pas avec des entiers comme dans une séquence, mai
obtient la docstring:
<file>
sort(self, /, *, key=None, reverse=False)
Sort the list in ascending order and return None.
The sort is in-place (i.e. the list it... uïté, on voit bien que le retour de *sort* c'est *None*, donc cette méthode nous retourne juste l'objet... ion f avec un argument a
# appellant une fonction non définie
def f(a):
func(a)
</code>
La fonct
peler les fonctions**.
===== Nombre d'arguments non connu à l'avance =====
Si l'on souhaite mettre e... e comme ceci:
<code python>
# la version naïve - non conseillée - de ligne_rouge
def ligne_rouge(x1, ...
# mais plutôt ceci
def mais_plutot_ceci(options=None):
if options is None:
options = {}
"faire quelque chose"
</code>
Pour illustrer la
un objet qui est un singleton, comme typiquement None.
<code python>
undef = None
if undef is None:
print('indéfini')
</code>
*is* est plus efficace que l'opérateur *==*. En eff
e *h*, donc *g* est une **fonction englobante** ; non, *a* n'est pas définie dans la fonction englobant... return i + 1
# l'appel de length sur une liste non vide
# se comporte normalement
length([1, 2, 3])
... nction1()
locale
</code>
Et ceci que l'on ait ou non une variable globale de même nom:
<code python>
v
îne de caractères comme par exemple Noël, été ... non je recommence été, voilà. Donc là j'ai une chaîne... hon va bien coder les bytes sous forme d'octet et non pas sous forme de caractère. Donc maintenant j'ai
je peux faire 'egg' not in s, qui est le test de non appartenance, et qui va me retourner faux, puisqu... 'intersection. Ici on voit que l'intersection est non nulle, c'est 'bacon', il me retourne 'bacon'. Si
ifications ont lieu sur les éléments de liste, et non sur l'objet liste lui-même, c'est donc tout à fai... le comportement attendu dans ce cas ? Faut-il ou non que la boucle envisage alors le 8-ème élément ?
* Un type built-in, s'il est **False**, **0**, **None**, ou n'importe quel **type** liste, set, dictio... ur)
</code>
===== Compréhensions =====
Un objet non vide conduit à une expression vraie, on peut tou
payez le prix de l'import qu'au premier appel et non à chaque appel de la fonction.
<code python>
>>>... ote>
''%%importlib.reload%%'' est une fonction et non une instruction comme import: d'où cette syntaxe
hode est résolu lors de l'exécution (run-time) et non pas lors de la compilation (compile-time). Ceci s... générique, qui pourra fonctionner avec des objets non connus a priori.
==== Héritage ====
L'héritage
'
* ''if objet:''
* ''objet(arg1, arg2)'' (et non pas ''classe(arg1, arg2)'')
* etc..
que jusqu'... édéfinis, sont considérés comme faux les objets : None, la liste vide, un tuple vide, etc.
Avec ''%%__
'jean', age=12)
print(p)
</code>
===== Instances non mutables =====
Le décorateur dataclass accepte d... ui illustre la possibilité de créer des instances non mutables. Nous retrouvons ici le même scénario d'