🔴 返回值一样,不代表函数一样
两个函数,一个顺手往外面的列表里记了一笔,一个什么也没碰。各调三次,比一比返回值,再看看外面那个列表:
LOG = []
def impure(a):
LOG.append(a) # ← 顺手改了外面的东西
return a * 10
def pure(a):
return a * 10
r1 = [impure(x) for x in (1, 2, 3)]
r2 = [pure(x) for x in (1, 2, 3)]
same = "一样" if r1 == r2 else "不一样"
print(same + "/" + str(len(LOG)))
全部评论