python夯实基础日记-函数详解

本文详细探讨了Python中函数作为对象的特性,包括变量的作用域(全局与局部变量)、参数传递的内存分析,尤其是对可变和不可变对象的处理。此外,还涉及到了浅拷贝和深拷贝的概念,以及递归函数在计算阶乘中的应用。
摘要由CSDN通过智能技术生成

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

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

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

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

执行结果:

<function print_star at 0x0000000001CE2EA0>
30289568
***

上面代码执行de时,系统中会创建函数对象,并通过 print star这个变量进行引用

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

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

全局变量:

1.在的数和定义之外声明的变量。作用域为定义的模块,从定义位置开始直到横块

2.全局变量降低了函数的通用性和可读性。尽量免全局变量的使用

3.全局量一般做常量使用。

4.函数内要改变全局变量的值,使global声明一下

局部变量:

1.在函数体中(包含形式数参数)声明的量

2.局部变量的引用比全局变量快,优先考虑使用

3.如果局变量和全局变量同名,则在函数内隐藏全局变量,只使用同可名的局部变量

a = 3  # 全局变量


def test01():
    b = 4  # 局部变量
    print(b * 10)
    global a #如果要在函数内改变全局变量的值,需要增加global关键字声明
    a=300 #局部变量的a
    print(a)


test01()
test01()
# print(b)会报错,因为b是局部变量
print(a)

输出局部变量和全局变量

a = 3  # 全局变量

def test01():
    b = 4  # 局部变量
    print(b * 10)
    global a #如果要在函数内改变全局变量的值,需要增加global关键字声明
    a=300 #局部变量的a

    print(locals())  #打印输出局部变量
    print(globals())  #打印输出全局变量


test01()
test01()
# print(b)会报错,因为b是局部变量
print(a)

77、局部变量和全局变量效率测试

局部变量的查询和访问速度比全局变量快,优先考虑使用,尤其是在循环的时候。
在特别强调效率的地方或者循环次欠数较多的地方冋以甬过将全局变量转为局部变量提高运行速度

#测试局部变量,全局变量的效率
import math
import time
def test01():
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值