Constante en Python

Messages postés
106
Date d'inscription
vendredi 8 mars 2019
Statut
Membre
Dernière intervention
3 septembre 2019
- - Dernière réponse : [Dal]
Messages postés
5253
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
21 octobre 2019
- 26 mars 2019 à 11:51
J'aurais aimé savoir comment on déclare une constante en Python car j'ai cru comprendre que cela n'existait pas à proprement parler dans ce langage s'il vous plait

Et est-il possible de déclarer un def pour une procédure ou cela est juste réservé au fonction svp ?

Merci
Afficher la suite 

3 réponses

Messages postés
106
Date d'inscription
vendredi 8 mars 2019
Statut
Membre
Dernière intervention
3 septembre 2019
1
0
Merci
Slt,

je dois faire ça:

const: N 10


Que dois-je faire ? déclarer un variable globale svp ?

Merci
Commenter la réponse de jojol_8144
Messages postés
5253
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
21 octobre 2019
811
0
Merci
Salut,

En dehors du fait que déclarer une variable globale avec un nom aussi courant que N est une mauvaise idée, la portée de la variable (scope) n'a rien à voir avec ton problème. Si tu as besoin d'une portée globale, tu déclareras ton objet globalement, sinon, cela ne sera pas nécessaire.

Python gère des objets, qui ont des comportements donnés. Un programmeur Python pourrait se contenter de définir une variable
N = 10
. A ce moment là, effectivement, il n'y a pas de garantie, qu'ailleurs le programme ne modifiera pas la valeur associée à N, ou même son type.

Une convention fréquente est que les noms de constantes sont représentés en lettres CAPITALES. C'est un moyen d'avertir le programmeur qu'il n'est pas sensé changer celle-ci.

Si tu veux que la valeur associée ne puisse être changée, ni son type, tu peux utiliser d'autres objets Python dont le comportement est d'être immuables.

Un exemple serait d'utiliser un Enum

https://docs.python.org/3/library/enum.html

from enum import IntEnum

class Consts(IntEnum):
    FREEZING = 0
    BOILING = 100

print('Boiling temperature is {}'.format(Consts.BOILING))

# the following line would be trying
# to change boiling temperature and
# generates an exception
Consts.BOILING = 212

s'exécute correctement jusqu'à la ligne 12 :

$ python3 35943310.py
Boiling temperature is 100
Traceback (most recent call last):
  File "35943310.py", line 12, in <module>
    Consts.BOILING = 212
  File "/usr/lib/python3.5/enum.py", line 311, in __setattr__
    raise AttributeError('Cannot reassign members.')
AttributeError: Cannot reassign members.

Tu peux aussi utiliser des tuples, qui sont immuables, ou d'autres procédés.

Dal
Commenter la réponse de [Dal]
Messages postés
5253
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
21 octobre 2019
811
0
Merci
Concernant ta question sur les procédures ou fonctions (c'est une question qui n'a rien à voir avec ton intitulé...).

Contrairement à certains langages de programmation, qui peuvent disposer d'instructions différentes pour définir des fonctions et des procédures (comme Pascal), Python utilise la même instruction
def
pour définir des deux.

Une "procédure" serait juste une fonction définie par
def
qui se termine en exécutant sa dernière instruction sans rencontrer d'instruction
return
avec un argument, ou qui comporte une instruction
return
sans aucun argument, pour terminer immédiatement la fonction à cet endroit sans rien renvoyer de particulier.

Comme c'est quand même une fonction pour Python, une fonction s'exécutant comme décrit ci-dessus retourne quand même un objet : l'objet
None


https://docs.python.org/3/c-api/none.html

qui signifie "absence de valeur"

Dal
Commenter la réponse de [Dal]