def calc_prod(lst):
def lazy_prod():
b=1;
for a in lst:
b=b*a
return b
return lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
def lazy_prod():
b=1;
for a in lst:
b=b*a
return b
return lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
2016-09-29
下面来解析一下f1,f2,f3=count()这句的执行过程:
当i=1, 执行for循环, 结果返回函数f的函数地址,存在列表fs中的第一个位置上。
当i=2, 由于fs列表中第一个元素所指的函数中的i是count函数的局部变量,i也指向了2;然后执行for循环, 结果返回函数f的函数地址,存在列表fs中的第二个位置上。
当i=3, 同理,在fs列表第一个和第二个元素所指的函数中的i变量指向了3; 然后执行for循环, 结果返回函数f的函数地址,存在列表fs中的第三个位置上。
所以在调用f1()的时候,函数中的i是指向3的:
当i=1, 执行for循环, 结果返回函数f的函数地址,存在列表fs中的第一个位置上。
当i=2, 由于fs列表中第一个元素所指的函数中的i是count函数的局部变量,i也指向了2;然后执行for循环, 结果返回函数f的函数地址,存在列表fs中的第二个位置上。
当i=3, 同理,在fs列表第一个和第二个元素所指的函数中的i变量指向了3; 然后执行for循环, 结果返回函数f的函数地址,存在列表fs中的第三个位置上。
所以在调用f1()的时候,函数中的i是指向3的:
2016-09-29
假如默认安装了2.7.9以上版本的,可以把pip .exe所在文件夹(c:\pythonx.xScripts)添加到系统变量path中,如果没有pip.exe文件那还需要去官网下载,安装后添加变量即可
2016-09-28