为什么我的函数在理论上不应该覆盖变量? (Python 3.8)

Why is my function overwriting a variable, when it's theoretically not supposed to? (Python 3.8)

一个函数正在覆盖一个作为参数给它的变量。为什么?

这整个代码应该做什么:

当您将 used_cards_ids 传递给 generate_players_deck() 时,您正在向 used_cards_ids 提供 generate_players_deck()append 数据的主体,您已经别名temp_used_cards_ids

然后您从该函数的 return 语句中取回值,您将其存储在变量 temp_used_cards_ids 中,然后 extend temp_used_cards_ids,这实际上是 used_cards_ids,实质上改变了您两次传入的列表。

当您将列表作为函数参数传递时,您传递的不是列表的,而是传递对原始列表的引用list. 这可能是您感到困惑的地方,或者可能是变量名和函数参数别名之间的切换。