精华内容
下载资源
问答
  • 变量的作用域

    2017-04-18 20:25:05
    变量的作用域,是指变量能够被引用的区域,也就是可以使用该变量的程序范围。 变量必须先声明,才能被引用,变量的作用域取决于声明时,声明代码所在的位置,所以声明一个变量的同时,也就指定了变量的作用域 按...

    变量的作用域,是指变量能够被引用的区域,也就是可以使用该变量的程序范围。
    变量必须先声明,才能被引用,变量的作用域取决于声明时,声明代码所在的位置,所以声明一个变量的同时,也就指定了变量的作用域
    按作用域来分,变量可以分为下面几种: 局部变量、类变量、方法参数和例外处理参数。
    在一个作用域中,变量名应该是唯一的。

    局部变量:在方法或方法的一个块代码中声明,它的作用域为它所在的代码块(整个方法或方法中的某个块代码);
    类变量:在类中声明,而不是在类的某个方法中声明,它的作用域就是整个类;
    方法参数:方法参数用于传递数据给方法,它的作用域就是这个方法;
    例外处理参数:例外处理参数传递给例外处理代码,它的作用域就是例外处理部分

    举例:

    public class HelloWorld{
        //声明一个类变量,名为age
        int age=19; 
        //这里只能引用age这个变量
    
        //定义一个方法,方法参数price为参数变量
        public void functionOne(double price){
            //这里只能引用age和price这两个变量
    
            //定义一个局部变量,名为num
            int num=23;
            //这里可以引用age、price、num这三个变量
    
            {
                //定义一个局部变量,名为count
                int count=100;
                //在这里,四个变量都能够被引用
                System.out.println(age+price+num+count);
            }       
            //这里是count所在的代码块之外,已经超出了它的作用域,代码执行到这里时,count将被释放,在这里已经不存在count变量了
        }
        //这里是price、num所在的方法之外,已经超出了它们的作用域,代码执行到这里时,它们将被释放,无法被引用
    }
    
    class HelloWorldSecond{
        //在这里无法直接引用HelloWorld类中的类变量age
    }
    展开全文
  • 变量的作用域

    2009-08-09 17:49:00
    变量的作用域 变量的作用域是指它的存在范围,只有在这个范围内,程序代码才能访问它。作用域决定了生命周期。 变量的生命周期是指从一个变量被创建并分配内存空间开始,到这个变量被销毁并清除其所占的内存空间的...

    变量的作用域

     

    变量的作用域是指它的存在范围,只有在这个范围内,程序代码才能访问它。

    作用域决定了生命周期。

     

    变量的生命周期是指从一个变量被创建并分配内存空间开始,到这个变量被销毁并清除其所占的内存空间的过程。

     

    当一个变量被定义时,它的作用域就被确定了。

     

    变量的生命周期

    当程序运行时,会在不同阶段的创建不同的变量。变量存在于内存中的这段时间称为变量的生命周期。

     

    变量的类型:

    成员变量:在类中声明,它的作用域是整个类。

    局部变量:在一个方法内部或方法的一个代码块内不声明。

    方法参数:方法或构造方法的参数,它的作用域是整个方法或者构造方法。

    异常处理参数:异常处理参数和方法参数很相似。

    差别在于前者传递参数给异常处理代码块,而后者是传递参数给方法或着构造方法。

    异常处理参数是指 catch(Exception e)语句中的异常参数“e”,它的作用域是紧跟着catch(Exception e)语句后面的代码快。

     

    成员变量可以在类中方法以外的任何地方定义。而局部变量必须限定以后使用。

     

     

     

     


     

    展开全文
  • 变量定义以后,是有一定的使用范围,称之为变量的作用域。比如Java中,变量的使用范围是变量声明时所在的{}范围,而python的作用域对应的为同一个缩进。按着变量的使用范围给变量划分成如下两种: 1.全局变量:...

           变量定义以后,是有一定的使用范围,称之为变量的作用域。比如Java中,变量的使用范围是变量声明时所在的{}范围,而python的作用域对应的为同一个缩进。按着变量的使用范围给变量划分成如下两种:

               1.全局变量:就是在函数外部定义的变量

               2.局部变量:就是在函数内部定义的变量

    1.全局函数和局部函数的作用域

      局部变量作用域:只能在被声明的函数内部访问,函数外部使用不了。

                                这也是不同函数里可以定义名称一样变量的原因

      全局变量作用域:可以在整个程序范围内访问,任意函数都可以访问

    #1.局部变量,外部访问不了
    def f1 (v1,v2): #参数也属于局部变量
        sum = v1+v2
        a = 5  #局部变量,函数外部访问不了
        return sum
    --------------------------------
    print(a) #报错,NameError: name 'a' is not defined
    =====================================================================
    
    #2.全部变量,函数里外都可以访问
    a =3
    def f3(v2):
      # a = a+1  注意:报错,因为局部作用域内只能引用全局域变量的值,而不能修改全局作用域的值。
      # b = a+1  则不会报错,引用全局变量的值,运算后给赋给局部变量b.
        return a+1   #外部的全局变量函数内部使用
    print(f3(1))
    =============结果如下======================
    4
    ===================================-===================================
    #3.如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的
    sum =5
    def f2(v2):
        sum =0
        while v2 < 10:
            sum += v2   #这里sum使用的是局部变量的初始值0,而不是全局sum=5
            v2 += 1
        return sum
    print(sum)
    print(f2(0))
    ===========结果如下=========================
    5     
    45
    ===========================================

    注意:1. PYTHON的作用域由def、class、lambda等语句产生,if、try、for等语句并不会产生新的作用域,换句话说就是if,try,for等语句里面定义的变量并不会随着该语句执行结束而回收,而是可以到处引用的,if,try,for等语句内变量作用域实际范围受其所在 的def,class,lambda范围约束

              2.当 Python 遇到一个变量的话他会按照这样的顺序进行搜索LEGB法则:本地作用域(Local)→当前作用域被嵌入的本地作用域(Enclosing locals)→全局/模块作用域(Global)→内置作用域(Built-in).具体什么是LEGB法则要等后面学完闭包后再讲,这里大致了解一下即可。

    2.作用域的划分LEGB

    1. L(local)局部作用域

          局部变量:包含在def关键字定义的语句块中,即在函数中定义的变量。每当函数被调用时都会创建一个新的局部作用域。Python中也有递归,即自己调用自己,每次调用都会创建一个新的局部命名空间。在函数内部的变量声明,除非特别的声明为全局变量,否则均默认为局部变量。有些情况需要在函数内部定义全局变量,这时可以使用global关键字来声明变量的作用域为全局。局部变量域就像一个 栈,仅仅是暂时的存在,依赖创建该局部作用域的函数是否处于活动的状态。所以,一般建议尽量少定义全局变量,因为全局变量在模块文件运行的过程中会一直存在,占用内存空间。
    注意:如果需要在函数内部对全局变量赋值,需要在函数内部通过global语句声明该变量为全局变量。

    2.E(enclosing)嵌套作用域

          E也包含在def关键字中,E和L是相对的,E相对于更上层的函数而言也是L。与L的区别在于,对一个函数而言,L是定义在此函数内部的局部作用域,而E是定义在此函数的上一层父级函数的局部作用域。主要是为了实现Python的闭包,而增加的实现。

    3.G(global)全局作用域

           即在模块层次中定义的变量,每一个模块都是一个全局作用域。也就是说,在模块文件顶层声明的变量具有全局作用域,从外部开来,模块的全局变量就是一个模块对象的属性。
    注意:全局作用域的作用范围仅限于单个模块文件内

    4.B(built-in)内置作用域

        系统内固定模块里定义的变量,即系统自带的的变量函数之类的。如预定义在builtin 模块内的变量。

    globa  lVar = 100           #G
    
    def test_scope():
        enclosingVar = 200    #E
        def func():
            localVar = 300    #L
    print (__name__)            #B

    2.局部变量声明为全局变量global

    val =10
    def f1(v1):
        val =5
        return val
    print(val )  #结果是10,因为局部变量val作用域只是函数内
    print(f1(1))  #5
    
    #使用global将局部变量声明为全局变量
    val =10
    def f1(v1):
        global val
        val = 30
        return val
    print(val )  #结果是10.虽然声明了global,但是函数要调用才会执行,才会更新val的值
    
    ============================================================================
    val =10
    def f1(v1):
        global val
        val = 30
        return val
    f1(2)
    print(val )  #结果是30.调用函数f1后,将val的值给刷新了。
    

    统一声明:关于原创博客内容,可能会有部分内容参考自互联网,如有原创链接会声明引用;如找不到原创链接,在此声明如有侵权请联系删除哈。关于转载博客,如有原创链接会声明;如找不到原创链接,在此声明如有侵权请联系删除哈。

    展开全文
  • Python - 变量的作用域

    万次阅读 2019-03-23 11:06:24
    Python中,一个变量的作用域总是由在代码中被赋值的地方所决定的。 当Python遇到一个变量的话他会按照这样的顺序进行搜索: 本地作用域(Local)→当前作用域被嵌入的本地作用域(Enclosing Locals)→全局/模块...

    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 

    Python中,一个变量的作用域总是由在代码中被赋值的地方所决定的。

    当Python遇到一个变量的话他会按照这样的顺序进行搜索:

    本地作用域(Local)→当前作用域被嵌入的本地作用域(Enclosing Locals)→全局/模块作用域(Global)→内置作用域(Built-in)

    展开全文
  • C语言变量的作用域

    2020-03-03 16:32:10
    文章目录一、变量的作用域二、全局变量三、局部变量四、函数的参数五、注意事项六、课后作业七、版权声明 一、变量的作用域 作用域是程序中定义的变量存在(或生效)的区域,超过该区域变量就不能被访问。C 语言中有...
  • 1.变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。全局变量的作用域是整个程序,局部变量的作用域是定义变量的函数内部,离开函数局部变量失效。 2.一个局部函数不能使用另一个...
  • 变量的作用域和生存期

    千次阅读 2017-11-27 15:47:19
    变量的作用域:即变量的作用范围(有效范围)。 表现为变量有的可以在整个程序或其他程序中进行引用,有的则只能在局部范围内引用。 按其作用域范围可分为 局部变量和全局变量 变量的生存期:变量从生成到被撤销...
  • C# 变量的作用域

    千次阅读 2017-07-04 10:06:17
    变量的作用域是可以访问该变量的代码区域
  • Java:变量的作用域

    2019-05-13 10:12:54
    变量的作用域 规定了变量所能使用的范围,只有在作用域范围内变量才能被使用。根据变量声明地点的不同,变量的作用域也不同。 根据作用域的不同,一般将变量分为不同的类型:类变量、局部变量、方法参数变量及异常...
  • Java变量的作用域

    2018-06-03 16:44:33
    在Java中,变量的作用域分为四个级别:类级、对象实例级、方法级、块级。变量的四大作用域类级变量又称全局变量或者静态变量,需要使用static关键字修饰,你可以与C/C++中的static变量对比学习。类级变量在类定义后...
  • 变量的作用域和存储方式

    千次阅读 2017-01-01 18:39:07
    变量的作用域和存储方式面试题+答案 张明阳 1.简述变量按作用域的分类 变量按作用域分:分为全局变量和局部变量 全局变量:在所有函数外部定义的变量叫做全局变量 全局变量的使用范围:从定义位置开始到下面整个程序...
  • js中变量的作用域

    千次阅读 2018-06-21 07:10:30
    一个变量的作用域(scope)是成语源代码中定义这个变量的区域。全局变量拥有全局作用域。在js中任何地方都是有定义的。然而在函数内声明的变量只在函数体内有定义。他们是局部变量,作用域时局部性的,函数参数也是...
  • Python3 变量的作用域

    2018-02-01 19:55:41
    # 变量的作用域:是指一个变量所产生作用的范围,在哪一个范围内能够被解释器识别。 # NameError: name 'name' is not defined # print name # 变量的作用域:全局变量和局部变量 # 一般声明在函数外部的变量,被...
  • java 变量的作用域

    2014-03-08 15:39:56
    什么是变量的作用域? 答:指的是变量的存在范围,只有在这个范围内,程序代码才能访问它。当一个变量被定义时,它的作用域就被确定了。 变量根据作用域的不同,可以分为哪几类? 答:4类。 1、成员变量:在类...
  • c语言变量的作用域

    2013-11-16 12:40:30
    C语言中变量的作用域 原文地址http://blog.csdn.net/guoyunhe/article/details/483982 C语言中所有变量都有自己的作用域,申明变量的类型不同,其作用域也不同。C语言中的变量,按照作用域的范围可分为两种, 即...
  • C语言中变量的作用域

    千次阅读 2016-07-06 16:16:53
    C语言中变量的作用域 C语言中所有变量都有自己的作用域,申明变量的类型不同,其作用域也不同。C语言中的变量,按照作用域的范围可分为两种, 即局部变量和全局变量。  首先确定概念:  ...
  • Shell中脚本变量和函数变量的作用域

    千次阅读 2016-03-23 10:10:42
    Shell中脚本变量和函数变量的作用域    在shell中定义函数可以使代码模块化,便于复用代码。不过脚本本身的变量和函数 的变量的作用域问题可能令你费解,在这里梳理一下这个问题。 (1)Shell脚本中定义的...
  • Python中变量的作用域

    2015-07-13 21:01:35
    Python中变量的作用域问题
  • 在java中局部变量,实例变量,类变量的作用域都分别是什么呢?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,476
精华内容 22,990
关键字:

变量的作用域