智一面的面试题提供python的测试题
http://www.gtalent.cn/exam/interview?token=f098f775ffa0106d0451f7fd97357f23

闭包:一个返回值是函数的函数
 
import time 
def runtime(): 
def now_time(): 
print(time.time())
return now_time #返回值是函数名字
f=runtime()#f就被赋值为一个函数now_time()了
f()#运行f相当于运行now_time()
 
再来看一个带参数的例子:
假设有一个csv文件,内容有三行,具体如下:
a,b,c,d,e
1,2,3,4,5
6,7,8,9,10
 
def make_filter(keep):# keep=8
def the_filter(file_name): 
file=open(file name)#打开文件
lines=file.readlines()#按行读取文件
file.close()#关闭文件
filter_doc=[i for i in lines if keep in i]#过滤文件内容
return filter_doc 
return the_filter
 
filter1=make_filter("8")#这一行调用了make_filter函数,且把8做为参数传给了keep,接受了the_filter函数作为返回值
#这里的filter1等于函数the_filter
filter_result=filter1("data.csv")#把文件名data.csv作为参数传给了函数the_filter
print(filter_result)
#结果
['6,7,8,9,10']
————————————————