摘要: 假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去: 这样,我们转换二进制就非常方便了: functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下 阅读全文
posted @ 2018-05-08 13:25 牛郎 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 什么函数可以被称为闭包函数呢?主要是满足两点:函数内部定义的函数;引用了外部变量但非全局变量。 python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象(函数的指针) 装饰器函数的外部函数传入我要装饰的函数名字,返回经过修饰后 阅读全文
posted @ 2018-05-08 13:15 牛郎 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。 在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数: 通过对比可以看出,匿名函数lambda x: x * x实际上就是: 关键 阅读全文
posted @ 2018-05-08 11:04 牛郎 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 函数作为返回值 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数: 当我们调用lazy_sum()时,返回的并不是求和结果,而是求和函数: 调用函数f时,才真正计算求和的结 阅读全文
posted @ 2018-05-08 11:00 牛郎 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。 变量可以指向函数 成功!说明变量f现在已经指向了abs函数本身。直接调用abs()函数和调用变量f()完 阅读全文
posted @ 2018-05-07 17:08 牛郎 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。 可以使用isinstance()判断一个对象是否是Iterable对象: 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。 可以使用isinstance()判断一个对象是否是Iterator对象: 阅读全文
posted @ 2018-05-07 16:55 牛郎 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不 阅读全文
posted @ 2018-05-07 16:49 牛郎 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)): 生成[1x1, 2x2, 3x3, ..., 阅读全文
posted @ 2018-05-07 14:57 牛郎 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。 比如dict就可以迭代: 因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。 默认情况下,dict迭代的是key。如果要迭代val 阅读全文
posted @ 2018-05-07 14:19 牛郎 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 列表L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] 取前3个元素 也可以从索引1开始,取出2个元素出来: 类似的,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试: 切片操作十分有用。我们先创建一个0-99的数列: 可以通 阅读全文
posted @ 2018-05-07 14:13 牛郎 阅读(151) 评论(0) 推荐(0) 编辑