On l'a vu dans les parties précédentes, les variables ne sont rien de plus que des noms associés à des objets.
On a vu également qu'il existait plusieurs règles de nomenclatures à suivre obligatoirement pour ne pas obtenir d'erreurs et des conventions de nommage qui ne sont pas obligatoires mais fortement recommandées.
Il faut savoir que Python dispose de nombreux mots-clés réservés pour réaliser des opérations précises (définir une fonction, importer un module, etc).
Ainsi, si vous utilisez ces mots-clés pour vos noms de variable, vous obtiendrez une erreur de syntaxe (SyntaxError
).
Voici la liste des mots-clés réservés par Python :
False
def
if
raise
None
del
import
return
True
elif
in
try
and
else
is
while
as
except
lambda
with
assert
finally
nonlocal
yield
break
for
not
class
from
or
continue
global
pass
Plus généralement, il existe de nombreuses fonctions et objets utilisés par Python que vous pouvez utiliser pour les noms de vos variables.
Le problème dans ce deuxième cas de figure, c'est que Python ne vous retournera pas d'erreur de syntaxe.
Par exemple, la fonction print
qui permet d'afficher du texte, peut être utilisée comme nom de variable :
>>> print = "Docstring"
Comme vous pouvez le voir dans le code ci-dessus, Python ne nous empêche pas de créer une variable avec le nom print
.
Le problème c'est que nous venons de ce fait "d'écraser" la fonction print
et nous ne pouvons plus l'utiliser !
Vous aurez donc une erreur (à retardement) si par la suite dans votre script vous souhaitez utiliser la fonction print
:
>>> print("Bonjour")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
Cette erreur est plus difficile à comprendre quand on est débutant. Si on traduit l'erreur, elle signifie que « l'objet chaîne de caractères n'est pas appelable ».
Comme nous avons défini auparavant une variable print
égale à la chaîne de caractères "Docstring"
, quand on essaie par la suite de faire :
print("Bonjour")
C'est comme si on faisait :
"Docstring"("Bonjour")
Et c'est ce que nous indique l'erreur retournée par Python : quand on ajoute des parenthèses, on appelle la fonction (en anglais : "call"). Sauf qu'on ne peut pas faire un appel sur un objet de type chaîne de caractères.
D'où l'erreur « 'str' object is not callable ».
Voici une liste (non-exhaustive) de fonctions qu'il vaut mieux éviter d'utiliser pour vos noms de variables :
abs()
all()
any()
ascii()
bin()
bool()
breakpoint()
bytearray()
bytes()
callable()
chr()
classmethod()
compile()
complex()
delattr()
dict()
dir()
divmod()
enumerate()
eval()
exec()
filter()
float()
format()
frozenset()
getattr()
globals()
hasattr()
hash()
help()
hex()
id()
input()
int()
isinstance()
issubclass()
iter()
len()
list()
locals()
map()
max()
memoryview()
min()
next()
object()
oct()
open()
ord()
pow()
print()
property()
range()
repr()
reversed()
round()
set()
setattr()
slice()
sorted()
staticmethod()
str()
sum()
super()
tuple()
type()
vars()
zip()
Ne vous inquiétez pas : pas besoin de retenir tout ça par cœur. C'est dans ces cas de figure que la coloration syntaxique de votre éditeur de code vous sera bien utile.
Par exemple, une erreur très courante est de créer une variable pour une liste avec le mot list
, qui est une fonction réservée par Python :
list = [1, 2, 3, 4, 5]
liste = [1, 2, 3, 4, 5]
☝️ remarquez dans le code ci-dessus, le mot list
est affiché dans une couleur différente de liste
. On peut ainsi deviner avec la coloration syntaxique que le mot list
n'est peut-être pas un bon nom pour une variable 😉