Python中的管道字符
Posted
技术标签:
【中文标题】Python中的管道字符【英文标题】:Pipe character in Python 【发布时间】:2011-08-24 17:23:19 【问题描述】:我看到函数调用中使用了“管道”字符 (|
):
res = c1.create(go, come, swim, "", startTime, endTime, "OK", ax|bx)
ax|bx
中的管道是什么意思?
【问题讨论】:
这对你来说应该很有趣***.com/questions/28252585/… 【参考方案1】:这也是联合集运算符
set([1,2]) | set([2,3])
这将导致set([1, 2, 3])
【讨论】:
这可能比按位运算多更常见。【参考方案2】:它是整数的位或。例如,如果ax
或bx
之一或两者为1
,则计算结果为1
,否则为0
。它也适用于其他整数,例如15 | 128 = 143
,即二进制中的00001111 | 10000000 = 10001111
。
【讨论】:
Python 没有逻辑或运算符。5 = 101
, 7 = 111
, 101 | 111 = 111 = 7
@Ignacio:Python 没有逻辑或运算符?!那你怎么称呼or
?
@zeekay:正确。 and
和 or
总是返回它们的操作数之一,而不是总是返回 True
或 False
,因此是“合并”而不是“逻辑”。
迈克说了什么。更一般地,它使用第二个操作数调用第一个操作数的__or__
方法,因此您可以为自己的类定义其行为。【参考方案3】:
是的,以上所有答案都是正确的。
虽然“|”可以找到更多奇特的用例,但如果它是一个类使用的重载运算符,例如,
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
在这个特定的用例中,管道“|” operator 可以更好地被认为是 unix 管道操作员。但我同意,按位运算符和联合集运算符是“|”更常见的用例在 Python 中。
【讨论】:
【参考方案4】:Bitwise OR.
【讨论】:
【参考方案5】:在Python 3.9 中,管道被增强为合并(联合)字典。
>>> d = 'spam': 1, 'eggs': 2, 'cheese': 3
>>> e = 'cheese': 'cheddar', 'aardvark': 'Ethel'
>>> d | e
'spam': 1, 'eggs': 2, 'cheese': 'cheddar', 'aardvark': 'Ethel'
>>> e | d
'cheese': 3, 'aardvark': 'Ethel', 'spam': 1, 'eggs': 2
【讨论】:
【参考方案6】:这是一个按位或。
Python 中所有运算符的文档都可以在 Python 文档的Index - Symbols 页面中找到。
【讨论】:
以上是关于Python中的管道字符的主要内容,如果未能解决你的问题,请参考以下文章
管道到头部导致从 python 调用的 shell 脚本中的管道损坏