函数也是对象_内存分析
python里一切都是变量。栈,堆。
变量的作用域_全局变量_局部变量_栈帧内存分析讲解
创建函数会创建栈帧(stark frame),局部变量在栈帧里,函数执行完了,栈帧就没了。
局部变量和全局变量_效率测试
例:math.sqrt是外部函数
当我用b=math.sqrt 时,相当于创建了个内部函数,此时调用b,效率高。
参数的传递_传递不可变对象_内存分析
Python一切皆变量,赋值都是“引用的赋值”,传递的都是地址,而不是值。
浅拷贝和深拷贝_内存分析
浅拷贝:不拷贝子对象,如果导致子对象改变,原对象也会改变,因为两个的子对象地址相同。
深拷贝:拷贝子对象,如果导致子对象改变,原对象不会改变,因为两个的子对象地址不同。
参数的传递_不可变对象含可变子对象_内存分析
传递不可变对象是浅拷贝。
参数的类型_位置参数_默认值参数_命名参数
位置参数:实参与形参必须一一对应,否则报错。
默认值参数:当我们输入实参时,参数就是我们输入的实参,不输入实参,则就取默认参数做参数。默认值参数必须在普通参数后面。
命名参数:位置可不对应。
参数的类型_可变参数_强制命名参数
*元组
**字典
lambda表达式和匿名函数
没有函数名,一个表达式
lambda 形参:<表达式>
eval()函数用法
eval()会将字符串当作语句,所以语句在eval()中用要加引号
d = eval("a+b",dict1)
递归函数_函数调用内存分析_栈帧的创建
终止条件,递归步骤
递归函数_阶乘计算案例