函数 ?? ?定义(创建) ?? ?函数的创建def开始,后接函数名,在给参数表最后冒号表示函数基础信息给定 ?? ?换行书写函数内部定义,在函数内部定义操作,最后函数自带返回,无定义返回值返回为None,有定义则返回为定义的返回表达式输出的值 ?? ? ?? ?形参 ?? ??? ?1. 默认参数, ?? ??? ?2.*args,列表传参 ?? ??? ?3.**args字典传参
调用 函数名()即可调用 ?? ?实参 ?? ??? ?1.位置 依次按顺序传参 ?? ??? ?2.星号序列传参 (*序列) 元组 列表 拆分 按照位置依次传给函数 ?? ??? ?3.关键字 a=1,b=2 ?? ??? ?4.星号字典传参(**字典)
返回值:在函数体内始终自带一个return,可以不定义,不定义输出None,可以定义,定义后输出为定义表达式
匿名函数:lambda函数,主要作用是简写函数调用表达式 函数名不可调用 简洁 ?变量 lambda参数 :表达式(return) 变量(2,3) 例子:lambda x,y: x+y 代替def plus(x,y) ?? ?return x+y
????????变量作用域:变量作用域由变量的位置决定,如果变量为全局变量,在函数体内没有声明该同名变量时调用此变量 则就是调用该全局变量,如果是声明了该变量名并将他重新赋值,则该改变根据数据的类型决定作用域,不变则直接 只做作用域本函数域,但是在最后会被直接删除,可变则作用域全局域,
????????内存分配:内存分配原理与改变拷贝类型的元素结果类似,在函数体中无声明的修改不可变值类似于numbers或者tuple这种,不会对原数据造成影响,只在函数作用域内生效,退出函数则删除指针 注意此处因不可变,所以变化的为指针。而可变元素就能够直接别函数内的操作影响,因为指针始终指向存放可变元素的内存空间。 类似于在tuple嵌套中无法改变其中int类型元素的值,但是能够改变其嵌套的列表类型中的元素
????????LEGB L函数内部 E嵌套函数 G全局变量 ?B 内置 ????????global a 声明 ????????a = 1 ????????nonlocal a? ????????a = 2
????????递归调用:递归调用主要是有递归边界,递归规则构成,特点是会将将自身带入运算 def digui(x): ?? ?if x==1: ?? ?return x=1 ?? ? ?? ?else ?? ?sum = x*digui(x-1) ?? ?return sum digui(10) ????????这个程序就是经典的递归,把x=1作为结束点。