Python学习笔记__4.1章 高阶函数

# 这是学习廖雪峰老师python教程的学习笔记

1、概览

我们知道Python内置的求绝对值的函数是abs()

# 调用abs()函数可以获得一个值

>>> abs(-10)

10

# 那么,只写abs本身呢

>>> abs

<built-in function abs>

可见,abs(-10)是函数调用,而abs是函数本身

1.1、将函数赋给变量

将函数赋给变量只有两种情况:

  • 把函数计算得到的 结果 赋给变量

f=abs(-10)

  • 把 函数本身 赋给变量,变量此时可以调用函数,即变量可以指向函数

f=abs

1.2、函数名也是变量

函数名其实就是指向函数的变量。

对于abs()这个函数,可以把函数名abs看成变量。这意味着,可以用其他的值赋给abs这个变量

abs = 10

赋值过后。再调用abs函数报错

注:由于abs函数实际上是定义在import builtins模块中的,所以要让修改abs变量的指向在其它模块也生效,要用import builtins; builtins.abs = 10

2、例题

一个简单的高阶函数,计算abs(x)+abs(y)

# -*- coding: utf-8 -*-

def add(x, y, f):

return f(x) + f(y)

print(add(-5, 6, abs))  # 将abs 函数 作为参数 传给了 add函数

原文地址:http://blog.51cto.com/12758568/2115993

时间: 2024-10-03 06:19:07

Python学习笔记__4.1章 高阶函数的相关文章

Python学习笔记__4.4章 装饰器(添加额外功能)

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 装饰器可以帮助我们为已经存在的对象添加额外的功能 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 装饰器经常用于有切面需求的场景,比如:插入日志.性能测试.事物处理.缓存.权限校验等场景. 1.1.为now函数 加一行日志 # 定义now函数 def now(): print('2018-5-8') # 编辑decorator def log(func):

Python学习笔记__4.2章 返回函数

# 这是学习廖雪峰老师python教程的学习笔记 1.函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. # 累加函数 def external(*args): def internal(): ax = 0 for n in args: ax = ax + n return ax return internal  # external的返回值是internal # 调用external() f = external(1, 3, 5, 7, 9)   #这里的 f是一

Python学习笔记__4.5章 偏函数(绑定函数参数)

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 偏函数(Partial function)是functools模块的一个功能 functools.partial的作用就是,在一个已存在的函数基础上.把它的某些参数给固定住(也就是设置默认值),然后返回一个新的函数,调用这个新函数会更简单. 1.1.functools. partial 应用 已知: int 函数可以将 '123' --> 123. int 的 base 参数可以做 N 进制的转换 >>> int('123

Python学习笔记__4.3章 匿名函数(简洁函数)

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 关键字lambda表示匿名函数 list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) # 列表生成式中的 lambda 实际就是 def f(x): return x * x 但匿名函数有个限制,就是只能有一个表达式. 匿名函数不用写return,返回值就是该表达式的结果 匿名函数因为函数没有名字,不必担心函数名冲突. 此外,匿名函数也是一个函数对象,可以把匿名函数赋值给一个变量

《JS权威指南学习总结--8.8.2高阶函数》

内容要点: 所谓高阶函数(higher-order function)就是操作函数的函数,它接收一个或多个函数作为参数,并返回一个新函数. 例1: //这个高阶函数返回一个新的函数,这个新函数将它的实参传入f(),并返回f的返回值的逻辑非 function not(f){ return function(){   //返回一个新的函数 var result = f.apply(this,arguments); //调用f() return !result;      //对结果求反 }; } v

javascript设计模式与开发实践阅读笔记(3)——高阶函数的其他应用

高阶函数的其他应用 1.currying 函数柯里化,又称部分求值,一个currying 的函数首先会接受一些参数,接受了这些参数之后,该函数并不会立即求值,而是继续返回另外一个函数,刚才传入的参数在函数形成的闭包中被保存起来.待到函数被真正需要求值的时候,之前传入的所有参数都会被一次性用于求值. var cost = (function(){ var args = []; return function(){ if ( arguments.length === 0 ){ var money =

Python学习笔记__4.1.1章 map/reduce

# 这是学习廖雪峰老师python教程的学习笔记 1.map函数 map() 函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回 # 比如有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上 >>> def f(x): ...     return x * x list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])

Python学习笔记__4.1.2章 filter

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 Python内建的filter()函数用于过滤序列 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素. # 在一个list中,删掉偶数,只保留奇数 def is_odd(n): return n % 2 == 1 list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10,

Python学习笔记__10.4章 进程VS线程

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 我们介绍了多进程和多线程,这是实现多任务最常用的两种方式.现在,我们来讨论一下这两种方式的优缺点 要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker. 如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker. 如果用多线程实现Master-Worker,主线程就是Master,其