@wenshizhang
2016-08-18T16:54:33.000000Z
字数 795
阅读 411
suse实习
python
装饰器是python的一个特色,为了不修改函数的代码的同时增加函数运行时的功能。
关键字lambda定义的函数就是匿名函数,python中匿名函数使用不多。
lambda x:x*x
相当于
def f(x)
return x*x
匿名函数使用:
map(lambda x:x*x,[1,2,3,4,5,6,7,8,9])
函数的返回值不仅可以是一个变量一个对象,还可以是一个函数。如:
def out(*args)
def in():
#in函数可以使用out函数的参数和变量
for n in args:
print n
return in
f = out(1,2,3,4,5,6)
f2= out(1,2,3,4,5,6)
print f,f2
函数out的返回值就是一个函数,调用函数out,f接收返回值。打印出来f的内容并不是函数执行的结果而是in函数的ID,而且in函数并没有被执行。f2和f都是表示in函数的ID,但是内容是不同的。即便是参数相同,每次调用out都是返回不同的函数
如果想要得到out(1,2,3,4,5,6)的函数结果,只要再后面直接运行f()或者f2(),f中不仅仅保存了in函数的ID,连相关的参数和变量一起保存。这种结构被称为闭包。
闭包使用起来非常简单,但是威力强大。但是有一点需要记住,返回函数不要使用任何的循环变量,以免出现不必要的错误。
偏函数就是把函数的某一个参数固定起来,返回一个新的函数。以转换二进制为例,看看偏函数的用法。int()函数也可以转换二进制,int(1000,base=2)
,现在定义一个函数,传入数字以后,可以直接转换为10进制,不用每次说明base是什么。
def int2(x):
return int(x,2)
上面的功能也可以使用偏函数来实现:
int2 = functoo ls.partial(int,base=2)