python的延迟计算和后期绑定?
什么时候是懒惰评估?(生成器、if、迭代器?), 什么时候迟订?(关闭,常规功能?)python的延迟计算和后期绑定?,python,lambda,lazy-evaluation,late-binding,Python,Lambda,Lazy Evaluation,Late Binding,什么时候是懒惰评估?(生成器、if、迭代器?), 什么时候迟订?(关闭,常规功能?) 这看起来像是家庭作业,所以我不会只给你答案。这里有两个函数,您可以逐步了解这些值是如何变化的 def make_constants_like_generator(): def make_constant(x): def inner(y): return x return inner results = [] for i in [1,
这看起来像是家庭作业,所以我不会只给你答案。这里有两个函数,您可以逐步了解这些值是如何变化的
def make_constants_like_generator():
def make_constant(x):
def inner(y):
return x
return inner
results = []
for i in [1, 2, 3, 4]:
results.append(make_constant(i))
for f in results:
print f(None)
return results
def make_constants_like_list():
x = None
results = []
for i in [1, 2, 3, 4]:
x = i
def inner(y)
return x
results.append(inner)
for f in results:
print f(None)
return results
延迟计算将等待到最后一个可能的时刻来计算表达式。相反的是热切的评价。生成器表达式是惰性的,它在迭代之前不执行任何操作。列表表达式是渴望的,一旦遇到它,列表中就会充满值
早期和晚期绑定与系统如何确定名称所指内容有关。python中的所有名称都是后期绑定的。与惰性计算相结合,这意味着在计算使用名称的表达式之前,名称绑定的内容可以更改
def map(func, iter):
return (func(val) for val in iter)
好的,如果你使用python3,map返回一个迭代器,这就是为什么d和c是相同的我使用python2.7,d是我想知道更多关于延迟计算,后期绑定,以及map混乱的meMaybe的结果你是这个意思吗?(make_constants_like_list)def make_constants_like_list():results=[]对于[1,2,3,4]中的i:def inner(y):返回i个结果。append(inner)return results否,我的具体意思是这些结果很长,因此它们可以在函数inner(like_list)return x,应该是return,即python中的所有内容都是后期绑定的,这意味着它绑定到的内容可以更改
def map(func, iter):
return (func(val) for val in iter)