Comment fonctionne la vérification du code au moment de la compilation et de l'exécution en Python

Python effectue une vérification du code lors de la compilation, mais une grande partie des vérifications, notamment les types de données, les noms de fonctions et d'autres erreurs potentielles, ne sont pas prises en compte tant que le code n'est pas effectivement exécuté. Cela implique que si votre code fait référence à une fonction définie par l'utilisateur qui n'existe pas, le code sera compilé sans erreur. L'erreur se produira uniquement lors de l'exécution, quand Python tentera d'exécuter le code qui fait appel à la fonction inexistante.

Prenons un exemple simple avec une fonction Python appelée myFunc, qui référence une autre fonction inexistante nommée DoesNotExist :

python
def myFunc(x): if x == 3: print(DoesNotExist(x)) else: print('x: ', x)

Le code ci-dessus ne générera aucune erreur lors de la compilation. Cependant, si la fonction myFunc est appelée avec la valeur 3, une exception sera levée au moment de l'exécution de la première instruction print(), car Python tentera d'exécuter DoesNotExist(x) et échouera.

Cette particularité du langage Python souligne l'importance de bien comprendre la différence entre la compilation et l'exécution d'un programme, surtout lorsqu'il s'agit de gérer les erreurs et les exceptions.

Une fois que vous avez acquis ces notions fondamentales (comme l'utilisation de l'interpréteur Python et l'exécution de modules personnalisés), il est nécessaire d'explorer les types de données primitifs que Python prend en charge, pour mieux comprendre comment manipuler et travailler avec ces types de données dans vos programmes.

Les types de données primitifs en Python

Python prend en charge plusieurs types de données primitifs : les nombres (entiers, flottants, et exponentiels), les chaînes de caractères, et les dates. En plus de ces types de base, Python propose également des types de données plus complexes tels que les listes (ou tableaux), les tuples et les dictionnaires, qui sont détaillés dans le chapitre suivant.

Il est essentiel de bien maîtriser ces types de données pour éviter les erreurs et pour rendre votre code plus efficace. Le langage Python permet de manipuler ces types de manière intuitive et puissante. Voici quelques exemples pratiques d’opérations arithmétiques et de conversions sur les types de données numériques.

Travailler avec les nombres

Python permet d'effectuer des opérations arithmétiques classiques de manière simple, comme dans d'autres langages de programmation. Par exemple, l'addition, la multiplication et la division :

python
>>> 2 + 2
4 >>> 4 / 3 1 >>> 3 * 8 24

Notez que la division (/) entre deux entiers donne un résultat qui est tronqué à l'entier inférieur (c'est-à-dire une division entière). Si vous avez besoin d'un résultat flottant, il est important de vous assurer que vous travaillez avec des nombres à virgule flottante.

De plus, Python propose des outils pratiques pour convertir des chaînes de caractères en nombres, grâce aux fonctions int() et float() :

python
word1 = "123"
word2 = "456.78" var1 = int(word1) var2 = float(word2) print("var1: ", var1, " var2: ", var2)

Si vous tentez de convertir une chaîne qui ne représente pas un nombre valide, Python lèvera une exception, d'où l'importance de gérer ces erreurs à l'aide de blocs try/except.

Travailler avec d'autres bases numériques

Python travaille par défaut avec des nombres en base 10, mais il permet facilement de convertir ces nombres dans d'autres bases, comme la base 2, 8, ou 16 :

python
x = 1234 >>> bin(x) '0b10011010010' >>> oct(x) '0o2322' >>> hex(x) '0x4d2'

Vous pouvez également utiliser la fonction format() pour supprimer les préfixes 0b, 0o, ou 0x, ce qui peut être utile pour des affichages plus propres.

La fonction chr() et les caractères ASCII

La fonction chr() de Python permet de convertir un entier en un caractère correspondant, basé sur la table ASCII ou Unicode. Par exemple, pour afficher la lettre 'A' à partir de son code ASCII (65) :

python
>>> x = chr(65)
>>> x 'A'

Cela vous permet de manipuler des caractères et des chaînes de manière plus flexible. De plus, Python 3 utilise l'encodage UTF-8 par défaut, ce qui vous permet de gérer facilement des caractères non ASCII.

La fonction round() et la manipulation des décimales

Python offre la fonction round() pour arrondir des nombres flottants à un certain nombre de décimales :

python
>>> round(1.23, 1) 1.2 >>> round(-3.42, 1) -3.4

Vous pouvez aussi formater les nombres à une précision donnée avec la fonction format(), ce qui permet de contrôler l'affichage des décimales dans vos programmes :

python
>>> format(1234.56789, '0.2f')
'1234.57'

Travailler avec des fractions

Python prend en charge le module fractions, qui permet de travailler avec des fractions de manière naturelle. Par exemple, voici comment ajouter et multiplier des fractions :

python
from fractions import Fraction >>> a = Fraction(5, 4) >>> b = Fraction(7, 16) >>> a + b Fraction(27, 16) >>> a * b Fraction(35, 64)

L'utilisation des fractions est particulièrement utile dans les calculs exacts où l'arithmétique des nombres à virgule flottante pourrait introduire des erreurs d'arrondi.

Conclusion

La compréhension des types de données primitifs et des outils fondamentaux de Python est cruciale pour la programmation dans ce langage. Les opérations arithmétiques de base, la gestion des bases numériques, ainsi que les manipulations de caractères et de fractions vous fourniront une base solide pour résoudre une variété de problèmes. En outre, la gestion des erreurs et des exceptions, en particulier lors de la conversion de types de données, est essentielle pour éviter des pannes lors de l'exécution du programme.