我有以下代码,其类型(非)以非常奇怪的方式推断。
令人困惑的是,不只是引擎推断类型的典型故障,而是表现出我甚至无法理解的奇怪行为 where 或< em>错误可能是什么。
有人可以解释发生了什么吗?为什么分配给x
,y
和z
的语句的订单和状态会影响<的类型em>彼此?
(为方便起见,我添加了一个后缀,表示推断类型,因此z1__int
被推断为int
。)
def lmap1(func, items):
return [func(item1) for item1 in items]
def tmap(f, items):
return tuple(lmap1(f, items))
def a():
f = lambda i: i
items = [1]
x1__unknown = tmap(f, items)[0]
y1__unknown = tuple(lmap1(f, items))[0]
z1__int = tuple([f(item1) for item1 in items])[0]
def b():
f = lambda i: i
items = [1]
y2__int = tuple(lmap1(f, items))[0]
x2__unknown = tmap(f, items)[0]
z2__int = tuple([f(item1) for item1 in items])[0]
def c():
f = lambda i: i
items = [1]
y3__unknown = tuple(lmap1(f, items))[0]
x1__unknown = tmap(f, items)[0]