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

  • 相关阅读:
    gitblit.cmd运行自动关闭
    用SourceTree轻松Git项目图解
    GUI for git|SourceTree|入门基础
    SourceTree的简单使用
    Windows平台使用Gitblit搭建Git服务器图文教程
    使用Gitblit 搭建Windows Git服务器
    Git使用详细教程
    Kafka 设计与原理详解
    Kafka 客户端实现逻辑分析
    js判断只能输入数字或小数点
  • 原文地址:https://www.cnblogs.com/yunchao-520/p/12882472.html
Copyright © 2011-2022 走看看