Outils pour utilisateurs

Outils du site


verifications_types

Fonctions de vérification de types

Au fur et à mesure que les versions de Python évoluent, il y a des techniques de programmation qui deviennent progressivement obsolètes, ou tout au moins de moins en moins adaptées.

Par exemple, le test “type(ch)==str” posera problème pour les chaînes de caractère encodées en unicode.

Je me suis donc donné quelques fonctions simples de vérification de types en utilisant le module “types” et la fonction “isinstance()”.

Les voilà:

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import types
 
def estentier(n):
    """estentier(n): dit si une variable est un nombre entier ou un entier long (renvoie True ou False)"""
    return isinstance(n,(types.IntType,types.LongType))
 
def estnombre(x):
    """estnombre(x): dit si une variable est un nombre entier, long ou flottant (renvoie True ou False)"""
    return isinstance(x,(types.IntType,types.LongType,types.FloatType))
 
def estchaine(t):
    """estchaine(t): dit si une variable est une chaîne (unicode ou non) (renvoie True ou False)"""
    return isinstance(t,(types.StringTypes))
 
def estliste(L):
    """estliste(L): dit si une variable est une liste (renvoie True ou False)"""
    return isinstance(L,(types.ListType))
 
def esttuple(T):
    """esttuple(T): dit si une variable est un tuple (renvoie True ou False)"""
    return isinstance(T,(types.TupleType))
 
def estdict(D):
    """estdict(D): dit si une variable est un dictionnaire (renvoie True ou False)"""
    return isinstance(D,(types.DictType))
 
def estfonction(fn):
    """estfonction(fn): dit si f est un nom de fonction intégrée, utilisateur ou lambda (renvoie True ou False)"""
    return isinstance(fn,(types.BuiltinFunctionType,types.FunctionType))

En ce qui concerne la fonction estentier(), j'en utilise quelquefois une qui accepte en plus les flottants sans décimale (comme 12.0):

def estentier(n):
    """estentier(n): dit si une variable est un nombre entier ou entier long ou flottant sans décimale (renvoie True ou False)"""
    return isinstance(n,(types.IntType,types.LongType)) or (isinstance(n,types.FloatType) and (int(n)==n))

verifications_types.txt · Dernière modification: 2008/05/08 20:28 par tyrtamos

Outils de la page