• nonlocal和global关键字


    回顾:

    1. Python的函数的概述
        函数定义
        函数调用
    
    2. Python函数中参数的类型和返回值
        形参和实参
    
        形参类型:
            普通参数: 实参的传递的顺序和个数和形参一直
            关键字参数: 指定传递的实参被特定形参接收
            默认参数: 形参中设定当前参数的默认值
                     可以不传递设定了默认参数的实参
            不定长参数:
                一个形参能够接收任意多个实参
                *args:普通普通收集参数的
                **kwargs:关键字收集参数
    
        实参类型:传递方式
            普通实参
            关键字实参
        返回值:return关键字
            返回数据结果
            结束当前函数
            return返回多个结果数据,数据类型tuple
    
        过程式函数和非过程式函数
    

    3. 函数文档的使用

    1.使用help()方法来查看某一个函数的说明和帮助文档
    2. 函数名称.__doc__: 返回说明文档
    
    自定义函数文档:
        格式:
            在定义函数后用'''三引号加上注释(def 下一行)       
        优点:
            方便与后期的维护
            提高代码的可读性
    

    4.参数的传递

    实际参数: 数据对象
    
    对象的类型:
        可变对象: list dict
        不可变对象: number, tuple, string
    
    参数的传递:
        可变的对象:地址传递
        不可变对象:值传递                                                             
    

    5.变量的作用域

    全局变量:
        在内置哈数中,可以调用
        在内置函数中,不可修改
    局部变量:
        在内置函数中,可以调用
        在函数外调用,使用global修饰后,即可访问
    

    作业解答

    回顾

    1.变量定义的语法
    2.标识符命名规则
    3.数据类型
    4.常见的运算符
    5.分支结构
    6.循环结构
    7.函数
    
    效率: 总结 + 计划
    

    今日概要

    1.python中变量的作用域
    2.python中函数的递归
    3.python的闭包
    

    一、python中变量的作用域

    1.global关键字
        将局部变量的作用域提升全局变量
        1.变量的有效范围向函数内部传递
        2.如果其他函数内部没有使用global,当前函数可以访问外部的全局变量,不能修改
        3.在单签的函数内部使用global修饰外部变量,在当前哈数 中可以修改
        4.其他的哈数对于使用global修饰外部变量的函数来说,没有提升的效果
    
    2.nonlocal 关键字
        在内置函数(嵌套的函数中)使用
        1.在局保护函数中的局部使用
        2.将当前哈数中的变量的作用域提升到上一层,仅仅提升一层,在此层中必要得声明
        3.允许和global一起使用
    

    综合案例

    def one():
        def two():
            num="11"   #在函数two的局部变量
        def three():
            nonlocal num
            num="22"  # 将局部函数three的变量num向上提升,数据同步
        def four():
            global num  
            num="33"  # 将局部函数four的变量提升到全局
    
        num="00"     
        two()
        print(num) # 00
        three()
        print(num) # 22
        four()
        print(num) # 22
    one()
    print(num) # 33  
    

    二、函数的递归

    1.概念
        在哈数的哈数体中调用该函数本省(自己调用自己)
    
    2.案例
        求阶乘
        求fib数列        
    3.注意事项
        1.查找递归的规则,设置退出递归的条件
        2.使用递归可能影响程序的执行性能(贼费性能)
        3.使问题简单化(尽量不要使用)
    4.练习
        1.使用递归求阶乘
        2.(扩展)求Fib数列第n为的值?        
    

    三、python中闭包

    1.概念
        在一个外部函数中定义一个内部函数,函数的嵌套
        内部函数使用了外部函数的变量,并且外部函数的返回值是内部函数的引用
        外函数传递给内函数的数据,不会随着外部函数执行完就没了,就好像绑定在了内部函数中似的
    2.修改内函数中的数据
        需要使用nonlocal进行修饰
    3.闭包的优点
        提高代码的复用性
        对数据进行存储和封装,提高数据安全性
    
  • 相关阅读:
    canvas和svg
    表单控件及表单属性
    ajax
    数据结构与算法经典问题解析-Java语言描述
    SpringBoot
    ThreadLocal 原理
    代理模式-结构型
    框架面试
    Hash算法总结
    集合与多线程面试
  • 原文地址:https://www.cnblogs.com/victorfengming/p/11930945.html
Copyright © 2020-2023  润新知