2017-09-05 96 views
-4

只看到以下内容:我应该叫符号“|”的管道或位操作

def update_page_info(url): 
    # fetch_page -> parse_page -> store_page 
    chain = fetch_page.s(url) | parse_page.s() | store_page_info.s(url) 
    chain() 

@app.task() 
def fetch_page(url): 
    return myhttplib.get(url) 

@app.task() 
def parse_page(page): 
    return myparser.parse_document(page) 

@app.task(ignore_result=True) 
def store_page_info(info, url): 
    PageInfo.objects.create(url=url, info=info) 
+1

*字符*是管道或垂直条,*操作*是按位或,所以我倾向于称它为管道,除非我具体谈论操作 –

+0

@NickA您能否给我一个链接,可以学习更多关于操作?我只是感到困惑,因为没有在教程中看到它,只引入了按位运算符。 – Assassin

+0

参见@ Martijn的答案,他链接了一些有用的资源,我特别检查了标记为“二进制位运算符”的第二个链接 –

回答

5

你有一个管字符(更准确地称为vertical bar character),其在使用时表达式称为binary bitwise operator

|操作者产生的按位(含)OR其参数,这必须是整数。

操作是通过__or__ special method,这是SQLAlchemy的使用来构建查询,在你的例子代码所示(对比的boolean or operator,不能挂钩到由于其短路行为hookable )。

+0

注意该字符被称为管道,因为它最初用于在Unix中共同管道命令 –

+0

运算符是可通过__or__特殊方法钩住。你能详细说明这条线的意思吗? –

+0

那么这个用法不是一个python定义? – Assassin

相关问题