在每个线程中,我想通过函数get_next_page_data
以递归的方式获取所有数据列表,当我打印出指定数据的长度时,预期的初始参数return_data
应该是{{1} }
但输出显示:
[]
为什么在这种情况下我的线程锁定失败?
0 831
831 387
1218 1000
2218 1000
3218 529
3747 1000
4747 1000
5747 458
6205 1000
7205 1000
8205 616
8821 378
9199 188
9387 1000
10387 957
答案 0 :(得分:0)
问题不在于锁-而是默认参数。仅在执行函数定义时评估一次。
您的所有线程共享一个实例return_data
。
查看一个简单的示例:
def append_to_list(el, list_to_append=[]):
list_to_append.append(el)
return list_to_append
print(append_to_list(1))
print(append_to_list(2))