Meilleure réponse
 from math import copysign 
 sign = lambda x : copysign(1, x) 
renverra -1 pour le signe négatif et +1 pour le signe positif. vous pouvez remplacer 1 par 1. pour obtenir une sortie en virgule flottante
 sign = lambda x : (x >> 63) +1 
 sign(10) # 1 
 sign(-32) #0 
 sign(o) #1 
 sign(10**15) #1L 
si vous navez que des nombres qui peuvent être représentés par 32 entiers, il suffira de faire x >> 31 mais alors vous obtenez des nombres plus grands que un pour les nombres de plus de 32 bits (465662 pour le signe (10 ** 15)). Vous pouvez également faire x >> 128 pour être plus sûr
Réponse
 Voici une doublure! sign = lambda a: (a>0) - (a<0) OU sign = lambda a: (a>>127)|(not not a) OU sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [en utilisant if-else, OP na pas demandé ceci mais pour les lecteurs] 
Toutes les solutions fonctionnent dans les cas de test Python2 et 3
 print sign(12) 
 print sign(0) 
 print sign(-13) 
 print sign(-0)