[关闭]
@wenshizhang 2016-08-18T16:54:33.000000Z 字数 795 阅读 411

可爱的python——函数.md

suse实习 python


装饰器

装饰器是python的一个特色,为了不修改函数的代码的同时增加函数运行时的功能。

匿名函数

关键字lambda定义的函数就是匿名函数,python中匿名函数使用不多。

  1. lambda x:x*x
  2. 相当于
  3. def f(x)
  4. return x*x

匿名函数使用:

  1. map(lambda x:x*x,[1,2,3,4,5,6,7,8,9])

返回函数

函数的返回值不仅可以是一个变量一个对象,还可以是一个函数。如:

  1. def out(*args)
  2. def in():
  3.  #in函数可以使用out函数的参数和变量
  4.  for n in args:
  5.   print n
  6. return in
  7. f = out(1,2,3,4,5,6)
  8. f2= out(1,2,3,4,5,6)
  9. 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是什么。

  1. def int2(x):
  2. return int(x,2)

上面的功能也可以使用偏函数来实现:

  1. int2 = functoo ls.partial(int,base=2)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注