python的高阶函数和函数即变量

1:高阶函数

#高阶函数 定义:把函数作为参数作为另一个函数的参数
def test(a,b):
    return a*b
def test_1(f,c):
    return f*c
print(test_1(test(1,2),5))
运行结果:
10

2:函数即变量

def foo():
    print("in the foo")
    bar()
def bar():
    print("in the bar")
foo()
运行结果:
in the foo
in the bar
def bar():
    print("in the bar")
def foo():
        print("in the foo")
        bar()
foo()
运行结果:
in the foo
in the bar
def foo():
    print("in the foo")
    bar()
foo()
def bar():
    print("in the bar")

运行结果:
NameError:name bar is not defined

分析:

之所以会出现上面的结果,在定义foo函数的时候,在内容地址中把foo函数的函数体存在了内存当中,而foo相当于变量指向了那个内存地址,而在调用foo函数的时候,当执行到bar()函数的时候,bar函数这个变量还没有指向内存中的地址,所以才出现上面这种情况。

另外,一旦内存中的地址没有被变量指向了,就会被python的回收机制不定时的被清理掉,当然自己也可以用del 方向删除内存地址的指向(del只是删除的是内存地址的指向,并没有删除内存地址,内存地址是python的回收机制当存在的内存地址没有被变量指向了就会被清理。

原文地址:https://www.cnblogs.com/Be-your-own-hero/p/11296673.html

时间: 2024-10-19 02:40:31

python的高阶函数和函数即变量的相关文章

python之高阶函数

在python中的高阶函数就是把一个函数作为一个行参去调用另外一个函数,如: def a (): pass return .... def b (): pass return .... a(b())

(三)3-4 Python的高阶函数和匿名函数

高阶函数:把函数当成参数传递的一种函数,例如 def add(x,y,f): return f(x) + f(y) print(add(-8,11,abs)) 运行结果: 19 注:1. 调用add函数,分别执行abs(-8)和abc(11),并分别计算他们的值2.最后做运算 map()函数 map()函数是python内置的一个高级函数,它接受一个函数f和一个list,并把list的元素以此传递给函数f,然后返回一个函数f处理完所有list元素的列表.例如 def f2(x): return

python的高阶函数

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数. 高阶函数 定义:一个函数就可以接收另一函数作为参数,这种函数就称之为高阶函数. map/reduce Python内建了map()和reduce()函数. 1.map()函数 map()函数接受两个参数,一个是函数,一个是Iterable(可迭代对象),map将传入的函数依次作用到序列的每一个元素上,然后将结果作为新的Iterator返回. def f(x): return x*x r = map(f,[1,2

Python之高阶函数map/reduce

Python内建map()和reduce()函数 map()函数接收两个参数一个是函数一个是一个Iterable(迭代器),并把结果作为新的Iterator(生成器)返回 有一个函数f(x)=x*x作用于序列list[1,2,3,4,5,6,7,8,9] 使用python函数实现 >>> r=map(f,range(1,4)) >>> r <map object at 0x7fcec039ee80> >>> list(r) [1, 4, 9

Python 学习——高阶函数 filter 和 sorted

filter filter函数顾名思义,筛选,通过调用函数进行筛选序列中的满足函数的子项 以实例来说话: 过滤一个序列中所有的偶数,保留奇数 另如下,过滤掉一个序列中的所有空格以及空字符等信息 可以知道,filter函数传入了两个参数,第一个为函数,第二个为序列 sorted 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽

初识python:高阶函数

定义: 变量可以指向函数,函数的参数能接收变量,那么,一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数. 简单说就是:把函数当差参数传递的函数就是高阶函数 原则: 1.不能修改被装饰函数的源代码: 2.不能修改被装饰函数的调用方式. 实例1: # abs 内置取绝对值函数 def add(a,b,f): return f(a) + f(b) #a的绝对值+b的绝对值 print(add(1,-2,abs)) # 取3,-6的绝对值之和 返回值:3 在不修改被装饰函数源代码的情况下为其

python之高阶函数编程

在这篇文章中我指出两点: 第一:系统函数可以被覆盖 比如: a=abs(-10) print a 10 但是,如果把函数本身赋值给变量呢? f = abs f <built-in function abs> 结论:函数本身也可以赋值给变量,即:变量可以指向函数. 如果一个变量指向了一个函数,那么,可否通过该变量来调用这个函数? >>> f = abs >>> f(-10) 10 说明变量f现在已经指向了abs函数本身. 本质原因:函数名本身也是变量 那么函数

『Python』高阶特性

python高级特性 1.集合的推导式 列表推导式,使用一句表达式构造一个新列表,可包含过滤.转换等操作. 语法:[exp for item in collection if codition] 字典推导式,使用一句表达式构造一个新列表,可包含过滤.转换等操作. 语法:{key_exp:value_exp for item in collection if codition} 集合推导式 语法:{exp for item in collection if codition} 嵌套列表推导式 2.

[ Python - 9 ] 高阶函数map和reduce连用实例

1. 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456: from functools import reduce def str2num(s): return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s] def str2float(s): if '.' in s: # 将字符串s拆分成list类型 s = s.s