Aucun vs Chaîne Vide en Python
J'ai une application qui se connecte à une base de données. Il est en cours d'exécution sous Python 2.7.
L'application est incompatible dans la façon dont elle utilise Aucun et "" pour remplir les variables qui n'ont pas de valeur. Je veux faire ce cohérente et essayez de mettre à jour le code d'une manière ou l'autre.
Pensée comme une base de données de personne je pense à Aucun comme même comme Nulle et suppose que ce serait le bon choix pour vider les variables mais alors cela provoque des problèmes lors de l'application fait des choses comme
if variable.upper() == "X":
#Do something
Comme cela déclenche une erreur si la variable n'est type.
Je peux faire
if variable is not None and variable.upper() == "X":
#Do something
Mais cela semble inutilement verbeux.
Est-il une meilleure pratique de la façon dont cela devrait être géré?
- Pour citer Le Zen de Python: Explicit est mieux qu'implicites.
Vous devez vous connecter pour publier un commentaire.
Vous pourriez couper vers le bas sur le code légèrement par le simple fait d'écrire
Si la variable n'est nul ou vide, alors il est équivalent à False.
est un peu moins verbeux. Il permettra également de traiter le Néant et le vide de la chaîne de la même manière si c'est quelque chose que vous voulez
Edit: Notez que cela n'avons différents sémantique de l'expression que vous avez posté dans la façon dont il gère les cordes à vide... c'est à dire dans votre expression du membre de droite de la et évalué si la variable est une chaîne vide, mais dans cette expression, il ne serait pas à la chaîne vide évalue à
False
si
(variable or '').upper() == 'X'
ouvariable and variable.upper() == 'X'
serait à la fois être un raccourci, mais c'est certainement pas exactement aussi compact que le code d'origine. Je crains que vous n'obtiendrez pas beaucoup mieux, mais.Vous pourriez faire
mais ultimatively qu'il ne changera pas pour autant. Peut-être l'origine de la distinction n'était pas incompatible du tout, mais plutôt très pragmatique dans le contexte?