Python基础知识学习记录 2021——1024(函数内存底层分析,全局和局部变量)

本文探讨了Python中函数作为对象的内存底层原理,解释了函数定义后如何成为对象并可以被赋值给其他变量。同时,详细阐述了变量的作用域,包括全局变量和局部变量的差异,指出局部变量在效率上的优势,并通过测试验证了这一观点。建议在编程时尽量避免使用全局变量,以提高代码的通用性和可读性。
摘要由CSDN通过智能技术生成

070

函数也是对象,内存底层分析

Python 中,“一切都是对象”。实际上,执行 def 定义函数后,系统就创建了相应的函数对象。我们执行如下程序,然后进行解释:

def print_star(n):
    print("*"*n)

print(print_star)
print(id(print_star))
c = print_star
c(3)

执行结果:

<function print_star at 0x0000000002BB8620>
45844000
***

上面代码执行 def 时,系统中会创建函数对象,并通过 print_star
在这里插入图片描述
我们执行“c=print_star”后,显然将 print_star 变量的值赋给了变量 c,内存图变成了:

在这里插入图片描述
显然,我们可以看出变量 c 和 print_star 都是指向了同一个函数对象。因此,执行 c(3)和执行 print_star(3)的效果是完全一致的。 Python 中,圆括号意味着调用函数。在没有圆括号的情况下,Python 会把函数当做普通对象。

071

变量的作用域(全局变量和局部变量)

变量起作用的范围称为变量的作用域,不同作用域内同名变量之间互不影响。变量分为:
全局变量、局部变量。

全局变量:

  1. 在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块结束。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值