Mejor respuesta
from math import copysign
sign = lambda x : copysign(1, x)
devolverá -1 para el signo negativo y +1 para el signo positivo. puede reemplazar 1 con 1. para obtener una salida de punto flotante
sign = lambda x : (x >> 63) +1
sign(10) # 1
sign(-32) #0
sign(o) #1
sign(10**15) #1L
si solo tiene números que se pueden representar como 32 pulgadas, será suficiente hacer x >> 31 pero luego obtendrá números mayores que uno para números con más de 32 bits (465662 para el signo (10 ** 15)). También puede hacer x >> 128 para estar más seguro
Respuesta
¡Aquí hay algunas frases! sign = lambda a: (a>0) - (a<0)
O sign = lambda a: (a>>127)|(not not a)
O sign = lambda a: 1 if a>0 else -1 if a<0 else 0
[usando if-else, OP no solicitó esto, pero para los lectores]
Todas las soluciones funcionan en Python2 y 3 casos de prueba
print sign(12)
print sign(0)
print sign(-13)
print sign(-0)