信鸽定律,小龙人救世网,辛月娥
函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量。
def func(): print("呵呵") print(func) 结果: <function func at 0x1101e4ea0>
def func(): print("呵呵") print(func) # 把函数当成⼀个变量赋值给另⼀个变量 a = func # 函数调⽤ func() a()
def func(): print("吃了么") def func2(fn): print("我是func2") fn() print("我是func2") # 把函数func当成参数传递给func2的参数fn. func2(func)
def func_1(): print("这⾥是函数1") def func_2(): print("这⾥是函数2") print("这⾥是函数1") return func_2 # 执⾏函数1. 函数1返回的是函数2, 这时fn指向的就是上⾯函数2 fn = func_1() # 执⾏上⾯返回的函数 fn()
如果在一个内部函数里,对在外部作用于(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包。
闭包(closure)是词法闭包(lexical closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,闭包是由函数和与其相关的引用环境组合而成的实体。
通俗的讲就是:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。它只不过是个“内层”的函数,由一个名字(变量)来指代,而这个名字(变量)对于“外层”包含它的函数而言,是本地变量。
闭包的主要用途:实现装饰器
def func(a, b): def line(x): return a * x - b return line line = func(2, 3) print(line(5))
def func(a, b): def line(x): nonlocal a a = 3 return a * x - b return line line = func(2, 3) print(line(5))
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论