web-dev-qa-db-fra.com

Caractère de canal dans Python

Je vois un caractère "pipe" (|) utilisé dans un appel de fonction:

res = c1.create(go, come, swim, "", startTime, endTime, "OK", ax|bx)

Quelle est la signification du tuyau dans ax|bx?

62
alwbtc

Il s'agit d'un OR au niveau du bit d'entiers. Par exemple, si l'un ou les deux ax ou bx sont 1, cela équivaut à 1, sinon à 0. Il fonctionne également sur d'autres entiers, par exemple 15 | 128 = 143, c'est à dire. 00001111 | 10000000 = 10001111 en binaire.

56
AhmetB - Google

C'est également l'opérateur de jeu d'unions

set([1,2]) | set([2,3])

Cela se traduira par set([1, 2, 3])

103
gui11aume
10

Oui, toutes les réponses ci-dessus sont correctes.

Bien que vous puissiez trouver des cas d'utilisation plus exotiques pour "|", s'il s'agit d'un opérateur surchargé utilisé par une classe, par exemple,

https://github.com/Twitter/pycascading/wiki#pycascading

input = flow.source(Hfs(TextLine(), 'input_file.txt'))
output = flow.sink(Hfs(TextDelimited(), 'output_folder'))

input | map_replace(split_words, 'Word') | group_by('Word', native.count()) | output

Dans ce cas d'utilisation spécifique, le tuyau "|" L'opérateur peut être mieux considéré comme un opérateur de tuyau Unix. Mais je suis d'accord, l'opérateur par bits et l'opérateur d'ensemble d'unions sont des cas d'utilisation beaucoup plus courants pour "|" en Python.

10
Tagar

C'est un bit ou.

La documentation pour tous les opérateurs dans Python peut être trouvée dans la page Index - Symboles de la documentation Python).

4
tzot