首页 > 编程语言 > 详细

零基础入门Python3-函数式编程(1)

时间:2019-03-06 22:36:33      阅读:139      评论:0      收藏:0      [点我收藏+]

函数式编程和函数编程是不一样的。函数是对一段代码进行封装,使得函数达到某个功能或者结果。函数式编程,简言之就是进行数字运算的一个过程。函数可以作为参数传入另外的函数,其返回结果也可以是函数。

 

一、高阶函数

1、什么是高阶函数?就是把函数作为参数传入函数中。

# 实例1,我们看看函数的特性,变量可以指向函数

print(abs(-10))

>>> 10

# 这是一个内置函数,含义是获取绝对值

# 如果我们只写abs,不带后面的括号会提示什么?

abs

>>> <built-in function abs>

# 翻译过来就是,内置函数abs。说明abs(-10)是函数的调用,abs是函数本身。

# 如果我们把函数本身赋值给另外的一个变量,会出现什么情况?

a=abs

a

>>> <built-in function abs>

# 输出的结果一样,说明变量可以指向函数,同时函数可以赋值给变量。

# 那我们用指向函数的变量,对数字取绝对值。

print(a(-6))

>>> 6

# 这时,a 已经指向函数abs,同时,具备了abs的功能。

# 实例2,函数名就是变量

abs=666

print(abs(-6))

>>> Traceback (most recent call last):

        File "<stdin>", line 1, in <module> 

       TypeError: ‘int‘ object is not callable

# 显然,abs已经指向了数字666,不在指向求绝对值的函数了。

 

2、map函数

map(func, *iterables)

- func代表的是调用的函数

- iterables代表的是迭代函数

- map 函数是把list中的每个元素都传入到func函数中,取得运行结果。

# 实例1

def _abs(x):

    return abs(x)

a=map(_abs,[1,-2,-3,4,-5])

list(a)

>>>    [1,2,3,4,5]

# 首先定义函数_abs,作用为取数值的绝对值。接着利用map函数,把list 中的每个元素传入到_abs 函数中,得到相应的绝对值。

# 实例2 

def _int(x):

    return int(x)

a=map(_int,[‘1‘,‘2‘,‘3‘,‘4‘,‘5‘])

print(list(a))

>>> [1, 2, 3, 4, 5]

# 把字符串转化为数值。

# 实例3,利用map函数,把list中的元素变为首字母大写,其他小写的规范名字

def func(z):

    i=1

    _str=""

    for j in z:

        if i==1:

            _str=j.upper()

        else:

            _str+=j.lower()

        i+=1

    return _str

print(list(map(func,[‘adam‘, ‘LISA‘, ‘barT‘])))

>>> [‘Adam‘, ‘Lisa‘, ‘Bart‘]

 

3、reduce函数

reduce函数就是对传入的两个参数进行运算,然后运算后的值作为下次参数的其中一个。

reduce(function, sequence[, initial]) -> value

# 实例,计算1,2,3...9的和

from functools import reduce

def _add(x,y):

    return x+y

print(reduce(_add,[1,2,3,4,5,6,7,8,9]))

>>> 45

# 取出list 中的两个数值,带入_add 函数,计算出的结果作为下一次的一个参数,直到计算完毕。

# 实例2,求 list [3, 5, 7, 9] 中的积

from functools import reduce

def func(a,b):

    return a*b

print(reduce(func,[3, 5, 7, 9]))

>>> 945

技术分享图片

关注公众号,了解更多!

零基础入门Python3-函数式编程(1)

原文:https://www.cnblogs.com/pyshadow/p/10400347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!