任何人请解释代码行
es_question = (q.as_elasticsearch_dict() for q in questions)
for ok, result in streaming_bulk(
get_client(),
es_question,
index = settings.ES_INDEX,
raise_on_error = False
):
if not ok:
all_ok = False
action, result = result.popitem()
logger.error(FAILED_TO_LOAD_ERROR.format(result['_id'], result))
我想知道es_questions上的for循环以及es_question下面的代码行的解释
您的问题在以下代码行上:
for ok, result in streaming_bulk( get_client(), es_question, index = settings.ES_INDEX, raise_on_error = False ):
首先让我们看一个简单的例子:
my_list=["a","b","c","d"]
for x in my_list:
print(x)
这将循环遍历my_list
中的值,将这些值分配给变量x
。现在让我们来看一个稍微复杂的示例。
my_list=[("a",1),("b",2),("c",3),("d",4)]
for x,y in my_list:
print(x)
print(y)
在这种情况下,for循环仍在my_list
中的4个项中的每个循环,但它也在执行tuple unpacking,因此变量x获取元组中第一个项的值(字母),变量y获取元组中第二项的值(数字)。
最后,还有另一件事要看:
streaming_bulk(
get_client(),
es_question,
index = settings.ES_INDEX,
raise_on_error = False)
这只是一个函数调用(分布在多行中)。该函数或者返回清单/元组的清单/元组(每个都有两个值),类似于我的上一个示例,或者此函数是一个生成器函数,每次通过循环都会产生两个值。