Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Un défaut du typage statique et déclaratif

3 réponses
Avatar
Méta-MCI
Bonjour !


Juste pour rappeler un avantage du système de typage de Python.

Dans un autre langage, moyennement typé (mélange de typage fort et de typage
faible), mais statique, et déclaratif, j'ai des problèmes de gestion de
variables, qui peuvent être déclarées, mais non affectées. Il faut donc
gérer un statut "unassigned" différent du "blank()" (qui est presque
équivalent au None).

Je me retrouve avec de trop nombreux cas de figure, qui nuisent à la
concision, et à la clarté du code. Il faut rajouter des tests, des
contrôles, des traitements, etc.

C'est quand même bien plus simple, avec Python : le symbole existe, ou
n'existe pas. C'est tout.


Ceux qui voudraient des déclarations en Python devraient bien regarder les
conséquences, avant de suggérer qq chose.

@+

MCI

3 réponses

Avatar
Amaury Forgeot d'Arc

Bonjour !


Juste pour rappeler un avantage du système de typage de Python.

Dans un autre langage, moyennement typé (mélange de typage fort et de typage
faible), mais statique, et déclaratif, j'ai des problèmes de gestion de
variables, qui peuvent être déclarées, mais non affectées. Il faut donc
gérer un statut "unassigned" différent du "blank()" (qui est presque
équivalent au None).

Je me retrouve avec de trop nombreux cas de figure, qui nuisent à la
concision, et à la clarté du code. Il faut rajouter des tests, des
contrôles, des traitements, etc.

C'est quand même bien plus simple, avec Python : le symbole existe, ou
n'existe pas. C'est tout.



Tout à fait d'accord. Et ça marche aussi bien pour une variable locale
que pour un attribut d'un objet ou d'un module.

Ceux qui voudraient des déclarations en Python devraient bien regarder les
conséquences, avant de suggérer qq chose.


Cependant, les endroits où des déclarations (optionnelles) ont été
proposées sont souvent des paramètres de fonctions.
(cf. les différents articles sur le blog de Guido:
http://www.artima.com/weblogs/viewpost.jsp?thread…551
)
Et là, le symbole existe forcément...

Ou bien avais-tu d'autres "suggestions" en ligne de mire ?

--
Amaury

Avatar
Méta-MCI
Bonjour !


déclarations (optionnelles) proposées ... paramètres de fonctions ... Et
là, le symbole existe forcément...




Pas sûr :


def fff(*par):
vret=0
if len(par)>0:
vret=par[0]
if len(par)>1:
vret=vret+par[1]
if len(par)>2:
vret=vret-par[2]
return vret


@+

Michel Claveau



Avatar
bruno at modulix
Méta-MCI wrote:
Bonjour !



déclarations (optionnelles) proposées ... paramètres de fonctions ... Et
là, le symbole existe forcément...





Pas sûr :


def fff(*par):
vret=0
if len(par)>0:
vret=par[0]
if len(par)>1:
vret=vret+par[1]
if len(par)>2:
vret=vret-par[2]
return vret



<mode="cretinesque">
Et ? le symbole 'par' existe, non ?-)
</mode>



NB: accessoirement, la convention est *args.
@+

Michel Claveau








--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"