美文网首页
python 随记(4)

python 随记(4)

作者: firewt | 来源:发表于2018-08-19 14:04 被阅读685次

1. 匿名函数

def f(x):
    return x*x
c=lambda x: x*x
print (f(2))
>>> 4
print (c(2))
>>> 4

匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数.

2. 偏函数

注意和数学中的偏函数不一样

int()函数可以把字符串转为整数,默认情况下抓为十进制的整数

print (int("100")) #123

int()函数还可以接收第二个base参数,可以做到N(2<=N<=36)进制的转换

print (int("100",base=2)) #4

如果批量转换二进制,可以定义一个函数

def int2(x,base=2):
    return int(x,base)

而偏函数做的就是把函数的某些参数固定住,这样不需要额外的定义另一个函数,例如:

import functools
int2 = functools.partial(int, base=2) #注意这里的int是一个函数
int2("1000") #8

但是你又可以手动指定固定的参数,例如(接上代码):

int2("1000",base=10) #1000

3. 迭代器

我们已经知道,可以直接作用于for循环的数据类型有以下几种:
一类是集合数据类型,如list、tuple、dict、set、str等;
一类是generator,包括生成器和带yield的generator function。
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。
可以使用isinstance()判断一个对象是否是Iterable对象:

from collections import Iterable
from collections import Iterator
isinstance([],Iterable) #True
isinstance({},Iterable) #True
isinstance("abc",Iterable) #True
isinstance((1,2,3),Iterable) #True

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
可以使用isinstance()判断一个对象是否是Iterator对象:

from collections import Iterable
from collections import Iterator
isinstance([],Iterator) #False
isinstance({},Iterator) #False

生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。
把list、dict、str等Iterable变成Iterator可以使用iter()函数:

from collections import Iterable
from collections import Iterator
>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True

Iterator可作用与next()函数

list=[1,2,3]
a=iter(list)
a.next() #1
a.next() #2

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

迭代器只可以向前获取数据

总结:

函数式编程的优点:

  1. 在数学上验证一个程序的正确性,所以函数式编程在人工智能领域应用较多
  2. 模块化,把解决问题的方案划分为N个模块
  3. 组合和复用

缺点:

  1. 有些难
  2. 比较倾向于某个适用方向

相关文章

  • python 随记(4)

    1. 匿名函数 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。用匿名函数有...

  • 【读书笔记】富爸爸:发现你孩子的财富基因

    读书前 看书随记 1 2 3 4 5 读书后

  • 恰同学少年

    本文由“校园生活随记”发布,2017年4月5日

  • Python随记

    遍历文件夹

  • python 随记

    Python性能提升的一些技巧(持续更新)一般编程语言性能比较这个网站比较有说服力http://benchmark...

  • Python 随记

    要使用模块重载函数reload()在Python3中需要导入包 from imp import reload()在...

  • Python 随记

    from sklearn import metrics 其中metrics是度量,是用来统计计算应用的性能指标,...

  • 读书随记随感 【非暴力沟通】读书分享 - 4

    #读书随记随感 【非暴力沟通】读书分享 - 4 第一章 让爱融入生活 人生的抉择(上) 随记: 非暴力沟通指导我们...

  • 随记4

    又有一些躁动不安了,书也不想看,软件也不想练。想跑出去,却不知道去哪,听着熟悉的音乐,有点伤感,棒球英豪主题曲,遥...

  • 随记-4

    也许我应该默默地一个人的度过一段时光。

网友评论

      本文标题:python 随记(4)

      本文链接:https://www.haomeiwen.com/subject/vveciftx.html