由于range对象按需生成值,是否意味着无论何时索引范围,迭代协议都会被调用到该索引?
我的意思是:
>>> R = range(1,11)
>>> print(R[5])
6
Run Code Online (Sandbox Code Playgroud)
既然R[5]没有存储在内存中,是否每次都通过创建一个新的迭代器来计算?如果没有,如何索引范围对象?
如果这个问题太基本/显而易见,我深表歉意,但在此处和数据模型文档搜索后我找不到合理的答案。
我的问题很简单,Python 3 中的调用者到底是什么?有严格的定义吗?
例如,我知道调用另一个函数的函数称为调用者。所以:
def f1():
pass
def f2():
f1()
Run Code Online (Sandbox Code Playgroud)
f2 是 f1 的调用者。但是赋值语句呢?
x = f2()
Run Code Online (Sandbox Code Playgroud)
xa 是 f2 的调用者吗?它也是f1的调用者吗?显然,函数定义末尾的 return 语句向调用者返回一个值,因此我假设在这种情况下 x 既是 f2 又是 f1 的调用者,但是我只想检查是否没有更深层次的调用者/调用者的技术含义是什么?
我发现这个问题我不明白Python中的“返回”以及调用者是什么?,但我无法得到太多理解。