|

楼主 |
发表于 2021-1-26 21:10:30
|
显示全部楼层
您好,冒昧的打扰了,对于这个代码,我分析一下我的思路您看看对吗?
- >>> q = []
- >>> for x in range(3):
- def lambdax():
- return x
- q.append(lambdax)
-
- >>> q[0]
- <function lambdax at 0x0000000002DA7310>
- >>> q[0]()
- 2
- >>> q[1]()
- 2
- >>> q[2]()
- 2
- >>> q[3]()
复制代码
首先由于q是一个列表,那我想看看列表第一项是什么,于是我输入q[0],然后系统提示我有未执行的函数,(我是把<function lambdax at 0x0000000002DA7310>这样的提示看做还有未执行的函数,不知道对不对),然后既然提示我有未执行的函数,于是我就加上(),然后发现“q[0]()”“q[1]()”“q[2]()”的值都为2,于是我就想是不是这样的:
在执行for x in range(3)的时候:
当x = 0时,列表q=[lambdax]
当x = 1时,列表q=[lambdax,lambdax]
当x = 2时,列表q=[lambdax,lambdax,lambdax]
#这里的lambdax并不是提现在列表中真正的数值,而是作为未执行函数占一个地方(是吗?)
于是我输入q[0](),此时q=[lambdax] 中的函数lambdax开始执行,由于x的最终值落在了x=2上(这里其实还不是很懂)。所以函数lambdax的返回值都是2(包括q[1]()和q[2]()),也就是q=[2,2,2],所以以上的程序运行过程就是这样吗?我还有一个疑惑就是q=[2,2,2]怎么显示出来?
|
|