11-3.
函数。在这个练习中,我们将实现max()和min()内建函数。
(a)写分别带两个元素返回一个较大和较小元素,简单的max2()和min2()函数。他们应该可以用任意的Python对象运作。举例来说,max2(4,8)和min2(4,8)会各自每次返回8和4。
(b)创建使用了在a部分中的解来重构max()和min()的新函数my_max()和my_min()。这些函数分别返回非空队列中一个最大和最小值。他们也能带一个参数集合作为输入。用数字和字符串来测试你的解。
from operator import lt def max2(num1,num2): ele = lt(num1,num2) if ele == True: return num2 else: return num1 def min2(num1,num2): ele = lt(num1,num2) if ele == True: return num1 else: return num2
def my_max(l): eleList = l for i in range(len(eleList)-1): eleList[0] = max2(eleList[0],eleList[i+1]) return eleList[0] def my_min(l): eleList = l for i in range(len(eleList)-1): eleList[0] = min2(eleList[0],eleList[i+1]) return eleList[0]
11–6. 变长参数。下一个称为printf()的函数。有一个值参数,格式字符串。剩下的就是根据格式化字符串上的值,要显示在标准输出上的可变参数,格式化字符串中的值允许特别的字符串格式操作指示符,如%d, %f, etc。提示:解是很琐碎的----无需实现字符串操作符功能性,但你需要显示用字符串格式化操作(%)
def printf(fmt,*var): print (fmt % var)
11–10.用filter()进行函数式编程。在unix 文件系统中,在每个文件夹或者目录中都有两个特别的文件:'.'表示现在的目录,'..'表示父目录。给出上面的知识,看下os.listdir()函数的文档并描述这段代码做了什么:files = filter(lambda x: x and x[0] != '.', os. listdir(folder))
将文件过滤出来。
11–17.定义
(a) 描述偏函数应用和currying 之间的区别。
(b) 偏函数应用和闭包之间有什么区别?
(c) 最后,迭代器和生成器是怎么区别开的?
我理解,偏函数就是匿名函数。
匿名函数:没有函数名称的函数;
闭包:一个可以使用另外一个函数作用域中的变量的函数,函数调用返回后一个没有释放资源的栈区;
迭代器和生成器类比的话,赌场发牌的荷官算是一个比较接近的例子。
本来你需要自己去处理一堆牌(一个 collection),现在你有了这个对象,只要不断问他要“下一张”,他要是有自然会给你,没有就结束(StopIteration)。