重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
当然是函数式那一套黑魔法啦,且听我细细道来。 lambda表达式也就是匿名函数。用法:lambda 参数列表 : 返回值例: +1函数 f=lambda x:x+1 max函数(条件语句的写法如下) f_max=lambda x,y:x if xy else y 上述定义的函数与用def定义的函数没有区别,而且左边的f=在某些情况下并不是必要的。 filter,map,reduce filter函数接受两个参数,第一个是过滤函数,第二个是可遍历的对象,用于选择出所有满足过滤条件的元素,不同版本的filter的返回值稍有区别,我用的是python3.5,filter返回的是经过过滤的可遍历对象。例:去除小写字母 s=filter(lambda x:not str(x).islower(),"asdasfAsfBsdfC") for ch in s: print(ch) map函数接受的参数类型与filter类似,它用于把函数作用于可遍历对象的每一个元素。类似于数学中映射的概念。例:求y=2x+1(偷偷用了一下range函数生成定义域) s=map(lambda x:2*x+1,range(6)) for x in s: print(x) reduce函数对每个元素作累计操作,它接受的第一个参数必须是有两个参数的函数。例:求和 from functools import reduce s=reduce(lambda x,y:x+y,range(1,6)) print(s) 求乘积(第三个可选参数表示累计变量的初值) from functools import reduce s=reduce(lambda x,y:x*y,range(1,6),1) print(s) 柯里化(curry)函数如果一个函数需要2个参数,而你只传入一个参数,那么你就可以得到一个柯里化的函数,这是函数式编程语言的重要特性之一,遗憾的是,python并不能在语法层面支持柯里化调用,但它在库中提供了接口。例: *3函数 f_mul=lambda x,y:x*y from functools import partial mul3=partial(f_mul,3) print(mul3(1)) print(mul3(6)) 打包与解包有点类似于函数式中的模式匹配,略牵强。 t=(1,2,3) x,y,z=t 列表生成式这个也有点牵强,不知道严格意义上讲属不属于函数式风格。例:生成奇数序列 l=[2*x+1 for x in range(10)] for i in l: print(i) 最后来一个彩蛋(以前某答主提到的用调分函数来美颜的算法,忘了出处了,侵删) from PIL import Image from math import sqrt im = Image.open("a.jpg") ret= im.convert(mode="RGB") ret = ret.point(lambda x:sqrt(x)*sqrt(255)) ret.save("b.jpg")
创新互联建站专注于诏安企业网站建设,响应式网站开发,成都商城网站开发。诏安网站建设公司,为诏安等地区提供建站服务。全流程按需定制制作,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务
def mul(x):
return x*x
def my_map(func, args):
for n in args:
print(func(n))
my_map(mul, [1,2,3,4])
1.在已新建的python文件中,定义函数mul_data,传入两个参数param和exp
2.调用函数mul_data,并赋值给变量s,打印变量s
3.保存代码并运行python文件,查看打印结果mul_data为函数
4.再次调用s,并传入两个参数,赋值给变量h并打印
5. 直接上代码 class aun(): def t_self(self): self.b=0 self.i =0 if self.i10: print("t_self "+str(self.i)) def
__mul__ 指向了一个 method object
__rmul__ 和 __imul__ 指向了同一个object
把python里面的所有"名字"(变量,函数,方法,类,对象,模块....)理解为指向一个对象的指针,就基本理解的python的数据结构
可以把类当做参数传入到函数里,在函数里进行实例化。
把类A当做参数传入get_instance_from_class。在get_instance_from_class中对A进行实例化,获得其实例,并返回。
class A:
def __init__(self):
print "I am a A instance."
def print_myself(self):
print "print myself."
def main():
def get_instance_from_class(a):
return a()
a = get_instance_from_class(A)
a.print_myself()
if __name__=="__main__":
main()