Vous devez savoir qu'il est important de ne pas créer de noms de variables qui pourraient rentrer en conflit avec des instructions de Python.

Il est donc fortement déconseillé (même si c'est possible et que Python ne vous empêchera pas de le faire) de créer une variable print = 5 par exemple.

👉 La même règle s'applique aux modules !

Dans les prochaines parties, je vous présente plusieurs modules, comme le module random.

Plusieurs étudiants ont créé un fichier random.py pour tester ce module.

👉 Ce faisant, vous allez écraser le module random de Python !

Quand vous allez faire import random, Python importera votre fichier au lieu du fichier random.py qui est contenu dans les sources de Python.

Vous aurez donc logiquement une erreur qui vous indique que les fonctions que vous souhaitez utiliser n'existent pas :

Traceback (most recent call last):
  File "/Users/thibh/Documents/random.py", line 1, in <module>
    import random
  File "/Users/thibh/Documents/random.py", line 3, in <module>
    nombre = random.randint(1, 5)
AttributeError: module 'random' has no attribute 'randint'

L'erreur module 'random' has no attribute 'randint' signifie que Python n'a pas trouvé la fonction randint à l'intérieur du module random, ce qui est normal puisque je l'ai écrasé en créant le fichier random.py.

Faites donc bien attention à cela.

Bien entendu, en tant que débutant, vous ne pouvez pas connaître le nom de tous les modules.

Il se peut donc que vous créiez par inadvertance un fichier qui a le même nom qu'un module Python existant.

Restez attentif donc à l'erreur ci-dessus en cas de problème.

Pour vous aider, voici une liste (non exhaustive) des principaux modules de la librairie standard de Python.

Ce sont autant de noms qu'il faut éviter d'utiliser pour vos propres modules :

abc
aifc
argparse
array
ast
asynchat
asyncio
asyncore
atexit
audioop
base64
bdb
binascii
binhex
bisect
builtins
bz2
calendar
cgi
cgitb
chunk
cmath
cmd
code
codecs
codeop
colorsys
compileall
configparser
contextlib
contextvars
copy
copyreg
crypt
csv
ctypes
dataclasses
datetime
decimal
difflib
dis
distutils
doctest
dummy_threading
email
encodings
ensurepip
enum
errno
faulthandler
fcntl
filecmp
fileinput
fnmatch
formatter
fractions
ftplib
functools
gc
getopt
getpass
gettext
glob
grp
gzip
hashlib
heapq
hmac
html
http
imaplib
imghdr
imp
importlib
inspect
io
ipaddress
itertools
json
keyword
lib2to3
linecache
locale
logging
lzma
mailbox
mailcap
marshal
math
mimetypes
mmap
modulefinder
msilib
msvcrt
multiprocessing
netrc
nis
nntplib
numbers
operator
optparse
os
ossaudiodev
parser
pathlib
pdb
pickle
pickletools
pipes
pkgutil
platform
plistlib
poplib
posix
pprint
profile
pstats
pty
pwd
py_compile
pyclbr
pydoc
queue
quopri
random
re
readline
reprlib
resource
rlcompleter
runpy
sched
secrets
select
selectors
shelve
shlex
shutil
signal
site
smtpd
smtplib
sndhdr
socket
socketserver
spwd
sqlite3
ssl
stat
statistics
string
stringprep
struct
subprocess
sunau
symbol
symtable
sys
sysconfig
syslog
tabnanny
tarfile
telnetlib
tempfile
termios
test
textwrap
threading
time
timeit
tkinter
token
tokenize
trace
traceback
tracemalloc
tty
turtle
turtledemo
types
typing
unicodedata
unittest
urllib
uu
uuid
venv
warnings
wave
weakref
webbrowser
winreg
winsound
wsgiref
xdrlib
xml
xmlrpc
zipapp
zipfile
zipimport
zlib