这里yield传值出去为什么一定要.copy()?
Topic source在vscode里调试了一番之后结论如下: yield 传值到t时,并不是传了值本身,而是L这个变量的引用,当yield后再进循环append时,results中的最后一个项是L而不是它的值,所以会随着起变化而变化,但是一旦L内的值变更而不是增加了之后,results中最后一项(即前一个传过来的L)就停止了变化。具体机理不明
- 1
在vscode里调试了一番之后结论如下: yield 传值到t时,并不是传了值本身,而是L这个变量的引用,当yield后再进循环append时,results中的最后一个项是L而不是它的值,所以会随着起变化而变化,但是一旦L内的值变更而不是增加了之后,results中最后一项(即前一个传过来的L)就停止了变化。具体机理不明
Sergio75
这个地方很神奇,如果把最后一个L.copy()改成L的话,打印出来的结果是对的,但是results里面的结果却是错的,好像是中间循环没有执行完全就被append到了results里。这里是和引用有关系么?