python 之函数运行机制

1.函数:

函数定义时,,def func(),func是一个函数的名字,其实它只是一个变量的名字,此变量内部保存了函数所在位置的引用地址。 函数调用结束后,其内部的局部变量是不释放的。例如:

def func(a=[]):
print(id(a))
print(a)
a.append(5)
print(id(a))

func()
func()
调试:两次调用函数func,但形参a的引用地址保持不变,但函数调用完毕后,其内部的局部变量(形参a)并没有释放。导致调用一次函数,a列表增加一个数据5
2.闭包概念:
闭包:封闭的包装,防止对象被外界影响。在python中,函数可以嵌套,内嵌的函数可以自由使用外部函数的局部变量。
如下:func1 函数即内嵌函数,变量a是自由变量。每次调用func1时,都需要调用a,将函数func1和变量a进行打包,这个过程称为闭包。
def func(a=[]):
  def func1():
  print(id(a))
  print(a)
  a.append(5)
  print(id(a))

3.为什么要有闭包?

    闭包最大的好处是封闭包装,防止被打扰。举个例子以解释这个封闭包装的概念:

def func():
a=[]
def func1():
a.append(1)
print(a)
return func1
b=func()
c=func()
print(b,c)
调试结果:12010960 12012120
func1是一个简单的闭包函数,其实b,c指向的便是func1.打印b,c所指向的func1的地址不相同。相当于有两个func1,互不干扰。在这里其实func函数将func1和a进行打包组成了闭包函数
,每次调用func函数,便形成一个不同的闭包函数。

4.装饰器中,被装饰的函数,如果想单独使用怎么使用?

1.函数的在内存中存储形式

2.函数的运行步骤:

3.函数中形参、实参存储机制

猜你喜欢

转载自www.cnblogs.com/xuehaiwuya0000/p/10850699.html
今日推荐