全局变量和局部变量,lambda

局部变量:
    定义在函数内部的变量称为局部变量(函数的形参也是局部变量)
    局部变量只能在函数使用
    局部变量在函数调用时才能够被创建,在函数调用之后会自动销毁


全局变量:
    定义在函数外部,模块内部的变量称为全局变量

    全局变量,所有的函数都可以直接访问(但函数内部不能将其直接赋值)


局部变量说明:
    1.在函数内首次对变量赋值是创建局部变量,再次为变量赋值是修改
    局部变量的绑定关系
    2.在函数内部的赋值语句不会对全局变量造成影响
    3.局部变量只能在其被声明的函数内部访问,而全局变量可以在
    整个模块范围内访问


globals和locals函数
    globals()返回当前全局作用域内变量的字典

    locals()返回当前局部作用域内变量的字典


python作用域
    作用域也叫名字空间,是访问变量时,查找变量名的范围空间


    局部作用域  Local function  L
    外部嵌套函数作用域  Encloing function Locals E
    函数定义所在模块(文件)的作用域  Global(Module) G  全局

    python内置模块的作用域  Builtin(python)    B


global语句
    作用:
        1.告诉解释器,global语句声明的一个或多个变量,这些变量的作用域为模块级
        的作用域,也称作全局变量
        2.全局声明 (global)将赋值变量映射秷模块文件内部的作用域
    语法

        global变量1,变量2...


global说明
    1.全局变量如果在函数内部被赋值,则必须经过全局声明(否则会被认为是局部变量)
    2.全局变量在函数内部不经过声明就可以直接访问
    3.不能先声明局部的变量,再用global声明为全局变量,此做法不符合规则    
    4.global变量列表里的变量不能出现在此作用域内的形参列表里


nonlocal  语句
    作用:
        告诉解释器,nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套
        函数内的变量
    语法:
        nonlocal变量名1,变量名2,...
    示例见
    10_nonlocal.py


nonlocal  说明 
    1.nonlocal语句只能在被嵌套函数内部进行使用
    2.访问nonloal变量将对外部嵌套函数的作用域的变量进行操作
    3.当有两层或两层以上的函数嵌套时,访问nonlocal变量只对近一层的变量进行操作
    4.nonlocal语句的变量列表里的变量名,不能出现在此函数的参数列表中


lambda表达式(又称匿名函数)
    作用:
        创建一个匿名函数对象
        同def类似,但不提供函数名
     语法 :
        lambda[参数1,参数2,..]:表达式
        []里的内容可以省略
    示例:
    def myadd(x,y):
        return x + y

猜你喜欢

转载自blog.csdn.net/weixin_42130019/article/details/80330011