Python教程

python:从入门到放弃 09 函数对象与闭包

本文主要是介绍python:从入门到放弃 09 函数对象与闭包,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 函数对象
    • 函数名可以当做变量名赋值
    • 函数名还可以当成函数的实参
    • 函数名还可以当做函数的返回值
    • 函数名可以作为容器类型的元素
  • 闭包函数
    • 闭包函数实际应用

函数对象

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

函数名可以当做变量名赋值

def bar():
	return add

func=bar()
func(1,2)
3

函数名还可以当成函数的实参

def foo(x,y,func):
	return func(x,y)

foo(1,2,add)
3

函数名还可以当做函数的返回值

def bar():
	return add

func=bar()
func(1,2)
3

函数名可以作为容器类型的元素

'''容器类型:内部可以存档多个元素的数据类型>>>:列表、元组、字典'''
def index():
	print('from index')
l1 = [11, 22, 33, 44, index]
print(l1)
l1[-1]()  # index()

闭包函数

闭包函数的特征:
1.闭:定义在函数内部的函数
2.包:内部函数使用了外层函数名称空间中的名字
    
def outer():
    x = 999
    def inner(): # 闭包函数
        print('from outer>>>inner',x)
    return inner
x = 666
res = outer()
res() # from outer>>>inner 999
'''闭包函数inner使用的是函数outer的局部名称空间的变量X,而非全局名称空间的变量X'''

闭包函数实际应用

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

#方式一:
def index(username):
    print(username)

index('Rain') # 以参数的形式传入

#方式二:
def outer():
	username = 'Rain'
	def index():
		print(username) # 使用的是outer函数包给index函数的值
	return index
res = outer()
res() # Rain
这篇关于python:从入门到放弃 09 函数对象与闭包的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!