10
votes

Y a-t-il des effets secondaires dans Python en utilisant `si A == B == C: passe;`?

if a == b == c:
    # do something
elif a == b != c:
    # do something
elif a != b == c.
    # do something
etc...

2 commentaires

Non, il n'y a pas d'effets secondaires.


Le mot sidefefeffects est trompeur ici. En tant que terme technique, il est évidemment peut tout si possible de SIDEFEFFETS - si a , b ou / et c est Instances de classes, pour lesquelles les opérateurs de comparaison sont remplacés d'une manière qui provoque des dissipateurs.


4 Réponses :


14
votes

de La documentation :

Les comparaisons peuvent être chaînées de manière arbitraire; Par exemple, x

Il ne devrait y avoir aucun effet secondaire.


0 commentaires

11
votes

Il ne devrait y avoir aucun effet secondaire avant de l'utiliser de ce type.

mais prenez soin de choses comme: xxx

car il va rompre en chain et vous comparera true ou false et C valeur).


1 commentaires

Merci d'avoir mentionné la parenthèse. J'ai raté, que cela briserait le salon!



6
votes
s = set([a, b, c])

if len(s) == 1:
    print 'All equal'
elif len(s) == 3:
    print 'All different'
else:
    l = list(s)
    print '%s and %s are different' % (l[0], l[1])

0 commentaires

-2
votes

Y a-t-il un commentaire sur x! = y! = z?

Je pourrais utiliser le moyen stupide pour obtenir une réponse correcte. P>

def aligndigits(list):

   return ((x, y , z ) for x in list for y in list for z in list if   x != y and y != z and x != z )


0 commentaires