已采纳回答 / _野良
在for i in range(1, 4) 这个迭代中 i 的值是一个会变动的值 在闭包中 不能引用会变动的变量值,所以不能直接用def f(i): return i * i 因此需要把 每次迭代 i 的值 赋予一个变量 即(m = i) 定义函数写成def f(m=i): return m * m
2017-03-22
已采纳回答 / ikobicc
def calc_prod(lst): def lazy_sum(): sum=1; for x in lst: sum=sum*x return sum return lazy_sum()f = calc_prod([1, 2, 3, 4])print f因为定义calc_prod(lst)函数时,返回的最终结果是一个int类型结果
2017-03-21
已采纳回答 / haoliyou
for math.sqrt(x) in range(1,101):SyntaxError: can't assign to function call这好像是说for的in前面不能是函数方法这类的,这个可以改成:<...code...>这就可以了,我也是新手,/抱拳
2017-03-20
最新回答 / qq_调到极限_0
返回的是一个list,但是这个list有三个元素,分别是三个f<>函数,再将三个元素赋给f1,f2,f3。输入f1得到的只是其中一个f<>函数的存储位置。
2017-03-17
最新回答 / 我不是很爱书
首先明确一点,函数还是一个变量,x=f() 通过 查看 f() 的定义,是返回g的,返回的是g而不是g() x=f()其实就是 x=g, 'call f()...'是定义在f()中的,代码是线性执行的,先执行里面的print语句,在执行return g,返回的是指向g()函数的一个地址,g()是无参函数,x()相当于g(), x()这种方式才是实现对函数x的调用,而x,相当于执行print(x)
2017-03-17