Si d'autre en fonction de l'existence de la fonction python arguments optionnels
J'ai écrit une fonction, comme suit, avec argument optionnel 'b'.
url dépend de l'existence de b.
def something(a, b=None)
if len(b) >= 1:
url = 'http://www.xyz.com/%sand%s' % (a, b)
else:
url = 'http://www.xyz.com/%s' (a)
Cela soulève une erreur lors de l' b=None
, en disant "objet de type" aucun type n'a pas de longueur"
Toutes les idées comment contourner ce problème?
ajouter Aucune vérification?
Ce qui devrait arriver si
Ce qui devrait arriver si
b
est ""
?
OriginalL'auteur snakesNbronies | 2012-05-12
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement utiliser
if b:
- cela exigera de la valeur à deux pasNone
et pas une chaîne vide/liste/whatever.OriginalL'auteur ThiefMaster
Vous pouvez simplement changer -
à
OriginalL'auteur theharshest
Sauf si vous avez vraiment besoin de vérifier la durée de
b
, pourquoi ne pas simplement faireSi vous devez également vérifier la longueur (donc le
else
partie est exécutée aussi sib == ""
), l'utilisationLa
and
opérateur courts-circuits, ce qui signifie que sib is None
, la deuxième partie de l'expression n'est même pas évalué, donc pas d'exception sera levée.OriginalL'auteur Tim Pietzcker
Pour évaluer la longueur de
b
quand il n'est pasNone
, changer laif
déclaration:En raison de la
and
opérateur,len(b)
ne sera pas évalué si le premier test (b is not None
) échoue. C'est à dire l'évaluation de l'expression est court-circuité.OriginalL'auteur Levon
Vous pouvez essayer ce code:
OriginalL'auteur Kuruvachan K. George