呼叫的 API 是使用變數進行的results
:
results = service.users().messages().list(userId='me', labelIds=['INBOX', 'UNREAD']).execute()
回傳一個字典:
{'messages': [{'id': '182f01f99c14b435', 'threadId': '182ef213b5174c23'}, {'id': '182f0120c66cc135', 'threadId': '182ef214b5174c23'}], 'resultSizeEstimate': 2}
將空白串列和結果傳遞給函式:
message_list = []
def return_message(message_list, results):
messages_ = results.get('messages', [])
for message in messages_:
for k,v in message.items():
message_list.append(message)
return message_list
運行該函式,但我只能回傳 1 條附加訊息:
return_message(message_list, results)
print(message_list)
[{'id': '182f01f88c14b435', 'threadId': '182ef213b5154c23'}]
如何從函式的開頭回傳整個傳入的內容,以便將其 全部附加到?results
message_list
uj5u.com熱心網友回復:
因為你在ing 到你的串列return
之后就馬上ing。終止函式。因此,在第一次迭代中,您添加一個專案,然后函式回傳。append
return
將其更改為:
def return_message(message_list, results):
messages_ = results.get("messages", [])
for message in messages_:
for k, v in message.items():
message_list.append(message)
# return message_list
return message_list
uj5u.com熱心網友回復:
for message in messages_:
for k,v in message.items():
message_list.append(message)
return message_list
顯式return
陳述句立即終止函式執行并將回傳值發送回呼叫者代碼。由于該return
陳述句位于 內部for loop
,因此它在回圈的第一次迭代中終止。
要獲得完整的串列,return 陳述句應該在for loop
如下:
for message in messages_:
for k,v in message.items():
message_list.append(message)
return message_list
這里要注意的第二點是嵌套在這里for loop
實際上并沒有做任何事情(鑒于這是完整的代碼)。因此在此處呼叫該.append()
方法,會在串列中兩次插入相同的訊息。
您可以通過檢查條件陳述句或完全洗掉第二個 for 回圈來解決此問題。
最終答案
for message in messages_:
message_list.append(message)
return message_list
此外,
您可以簡單地使用該extend()
方法,甚至可以連接串列,因為變數的 bot 是串列。
使用extend()
message_list.extend(messages_)
連接
message_list = messages_
兩者都會給出相同的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/506855.html
上一篇:定義和評估遞減冪函式
下一篇:函式的NaN結果