zoukankan      html  css  js  c++  java
  • python学习第11天

    一.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原则(即就近原则)
    B —— Builtin(Python);Python内置模块的命名空间      (内建作用域)
    G —— Global(module); 函数外部所在的命名空间        (全局作用域)
    E —— Enclosing function locals;外部嵌套函数的作用域(嵌套作用域)
    L —— Local(function);当前函数内的作用域            (局部作用域)
    依据就近原则,从下往上 从里向外 依次寻找

    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  "奇数"

  • 相关阅读:
    张硕组兽棋测试报告(整理——郑云飞)
    5.6任务进展情况(整理——郑云飞)
    5.5任务进展情况(整理——祁子梁)
    android-读取MediaProvider
    android-effect
    window下载android 最新源码
    android-mediaplayer播放
    android-基础编程-Notification
    android-基础编程-ViewPager
    android-glsurfaceview Activity框架程序
  • 原文地址:https://www.cnblogs.com/yunchao-520/p/12882472.html
Copyright © 2011-2022 走看看