zoukankan      html  css  js  c++  java
  • python 变量作用域

    Python中变量的作用域可分为4种:

    本地作用域:没有内部函数时,函数体为本地作用域。

    函数嵌套作用域:包含内部函数时,函数体为函数嵌套作用域

    文件作用域:程序文件(也称模块文件)的内部为文件作用域。

    内置作用域:Python运行时的环境为内置作用域,它包含了Python的各种预定义变量和函数

    内置和文件作用域可称为全局作用域

     作用域外部的变量和函数可以在作用域内使用;

    相反,作用域内的变量和函数不能在作用域外使用

    全局变量:内置作用域和文件作用域钟定义的变量和函数

    局部变量:在函数嵌套作用域和本地作用域内定义的变量和函数

    本地优先:当作用域外和作用域内的变量名称相同时,以本地优先,默认屏蔽外面的变量

    a=1
    def show():
        print('a=',a)
        a=2
    show()

     这样会出错是因为在函数中,引用了变量a,但是在函数中内部a的赋值语句,所以函数内部是内部a的作用域

    因此会出错

    1,global 声明变量为全局变量

    def show():
        global a
        a=2
        print('a=',a,sep='')
    show()
    print(a)

    def show():
        global a
        print(a)
        a=5
    a=1
    show()
    print(a)

    2,nonlocal原则

    作用域隔离原则同样适用于嵌套函数。在嵌套函数内使用与外层函数同名的变量时,

    若该变量在嵌套函数内部没有被赋值,则该变量就是外层函数的本地变量

    def show():
        def hh():
            nonlocal a  #表示a时外层函数的本地变量
            print(a)
        a=2 #a必须定义在调用hh之前
        hh()
    show()

     

    nonlocal不能定义在最外层函数中

  • 相关阅读:
    复杂报表的存储过程
    Jquery中使用setInterval和setTimeout
    Jquery EasyUi实战教程布局篇
    枚举enum
    myGeneration代码生成器
    带有分页的存储过程
    应用临时表的存储过程
    缓存类的写法
    HDU4706 Children's Day
    HDU4706 Children's Day
  • 原文地址:https://www.cnblogs.com/fengzhiyuan/p/13942861.html
Copyright © 2011-2022 走看看