Day 6 :参数,变量,函数

2020/8/27

函数调用的底层

调用方法的时候 其实就是调用已经创造好的对象。调用的时候不会新键对象

在堆里面建立一个对象,在栈里面也保存了一个变量,这个值就是对象的地址
()就是调用
在这里插入图片描述

def test():
	print("sxtsxt")
test01()
c = test01
#c 把test01的值一样 ,调用c 的时候就找到对应的对象 

变量的作用域

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

  1. 在函数和类定义之外声明的变量,作为域为定义的模块,从定义位置开始直到模块结束
  2. 全局变量降低了函数的通用性 和可读性。尽量避免使用全局变量
  3. 全局变量一般用于常量
  4. 函数内要改变全局变量的值 用global声明
    局部变量(locals())
  5. 在函数体内声明的变量
  6. 局部变量比全局变量引用快,所以说优先考虑局部变量
  7. 如果局部变量和全局变量同名,则在函数内隐藏全局变量,只用局部变量。如果要使用 需要global声明一下
    在这里插入图片描述

在调用局部变量的时候 会有一个栈帧(stack frame),栈帧可以访问外面,但是不能外面访问里面。并且栈帧被调用结束后 就会被删除。

能使用局部变量就尽量使用局部变量

参数的传递

python 中的参数的传递都是“引用传递”,而不是值传递

  1. 对于可变对象,就进行写操作, 直接作用于对象本身(字典,列表,集合,自定义对象等)
  2. 对于不可变对象,进行写操作,会产生一个新的对象空间,并用新的值填入这块空间(数字,字符串,元组,function等)
a = [10, 20]


def text0(t):
    print(id(t))
    t.append(300)`
    print(id(t))
    

text0(a)
print(a)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值