python学习第11天
2021-01-23 18:16
标签:参数 命名 range 对象 无法 获取 == 创建 动态创建 一.locals 和 globals函数 1.locals函数:获取当前作用域中的所有内容 locals如果在函数外面,调用locals(),获取的是打印之前的所有变量,返回字典,是全局空间作用域 locals如果在函数里面,调用locals(),获取的是调用之前的所有变量,返回字典,是局部空间作用域 2.globals函数:获取全局作用域的所有内容 globals如果在函数外部,调用globals(),获取的是打印之前的所有变量,返回字典,全局空间作用域 globals如果在函数内部,调用globals(),获取的是调用之前的所有变量,返回字典,全局空间作用域 3.globals返回的是系统的字典 (1)正常方式定义变量 yunchao="666" (2)通过系统的全局字典添加键值对,可以动态创建全局变量 dic = globals() print(dic) k="yunchao" dic[k]="帅气的大帅哥" print(yunchao) (3)在函数中,批量创建全局变量 def func(): dic=globals() for i in range(1,6): dic["p%d" % (i)] = i func() print(p1) print(p2) print(p3) print(p4) print(p5) 二.函数的嵌套 1. 嵌套在函数外边的叫做外函数 嵌套在函数里面的叫做内函数 注意: 1)内部函数可以直接在函数外部调用么? 不可以 2)调用外部函数后,内部函数可以在函数外部调用么? 不可以 3)内部函数可以在函数内部调用么? 可以 4)内部函数在函数内部调用时,是否有先后顺序? 有(必须先定义在调用) 2. LEGB原则(即就近找变量原则) 找寻变量的调用顺序采用LEGB原则(即就近原则) 3. nonlocal 关键字(用来修改局部变量) nonlocal遵循 LEGB原则 1)nonlocal专门用来修改当前作用域上一级的局部变量 2)如果上一级找不到,那么继续向上寻找 3)全都找不到,则直接报错 4)不使用nonlocal,也可以修改局部变量,可以使用列表的形式,通过索引来修改局部变量 三.闭包函数 1.定义: 1)内部函数使用外函数的局部变量 2)外函数将内函数返回出来的过程,叫做闭包 3)里面的内函数叫做闭包函数 获取闭包函数使用的变量 用__closure__ (元组形式),__cell__contents(获取单元格对象里面的内容) 2.闭包的特点 内函数使用了外函数的局部变量,该局部变量与内函数发生了绑定,延长该变量的生命周期 3.闭包的意义 闭包可以优先使用外函数的局部变量 局部变量在函数外部不能被直接使用 对局部变量实现了保护的作用,外部无法访问 4.匿名函数(lambda 表达式) 1)定义:用一句话来表达只有返回值的函数 2)特点:简洁,高效,方便 3)语法结构 lambda 参数:返回值 1,无参的lambda表达式 func = lambda : "我是个大帅哥" 2,有参的lambda表达式 func = lambda n : type(n) 3,带有判断条件的lambda表达式 三目运算符 真值 if 条件表达式 else 假值 如果条件表达式成立,为真,返回真值 如果条件表达式不成立,为假,返回假值 func = lambda n : "偶数" if n % 2 ==0 else "奇数" python学习第11天 标签:参数 命名 range 对象 无法 获取 == 创建 动态创建 原文地址:https://www.cnblogs.com/yunchao-520/p/12882472.html
B —— Builtin(Python);Python内置模块的命名空间 (内建作用域)
G —— Global(module); 函数外部所在的命名空间 (全局作用域)
E —— Enclosing function locals;外部嵌套函数的作用域(嵌套作用域)
L —— Local(function);当前函数内的作用域 (局部作用域)
依据就近原则,从下往上 从里向外 依次寻找