[英]TypeError: 'int' object is not iterable when passing arguments to function
我有一個 function,它根據過濾的查詢集進行一些計算。 我正在尋求將 arguments 傳遞給 function 以通知過濾器。 基礎知識:
測試 output 的視圖:
def TestPlayerData(request):
data = PlayerData(1,2)
print(data)
return HttpResponse(data)
調用的 function 是:
def PlayerData(game, player):
"""This is a function based on EventFilterView"""
opponent = [2]
qs = Event.objects.filter(g_players=player).filter(g_name__in=game).filter(g_players__in=opponent)
count_wins = len(qs.filter(g_winner=player))
count_played = len(qs.filter(g_players=player))
if count_played == 0:
win_ratio = 'na'
else:
win_ratio = count_wins/count_played
return count_wins, count_played, win_ratio
收到的錯誤:“TypeError: 'int' object is not iterable”
但是,如果我明確命名 function 中的變量而不是從視圖中傳遞它們,則 function 會按預期工作——就像這樣:
def PlayerData():
"""This is a function based on EventFilterView"""
game = [1]
player =2
opponent = [2]
qs = Event.objects.filter(g_players=player).filter(g_name__in=game).filter(g_players__in=opponent)
count_wins = len(qs.filter(g_winner=player))
count_played = len(qs.filter(g_players=player))
if count_played == 0:
win_ratio = 'na'
else:
win_ratio = count_wins/count_played
return count_wins, count_played, win_ratio
我顯然在這里遺漏了一些基本的 python 理解,並希望能指出正確的方向。
在第一個代碼塊中,您傳遞data = PlayerData(1,2)
然而, PlayerData()
最終會在參數上使用.filter()
,而您不能在 int 上執行此操作,這會引發 TypeError。
在您在事后編寫自己的# 的最后一個示例中,您將游戲作為列表傳遞,其中第一個代碼塊中的游戲是一個 int。 當您手動執行時,您正在正確地傳遞它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.