Ce n' |= (ior) faire en Python?
Google ne me laisse pas de recherche |= donc je vais avoir du mal à trouver de la documentation pertinente. Quelqu'un sait?
- Je pense qu'il est pertinent de souligner, que dans la ville ensoleillée de la réponse ci-dessous, qui
|
est également utilisé comme l'ensemble de l'union opérateur - en 2019, Google vous permettra de rechercher` |=` ! 🙂
Vous devez vous connecter pour publier un commentaire.
En Python, et de nombreux autres langages de programmation,
|
est le au niveau du bit OU de l'opération.|=
est à|
comme+=
est à+
, c'est à dire une combinaison de l'opération et asignment.var |= value
est court pourvar = var | value
Lorsqu'il est utilisé avec des ensembles de il effectue l'opération union.
|=
a été utilisé dans l'ensemble du contexte, et il n'était pas jusqu'à ce que j'ai foiré autour et a trouvé que j'ai remarqué cette réponse a été ici aussiC'est juste de l'un OU de l'opération entre la variable et l'autre. Étant
T=True
etF=False
, voir la sortie graphiquement:Par exemple:
|
est un bit à bit ou opérateur pour les entiers, pas spécifiquement d'un opérateur booléen, et pour rien d'autre quebool
s, il ne sera pas vraiment produireTrue
ouFalse
sorties.bool
est une sous-classe deint
, et d'être gentil, ils ont surchargé pourbool
de continuer à produireTrue
/False
sorties, mais dans la plupart des cas, les opérations booléennes doit être fait avecor
, pas|
. Utilisations normales pour|
sont au niveau du bit-ou, ou de l'union. De meilleurs exemples d'utilisation serait quelque chose commea = 0b1001; a |= 0b0010; print(bin(a))
qui produit0b1011
.|=
effectue une en place, au niveau du bit OU de l'exploitation et effectue également union opération de Python ensembles.Par exemple, l'union de deux ensembles
x
ety
part de la suite des expressions équivalentes:où la valeur finale de
x
est équivalent par:Voir aussi la section B. 8 de Plongée en Python 3 sur les méthodes particulières de Python opérateurs.
Voici quelques exemples de comparaison OU de l' (
|
) et le directe OU (|=
) appliqué à des ensembles:Voici un exemple de la surcharge de l'
__ior__()
méthode pour itérer iterables dans unMutableSet
classe de base abstraite. Voir aussi sous-classés et appliquée dans Raymond Hettinger de OrderedSet recette (voir les lignes 3 et 10 respectivement). Voici une fil sur Python-idées sur pourquoi utiliser|=
pour mettre à jour un ensemble.Il effectue un binaire OU binaire de la main gauche et de droite de l'affectation, puis stocke le résultat dans la partie gauche de la variable.
http://docs.python.org/reference/expressions.html#binary-bitwise-operations
Pour donner un cas d'utilisation (après avoir passé du temps avec les autres réponses):
Fondamentalement
any
sans court-circuit: peut être utile si vous avez besoin de traiter chaque élément et d'enregistrer au moins une réussite, etc.Voir aussi les mises en garde à l' cette réponse
C'est au niveau du bit ou.
Disons que nous avons
32 |= 10
, image 32 et 10 est binaire.Maintenant parce que | est ou, faire un or sur les deux numéros de
je.e 1 ou 0 --> 1, 0 ou 0 --> 0. Continuer cette bas de la chaîne
Maintenant modifier le fichier binaire en nombre décimal, 10 1010 = 42.
Pour |=, pensez à des exemples connus,
x +=5
. Cela signifiex = x + 5,
par conséquent, si nous avonsx |= 5
, cela signifiex = x bitwiseor with 5
.32 |= 10
mais plutôt32 | 10
. Juste pour clarifier la situation pour les futurs lecteurs 🙂En Python,|=(ior) fonctionne comme union de l'opération.
comme si x=5 et x|=5 alors la valeur sera d'abord le convertir en binaire de la valeur, puis l'union opération à effectuer et nous obtenons la réponse 5.