Python入门基础篇 No.53 —— 函数也是对象_内存分析
前生篇:返回值详解
小白不看都能懂:Python之真功夫系列(全章)
前言
一、函数也是对象,内存底层分析
- Python 中,“一切都是对象”。实际上,执行 def 定义函数后,系统就创建了相应的函数对象。我们执行如下程序,然后进行解释:
代码演示:
def print_star(n):
print('*' * n)
print(print_star)
print(id(print_star))
c = print_star
c(3)
-------------------------
<function print_star at 0x0000017F14FFC1F0>
1645324780016
***
- 上面代码执行 def 时,系统中会创建函数对象,并通过 print_star 这个变量进行引用:
- 我们执行“c=print_star”后,显然将 print_star 变量的值赋给了变量 c,内存图变成了:
- 显然,我们可以看出变量 c 和 print_star 都是指向了同一个函数对象。因此,执行 c(3)和执行 print_star(3)的效果是完全一致的。 Python 中,圆括号意味着调用函数。在没有圆括号的情况下,Python 会把函数当做普通对象。
总结
以上帮各位总结好了,收藏,关注即可查收。
前生篇:返回值详解
小白不看都能懂:Python之真功夫系列(全章)
关注下方公众号,免费拿Python学习资料!!!