Melhor resposta
from math import copysign
sign = lambda x : copysign(1, x)
retornará -1 para sinal negativo e +1 para sinal positivo. você pode substituir 1 por 1. para obter uma saída de ponto flutuante
sign = lambda x : (x >> 63) +1
sign(10) # 1
sign(-32) #0
sign(o) #1
sign(10**15) #1L
se você tiver apenas números que podem ser representados como 32 ints, será suficiente fazer x >> 31, mas você obterá números maiores que um para números com mais de 32 bits (465662 para sinal (10 ** 15)). Você também pode fazer x >> 128 para ficar mais seguro
Resposta
Aqui estão algumas linhas! 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
[usando if-else, OP não pediu isso, mas para leitores]
Todas as soluções funcionam em Python2 e 3 casos de teste
print sign(12)
print sign(0)
print sign(-13)
print sign(-0)