Je remarque que je peux faire des choses comme 2 << 5
obtenir 64 et 1000 >> 2
250.
Je peux aussi utiliser >>
dans print
:
print >>obj, "Hello world"
Que se passe-t-il ici?
python
syntax
operator-keyword
user3201152
la source
la source
<<
,>>
,&
,|
,~
et^
faire?Réponses:
Je pense que c'est une question importante et elle n'a pas encore de réponse (l'OP semble déjà connaître les opérateurs de quart). Laissez-moi essayer de répondre, l'opérateur >> dans votre exemple est utilisé à deux fins différentes. En termes c ++, cet opérateur est surchargé. Dans le premier exemple, il est utilisé comme opérateur au niveau du bit (décalage à gauche), tandis que dans le second scénario, il est simplement utilisé comme redirection de sortie. c'est à dire
2 << 5 # shift to left by 5 bits 2 >> 5 # shift to right by 5 bits print >> obj, "Hello world" # redirect the output to obj,
exemple
with open('foo.txt', 'w') as obj: print >> obj, "Hello world" # hello world now saved in foo.txt
mise à jour:
En python 3, il est possible de donner directement l'argument file comme suit:
print("Hello world", file=open("foo.txt", "a")) # hello world now saved in foo.txt
la source
__rshift__
et__lshift__
.Ce sont des opérateurs de décalage au niveau du bit.
Citant les documents :
Renvoie
x
avec les bits décalés vers la gauche de y places (et les nouveaux bits du côté droit sont des zéros). C'est la même chose que multiplierx
par2**y
.Retourne
x
avec les bits décalés vers la droite de y places. Cela revient à diviserx
par2**y
.la source
print bin(1)
,print bin(1 << 1)
,print bin(17)
,print bin(17 >> 1)
et ainsi de suite. Vous pouvez voir comment cela fonctionne sans explications.print >>obj, "Hello world"
2 << 5
et1000 >> 2
¯_ (ツ) _ / ¯La valeur binaire réelle de 12 est "00 1100" lorsque nous exécutons l'instruction ci-dessus. Décalage à gauche (décalage de 2 places vers la gauche) renvoie la valeur 48, sa valeur binaire est "11 0000".
La valeur binaire de 48 est "11 0000", après avoir exécuté l'instruction ci-dessus. Décalage vers la droite (décalage de 2 places vers la droite) renvoie la valeur 12, sa valeur binaire est "00 1100".
la source
L'autre cas impliquant
print >>obj, "Hello World"
est la syntaxe "print chevron" pour l'print
instruction en Python 2 (supprimée en Python 3, remplacée par l'file
argument de laprint()
fonction ). Au lieu d'écrire sur la sortie standard, la sortie est transmise à laobj.write()
méthode. Un exemple typique serait les objets fichier ayant unewrite()
méthode. Voir la réponse à une question plus récente: Double signe supérieur à Python .la source
Ce sont des opérateurs de décalage de bits qui existent dans de nombreux langages de programmation traditionnels,
<<
sont le décalage vers la gauche et>>
le décalage vers la droite, ils peuvent être illustrés comme le tableau suivant, supposons qu'un entier ne prenne qu'un octet en mémoire.| operate | bit value | octal value | description | | ------- | --------- | ----------- | -------------------------------------------------------- | | | 00000100 | 4 | | | 4 << 2 | 00010000 | 16 | move all bits to left 2 bits, filled with 0 at the right | | 16 >> 2 | 00000100 | 4 | move all bits to right 2 bits, filled with 0 at the left |
la source
Ce sont les opérateurs de quart
la source
<< Mean any given number will be multiply by 2the power for exp:- 2<<2=2*2'1=4 6<<2'4=6*2*2*2*2*2=64
la source