Google no me deja buscar | = así que tengo problemas para encontrar documentación relevante. ¿Alguien sabe?¿Qué hace | = (ior) en Python?
Respuesta
En Python, y en muchos otros lenguajes de programación, |
es el bitwise-OR operation. |=
es a |
como +=
es a +
.
¿Podría darnos un ejemplo? – minerals
Realiza una O binaria bit a bit de los lados izquierdo y derecho de la asignación, luego almacena el resultado en la variable de la izquierda.
http://docs.python.org/reference/expressions.html#binary-bitwise-operations
esto es sólo una operación OR entre la variable actual y la otra. Siendo T=True
y F=False
, ver la salida gráfica:
r s r|=s
--------------
T T T
T F T
F T T
F F F
Por ejemplo:
>>> r=True
>>> r|=False
>>> r
True
>>> r=False
>>> r|=False
>>> r
False
>>> r|=True
>>> r
True
Esto da una especie de impresión deformada del operador; '|' es un operador bitwise-or para enteros, no específicamente un operador booleano, y para cualquier cosa que no sea 'bool's, en realidad no producirá salidas' True' o 'False'. 'bool' es una subclase de' int', y para ser agradable, lo sobrecargaron para 'bool' para seguir produciendo salidas' True'/'False', pero en la mayoría de los casos, las operaciones booleanas deberían hacerse con' o', no '|'. Los usos normales para '|' son bitwise-or, o set-union. Mejores ejemplos de uso serían algo como 'a = 0b1001; a | = 0b0010; print (bin (a)) 'que produce' 0b1011'. – ShadowRanger
Cuando se utiliza con conjuntos se realiza la operación de unión.
Estaba leyendo un código y el '| =' se usó en el contexto establecido, y no fue hasta que cometí un error y me di cuenta de que esta respuesta estaba aquí también – TallChuck
|=
realiza un inplace, bitwise OR operation y también se aplica a Python sets.
Por ejemplo, el union de dos conjuntos x
y y
comparten las siguientes expresiones equivalentes:
>>> x = x | y # (1)
>>> x |= y # (2)
>>> x.__ior__(y) # (3)
donde el valor final de x
es equivalente ya sea por:
- una asignado operación O
- una operación OR en el lugar
- inplace O operación a través del método especial
Consulte también section B.8 of Dive in Python 3 sobre métodos especiales de operadores de Python.
He aquí algunos ejemplos que comparan OR (|
) y la inplace OR (|=
) aplicada a los conjuntos:
>>> x = set("abc")
>>> y = set("def")
>>> # OR, |
>>> x | y
{'a', 'b', 'c', 'd', 'e', 'f'}
>>> x # `x` is unchanged
{'a', 'b', 'c'}
>>> # Inplace OR, |=
>>> x |= y
>>> x # `x` is reassigned
{'a', 'b', 'c', 'd', 'e', 'f'}
Aquí es un ejemplo de overloading the __ior__()
method para iterar iterables en una clase base abstracta MutableSet
. Véalo sub-clasificado y aplicado en R. Hettinger's OrderedSet recipe (see lines 3 and 10 respectively). Aquí hay un thread on Python-ideas sobre por qué usar |=
para actualizar un conjunto.
Es a nivel de bits o. Digamos que tenemos 32 |= 10
, las imágenes 32 y 10 son binarias.
32 = 10 0000
10 = 00 1010
Ahora porque | es o, haga un bitwise o en los dos números
es decir 1 o 0 -> 1, 0 o 0 -> 0.Continuar este abajo en la cadena
10 0000 | 00 1010 = 10 1010.
Ahora cambia el binario en un número decimal, 10 1010 = 42.
Para | =, pensar en los ejemplos conocidos, x +=5
. Significa x = x + 5,
, por lo tanto, si tenemos x |= 5
, significa x = x bitwiseor with 5
.
- 1. ¿Qué es un archivo IOR, qué hace y cómo funciona?
- 2. ¿Qué hace% a las cadenas en Python?
- 3. ¿Qué hace el rendimiento en Python 2.7?
- 4. En python, ¿qué hace len (list)?
- 5. ¿Qué hace exactamente + = do en python?
- 6. ¿Qué hace el objeto Python Ellipsis?
- 7. ¿Qué hace la evaluación de Python()?
- 8. ¿Qué hace el operador de intercalación (^) en Python?
- 9. ¿Qué hace el operador <> en python?
- 10. ¿Qué hace el método __init __() del objeto en python?
- 11. ¿Qué hace% en JavaScript?
- 12. ¿Qué hace% {} en Ruby?
- 13. ¿Qué hace == en Ruby?
- 14. ¿Qué hace '@_' en Perl?
- 15. ¿Qué hace [:]?
- 16. AKS Primes algoritmo en Python hace
- 17. ¿Qué hace el operador unario en numpy?
- 18. ¿Qué hace la versión de __build_class__ de Python?
- 19. ¿Qué hace la optimización de Python (-O o PYTHONOPTIMIZE)?
- 20. ¿Qué hace typedef en C++
- 21. ¿Qué hace 'zoom' en CSS?
- 22. ¿Qué hace "/" en PL/SQL?
- 23. ¿Qué hace LayoutInflater en Android?
- 24. ¿Qué hace this.async() en JavaScript
- 25. ¿Qué hace? en C significa?
- 26. ¿Qué hace ~~ en JavaScript/node.js?
- 27. ¿Qué hace addListener en node.js?
- 28. ¿Qué hace "con" en JavaScript?
- 29. ¿Qué hace glLoadIdentity() en OpenGL?
- 30. strdup() - ¿qué hace en C?
Creo que es relevante señalar, como en la respuesta de sunny a continuación, que '|' también se usa como el operador de conjunto de conjuntos – TallChuck