一 函数对象

函数对象指的是函数可以被当做“数据”来处理,具体可以分为四个方面的使用。

1.1 函数可以被引用

def index():

print('from index')

a = index

a()

1.2 函数可以当做参数传递

def foo(x,y,func):

print(x,y)

func()

def bar():

print('from bar')

foo(1,2,bar)

#>>> 1 2

#>>> from bar

1.3 函数名可以当做返回值使用

def index():

print('from index')

def func(a):

return a

a = func(index)

a()

#>>> from index

1.4

函数名可以被当做容器类型的元素

def func():

print('from func')

l1 = [1,'2',func,func()]

f = l1[2]

#>>> from func

二 闭包函数

2.1 闭与包

基于函数对象的概念,可以将函数返回到任意位置去调用,但作用域的关系是在定义完函数时就已经被确定了的,与函数的调用位置无关。

x = 1

def f1():

def f2():

print(x)

return f2

def f3():

x = 3

f2 = f1() # 调用f1()返回函数f2

f2() # 需要按照函数定义时的作用关系去执行,与调用位置无关

f3() # 结果为1

也就是说函数被当做数据处理时,始终以自带的作用域为准。若内嵌函数包含对外部函数作用域(而非全局作用域)中变量的引用,那么该‘内嵌函数’就是闭包函数,简称闭包(closeures)

x = 1

def otuer():

x = 2

def inner():

print(x)

return inner

func = outer()

func() # 结果为2

2.2 闭包的用途

目前为止,我们得到了两种为函数传值的方式,一种是直接将值以参数的形式传入,另外一种就是将值包给函数

# 直接传参

def func(x):

print(x)

func(1000)

# 通过闭包函数传参

def outer(number):

# number = 1000

# inner就是闭包函数

def inner()

print(number)

return inner

func = outer(1000) # ---》 inner地址 ---》 func变量名

func() # func ---> inner地址()

闭包函数的这种特性有时又称为惰性计算。使用将值传给函数的方式,在装饰器中也将大有用处!

python 返回函数对象_Python—函数对象与闭包相关推荐

  1. python函数能返回列表吗_Python函数返回列表还是作为生成器工作?

    我正在尝试创建一个返回对象或作为生成器的函数. 这是一个坏主意,因为作为一种最佳实践,您希望函数可靠地返回相同类型的值,但为了科学的利益-- 我正在使用Python 2,因此range返回一个列表,x ...

  2. python返回函数值并退出函数_Python函数的返回值和作用域

    函数的返回值和作用域 1.返回值 def guess(x): if x > 3: return "> 3" else: return "<= 3&quo ...

  3. python中return返回值为函数名_Python函数返回值

    Python函数返回值教程 同时,Python 函数的返回值不需要在函数的签名上体现,只需要在函数体里面直接使用 return 语句返回即可. Python函数不返回值详解 语法 def func_n ...

  4. python中map函数返回值类型_Python函数精解:map函数

    描述 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表. 语法 m ...

  5. python write函数参数_Python函数-函数参数、返回值

    函数 1.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫         做subroutine(子过 ...

  6. python所有函数用法_python函数用法总结

    空函数 如果想定义一个什么事也不做的空函数,可以用pass语句: def nop(): pass pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码 ...

  7. python函数应用_Python 函数及其应用

    Python函数: 一个具有独立功能的代码块,重复使用时,那么往往就需要使用函数把这块代码封装成一个整体. 一.定义函数: def 函数名(): 函数代码 定义一个函数,函数不会执行,要执行需要调用函 ...

  8. python测试函数怎么写_Python - 函数

    函数,function,是一段代码的集合体.是Python为了代码最大程度的重用.减小代码冗余而提供的最基本的程序结构. Python是一门面向对象的编程语言,对函数进行分类和封装,由对象实现对方法的 ...

  9. python 倒叙 数组_Python函数合集:68个内置函数请收好!

    内置函数就是python给你提供的, 拿来直接用的函数,比如print.,input等.截止到python版本3.6.2 python一共提供了68个内置函数. #68个内置函数 # abs() di ...

最新文章

  1. matlab 清楚屏幕,在shell中清除屏幕
  2. rsyslog日志管理+LogAnalyzer
  3. CentOS通过日志反查入侵
  4. android litehttp jar,灵活而智能的HTTP框架 LiteHttp
  5. android如何使用xml资源文件,Android-使用xml文件资源定义菜单
  6. 「后端小伙伴来学前端了」Vue中Props 实现组件通信TodoList案例
  7. C#中,什么时候用yield return
  8. sql基线建立-知识准备
  9. 谁是谁的first-child
  10. 吴恩达 深度学习 编程作业(2-3)- TensorFlow Tutorial
  11. dpkg命令_Linux常用命令大全(二)
  12. python字典由键插值_SciPyTutorial-一元插值interp1d
  13. 【LeetCode 剑指offer刷题】字符串题3:Reverse String
  14. 4_蒙特卡罗算法求圆周率PI
  15. f1c100s uboot调试记录
  16. 计算机组成原理浮点运算方法,计算机组成原理第二章 第11讲 浮点运算方法和浮点运算器.ppt...
  17. Notes弹窗查询异构系统数据库解决方案
  18. 第06篇 部署区块链浏览器(1)
  19. 直播系统开发,直播平台源码切忌一成不变
  20. java计算机毕业设计家庭理财管理系统源码+数据库+系统+lw文档+mybatis+运行部署

热门文章

  1. 批量单变量求解 office wps 单变量求解比较
  2. 循环矩阵傅里叶对角化
  3. C++矩阵处理工具——Eigen
  4. nginx配置laravel
  5. libcudart.so.7.5: cannot open shared object file: No such file or directory
  6. python32bit改64bit,从32位Python更改64位注册表
  7. maven修改运行环境配置
  8. linux系统预定义变量有哪些,Shell预定义变量用法详解
  9. 指定在此oracle主目录中配置,oracle11g卸载
  10. 松下服务器分频器输出信号与,基础资料松下PANASONIC伺服驱动器MADHT1507E