python - libros - ¿Por qué 1+++ 2=3?
python web pdf (7)
1 + (+ (+ 2)) = 3
1 - (-2) = 3
1 - (- (- 2)) = -1
¿Cómo evalúa Python la expresión 1 +++ 2?
Cuantos ''+'' entre los que puse, está imprimiendo 3 como la respuesta. Por favor, ¿alguien puede explicar este comportamiento?
Y para 1--2 está imprimiendo 3 y para 1 --- 2 está imprimiendo -1
Creo que está siendo analizado como, la primera + como una operación binaria (agregar), y el resto como operaciones unarias (hacer positivo).
1 + (+(+2))
Es sencillo. No hay operadores de post-incremento o decremental posterior en Python.
Vea aquí: http://mail.python.org/pipermail/python-list/2006-January/361771.html / http://mail.python.org/pipermail/python-list/2006-January/361771.html
Los extra + ''s no son incrementos (como ++ a o a ++ en c ++). Solo están mostrando que el número es positivo.
No hay tal operador ++. Sin embargo, hay un operador unario y un operador unario. El operador unario + no tiene efecto en su argumento. El operador unario niega su operador o lo multiplica por -1.
+1
-> 1
++1
-> 1
Esto es lo mismo que + (+ (1))
1+++2
-> 3 Porque es lo mismo que 1 + (+ (+ (2))
Del mismo modo, puedes hacer --1 para significar - (-1) que es +1.
--1
-> 1
Para completar, no hay * opeartor unario. Entonces * 1 es un error. Pero hay un operador ** que es potencia de, toma 2 argumentos.
2**3
-> 8
Piénselo como 1 + (+1 * (+ 1 * 2))). El primer operador + es y los signos más que siguen son signo del segundo operando (= 2).
Al igual que 1 --- 2 es igual que 1 - - (- (2)) o 1- (-1 * (- 1 * (2))
Probando Unary Plus y Unary menos :
El operador unario - (menos) produce la negación de su argumento numérico.
El operador unario + (más) cede su argumento numérico sin cambios.
>>> +2
2
>>> ++2
2
>>> +++2
2
>>> -2
-2
>>> --2
2
>>> ---2
-2
>>> 1+(++2)
3
Tu expresión es la misma que:
1+(+(+2))
Cualquier expresión numérica puede estar precedida por -
para hacerla negativa, o +
para no hacer nada (la opción está presente para la simetría). Con signos negativos:
1-(-(2)) = 1-(-2)
= 1+2
= 3
y
1-(-(-2)) = 1-(2)
= -1
Veo que aclaró su pregunta para decir que proviene de un fondo C. En Python, no hay operadores de incremento como ++
y --
en C, que probablemente fue la fuente de su confusión. Para incrementar o disminuir una variable i
o j
en Python use este estilo:
i += 1
j -= 1