函数也是对象
函数可以作为参数来传递, 也可以作为返回值返回
可以使用等号将函数赋值给一个函数
def test01():
xxx
c = test01
c() 相当于 test01()
变量的作用域
全局变量定义在模块,从定义的位置开始到模块结束
局部变量在函数内部
全局变量一般作为一个常量使用
函数内要改变全局变量的值,使用global声明一下 直接在函数内部写 global a
局部变量比全局变量快,优先使用局部变量
如果全局变量和局部变量重名,则在函数内隐藏全局变量,使用同名的局部变量
调用函数的时候启动一个栈帧,栈帧外部访问不了栈帧内部,栈帧内部可以访问栈帧外部
局部变量的查询和访问速度比全局变量块,在特别强调效率的地方可以通过将全局变量转为局部变量来提高运行速度
参数的传递
参数的传递本质上就是从实参到形参赋值操作 python 一切都是对象,python中都是引用传递,不是值传递
可变对象进行写操作,直接作用于源对象本身
对不可变对象进行写操作,会产生一个新的对象空间,并用新的值填充这块空间
不可变对象 int float 字符串 元组 布尔值
赋值操作系统会创建一个新的对象,类似其他语言的值传递
浅拷贝 深拷贝
浅拷贝 不拷贝子对象的内容,知识拷贝子对象的引用
深拷贝 会连子对象的内存也全部拷贝一份,对子对象