目录
函数也是对象, 内存底层分析
Python 中,”一切都是对象”; 实际上, 执行def定义函数后, 系统就创建了相应的函数对象, 我们执行如下程序, 然后进行解释:
#测试函数也是对象
def print_star(n):
#执行def时,在堆里面创建一个函数对象,包含参数信息和函数体信息,栈里面也保存了一个叫print_star的对象
print('*'*n)
print(print_star)
print(id(print_star))
c = print_star #此时没有括号,此时就是把print_stat的值拷贝给c,都指向了堆里面的函数对象
c(3)
输出:
D:\wwwroot\pyiteam\venv\Scripts\python.exe D:/wwwroot/pyiteam/mypy01.py
<function print_star at 0x038F88E0>
59738336
***
Process finished with exit code 0
上面代码执行def时, 系统中会创建函数对象, 并通过print_star这个变量进行引用;