精华内容
下载资源
问答
  • 变量的作用范围: 全局变量:在整个全局范围都有效 全局变量在局部可以使用(即函数内部可以方位函数外部定义的变量) 局部变量在局部范围可以使用 局部变量在全局范围无法使用,在局部范围内(比如函数)将局部...

    变量作用域

    变量由作用范围来限制,按照作用域分类可分为:
    - 全局(global): 在函数外部定义
    - 局部(local):在函数内部定义

    变量的作用范围:
    • 全局变量:在整个全局范围都有效
    • 全局变量在局部可以使用(即函数内部可以方位函数外部定义的变量)
    • 局部变量在局部范围可以使用
    • 局部变量在全局范围无法使用,在局部范围内(比如函数)将局部变量用global函数定义为全局函数,并且调用了此函数后,在全局范围内能调用此局部变量。
      LEGB原则
      L(Local)局部作用域
      E(Enclosing function locale)外部嵌套函数作用域
      G(Global module)函数定义所在模块作用域
      B(Buildin): python内置魔抗的作用域

    global函数

    使用global函数可以将局部范围内(比如函数)的局部变量提升为全局变量。

    def fun():
        global a2
        global a3#将a2、a3定义为全局变量
        a2=20
        print(a2)
        a3 =99
        print(a3)
    #print(a2)调用函数前,调用内部变量a2会报错
    fun()#只有在调用此函数后,内部的局部变量才能被调用
    print(a2)
    print(a3)
    
    20
    99
    20
    99
    

    再举一个例子

    b2 = 22#全局变量
    def fun():
        b2 = 99#局部变量
        print(b2)
    print(b2)
    fun()#函数调用全局变量,输出b2=99
    print(b2)#函数内部没定义b2为全局变量,所以依然输出为22
    
    22
    99
    22

    globals, locals函数

    可以通过globals和locals显示出局部变量和全局变量,可以从我之前编的汉诺塔程序体会到Locals函数的好处,可以帮助理解递归中,各个变量的赋值变化。

    locas函数:

    函数功能为,返回当前作用域内的局部变量和其值组成的字典,与globals函数类似(返回全局变量),可用于函数内。函数所返回的字典集合不能修改,不知道能不能将其转换为列表进行更改,下次试试。

    def hanoi(n,a,b,c):
        if n==1:
            print(a,'-->',c)
        else:
            print(locals())
            hanoi(n-1,a,c,b)#
            print(locals())
            hanoi(1,a,b,c)
            print(locals())
            hanoi(n-1,b,a,c)
            print(locals()) 
    hanoi(3,'A','B','C')
    
    {'c': 'C', 'b': 'B', 'a': 'A', 'n': 3}
    {'c': 'B', 'b': 'C', 'a': 'A', 'n': 2}
    A --> C
    {'c': 'B', 'b': 'C', 'a': 'A', 'n': 2}
    A --> B
    {'c': 'B', 'b': 'C', 'a': 'A', 'n': 2}
    C --> B
    {'c': 'B', 'b': 'C', 'a': 'A', 'n': 2}
    {'c': 'C', 'b': 'B', 'a': 'A', 'n': 3}
    A --> C
    {'c': 'C', 'b': 'B', 'a': 'A', 'n': 3}
    {'c': 'C', 'b': 'A', 'a': 'B', 'n': 2}
    B --> A
    {'c': 'C', 'b': 'A', 'a': 'B', 'n': 2}
    B --> C
    {'c': 'C', 'b': 'A', 'a': 'B', 'n': 2}
    A --> C
    {'c': 'C', 'b': 'A', 'a': 'B', 'n': 2}
    {'c': 'C', 'b': 'B', 'a': 'A', 'n': 3}
    展开全文
  • Java变量的作用域所谓变量的作用域就是变量的有效范围。通过后面内容的学习大家会更加明白,实际上局部变量、实例变量、静态变量它们存储在Java虚拟机的不同内存区域上,所以变量有作用域的。关于变量的有效范围,...

    Java变量的作用域

    所谓变量的作用域就是变量的有效范围。通过后面内容的学习大家会更加明白,实际上局部变量、实例变量、静态变量它们存储在Java虚拟机的不同内存区域上,所以变量是有作用域的。

    关于变量的有效范围,在这里我给大家总结了一个口诀:出了大括号就不认识了。虽然这句话属于大白话,但很实用。我们来测试一下:

    public class VarTest05 {

    //后面会学习为什么这里的变量定义为静态变量

    static int i = 1000;

    public static void main(String[] args) {

    System.out.println("k = " + k);

    int k = 100;

    System.out.println("k = " + k);

    int i = 2000;

    System.out.println("i = " + i);

    }

    //后面会学习方法怎么定义

    public static void m1(){

    System.out.println("k = " + k);

    }

    public static void m2(){

    System.out.println("i = " + i);

    }

    }

    编译报错了:wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    19bf18e8ea3c5d8335eb283a05bcf68d.png

    图3-6:变量的作用域

    通过以上的测试我们发现:

    ● 方法体当中的代码是有执行顺序的,遵循自上而下的顺序依次逐行执行,变量在没有声明的时候是不能访问的,需要先声明,接下来才能访问。

    ● 另外在main方法中声明的变量k有效范围是main方法,只能在main方法中使用,出了大括号就不认识了,在m1方法中是无法访问的。

    ● 在类体当中声明的变量i作用域是整个类体,所以在m2方法中是可以使用的。

    修改以上代码并运行:

    public class VarTest05 {

    //后面会学习为什么这里的变量这个时候定义为静态变量

    static int i = 1000;

    public static void main(String[] args) {

    //System.out.println("k = " + k);

    int k = 100;

    System.out.println("k = " + k);

    int i = 2000;

    System.out.println("i = " + i);

    }

    //后面会学习方法怎么定义

    public static void m1(){

    //System.out.println("k = " + k);

    }

    public static void m2(){

    System.out.println("i = " + i);

    }

    }

    运行结果如下图所示:wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    908e5d45caac22af27d415bb98b70f53.png

    图3-7:变量作用域

    通过以上程序的运行结果得知,java是遵循就近原则的,在类体当中有i变量,在main方法中声明了i变量,那么在main方法中一定访问离自己最近的变量,也就是就近取材,这就是就近原则,几乎所有的编程语言都是这样的。

    展开全文
  • 变量的作用域变量的作用域(scope)指变量能够被引用的区域,也就是可以使用该变量的程序范围。截止到目前为止,我们在程序例子中声明的变量都被定义在main()方法内。在一个方法内声明的变量被称作局部变量(local...

    d32e19939d4e11d26c68d428ef8fde5f.png

    6365301500323120816203128.jpg

    变量的作用域

    变量的作用域(scope)是指变量能够被引用的区域,也就是可以使用该变量的程序范围。截止到目前为止,我们在程序例子中声明的变量都被定义在main(

    )方法内。在一个方法内声明的变量被称作局部变量(local

    variable),它们只能在声明它们的方法中被访问,但并不是在声明它们的方法中的任何位置都可访问。请看下面这个例子,它在方法中又内嵌了一个块。

    int a=1; //Declear and define a

    //Reference to a is ok here

    //keference to b here is an error

    {

    //Reference to a here is ok

    //Reference to b here is untill an error

    int b=2; //Delear and define b

    //Reference to a and b are Ok here -b exists new

    }

    //Reference to b is an error here here-it doesn't exist

    //Reference to a is still ok though

    一个变量在声明前并不存在,只有被声明后才可以对它进行引用。在定义它的块结束前一直存在,其中包括该块内嵌套的所有块。变量b只能在最内层的块中存在。在最内层的大括号之后,b就不存在了。而变量a在大括号结束前一直存在。

    因此,局部变量的访问规则很简单。它们可被访问的范围是:在程序中,从声明它们的位置开始,到声明它们的块结束处。在声明它们的块结束之后,就不能再被访问了。我们可以用下个例子演示它:

    试试看--作用域。

    我们将定义方法main()说明如何应用变量作用域工作。首先,我们声明并初始化变量outer,然后开始一个内层块。在该块内,我们将定义一个变量inner.在块结束之后,我们将再次声明变量inner并再次使用它。

    piblic class scope

    {

    syetem.out.println("inner *"+inner);//Uncooment this for an error 1 error

    如何工作

    在这个程序中的方法main()内只嵌套了一个块。变量outer在开始处就被定义,所以在方法main()的任何地方,包括嵌套的所有块中都可以引用它。变量不能被重复声明,若将注释标志删除,在内层块中被注释起来的变量outer的声明语句就会导致编译错误。

    变量inner在嵌套块内定义并被赋初始值2,从它的声明处到内层块结束处,你都可以它进行引用。在内层块结尾的大括号之后,变量inne:不再存在,所以被注释起来的引用~的输出语句是非法的。然而,因为变量mtier己经不存在,所以我们可以用同样的名字声明另一个变量并将它赋初值为3.

    注意:所有这些都说明了局部变量的生存期。重新定义一个已经不存在的变量并不是一个好的做法,因为这很容易引起混乱。虽然,我们在上述例子中仅使用了int类型变量,但是变量的作用域规律对所有类型的变量来说都是一样的。

    有另一种被称为类变量的变量,当用一种特定的方法声明它们时,它们可以拥有很长的生命期。例如,在标准的类Math中变量PI和E就是这种类型变量,只要你的程序处于运行;它们就可被使用,还有另一种被称为实例变量的变量,它是构造类对象,我们将在第5章中进一步学习这方面的内容。

    考无忧小编推荐:

    更多计算机等级考试真题及答案>>>点击查看

    想知道更多关于计算机等级报考指南、考试时间和考试信息的最新资讯在这里>>>

    本文网址:http://www.k51.com.cn/info/jsjdjks/1802/0226640.html

    展开全文
  • 所以,实际上,全局变量和局部变量和内存并不存在绝对直接关系。实际上,不管全局还是局部变量,他标识都保存在栈里面。成员变量作用域在整个类,方法中为什么可以再重复定义?因为在java中,局部定义...
    实际上,java里面,在同一个作用域下,不能定义一样的标识符(也就是你做说的变量名)。为什么呢?因为,他需要保证你在某个作用于下使用某个标识符的时候,JVM能够正确进行区分!所以,实际上,全局变量和局部变量和内存并不存在绝对直接的关系。实际上,不管是全局的还是局部的变量,他的标识都是保存在栈里面的。

    成员变量作用域在整个类,方法中为什么可以再重复定义?
    因为在java中,局部定义的变量能够覆盖全局范围内的变量。在局部使用某个变量的时候JVM会优先找和当前使用位置"近"的变量的的定义!如果在局部定义了和全局变量一样的名字,我们使用的过程中,调用全局变量的话,会使用this关键字辅助。如:
    class A{
    int i=10;
    void f(){int i=100;
    System.out.println(this.i);//全局
    System.out.println(i);//局部
    }
    }
    展开全文
  • js 文档的时候经常会设置变量,变量的类型有两种:全局变量局部变量这两种类型的变量有者不同的作用范围,全局变量的作用范围是面向整个文档的,可以称之为全局作用域局部变量是在函数内部设置的,作用范围为当前...
  • 在程序中定义一个变量时,这个变量有作用范围的,变量的作用范围被称为它的作用域。 根据定义变量的位置,变量分为两种: 局部变量:在函数中定义的变量,包括参数,都被称为局部变量。 全局变量:在函数外面、...
  • JS变量的作用域

    2020-03-22 18:22:01
    首先来了解一下什么变量的作用域? 所谓的变量的作用域,就是变量的使用范围,每一个变量都有自己的使用范围。通俗的来讲就好像美元和人民币一样,只能在自己的国家使用。 变量的作用域分为两种: 1,定义在函数之内...
  • JavaScript变量的作用域

    2020-03-17 20:27:13
    什么变量的作用域? 所谓的变量的作用域,就是变量的使用范围 每一个变量都有自己的使用范围 就好像Q币,只能在QQ号登录的业务中使用 王者荣耀的金币钻石,只能在王者荣耀的商城中使用 变量的作用域分为两种: ①定义...
  • python变量的作用域

    2018-02-01 19:21:20
    # 变量的作用域:全局变量作用域、局部变量作用域 # 全局变量:一般在函数、代码块外部声明的变量,被称为全局变量,作用域范围, # 从声明的位置开始往下,一直到文件的末尾都可以使用 b = 10 # 局部变量:一般在...
  • 是作用域:一句话概括就是变量和函数可访问范围 作用域分为三种:全局作用域(全局变量),局部作用域局部变量),块级作用域(es6新增) 什么是全局变量(在函数外定义变量) 什么是局部变量(在函数内...
  • python中变量的作用域

    2018-01-31 22:16:12
    变量的作用域:全局变量的作用域、局部变量的作用域 全局变量:一般在函数、代码块外部声明的变量,被称为全局变量,作用范围从声明的位置往下,一直到文件的末尾都可以使用 局部变量:一般在函数内部或代码块...
  • 函数作用域:function 函数名(){ }大括号的范围就是 这个函数的作用域 全局作用域:整个页面 局部作用域:函数内部(大括号内) 局部变量:声明在某个函数内部的变量,只能在函数内部使用 全局变量:声明在所有函数外部的...
  • 本文主要为大家简述Python作用域基础概念,从而明白什么是python 全局变量和局部变量什么是python作用域 作用域简单说就是一个变量的命名空间。代码中变量被赋值的位置,就决定了哪些范围的对象可以访问这个...
  • 变量的作用域指变量在程序中的作用范围。C语言中变量要先定义,后使用。但是定义变量要放在程序的什么位置?在程序的什么范围可以访问所定义的变量?作用域与变量定义的位置有关。 变量的生存期:指变量存在...
  • java 变量的作用域

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

    2018-01-31 21:11:50
    # -*- coding:utf-8 -*- 什么是作用域?就是指一个变量产生作用的范围,...变量的作用域:全局变量作用域,局部变量作用域 # 全局变量:(顶格写)一般在函数、代码块外部声明的变量,被称为全局变量,作用域范围
  • # 变量的作用域:全局变量作用域、局部变量作用域 #------------------------------------------------------------------ # 全局变量:一般在函数、代码块外部声明的变量,被称为全局变量,作用域范围从声明的...
  • Python函数变量作用域及其搜索范围

    千次阅读 2020-07-05 06:52:03
    由此可见虽然变量a同名的但是他们在不同位置所代表的含义并不同,这就是变量在不同位置有着不同的作用域。 1.变量的搜索顺序 当存在嵌套函数即函数套函数时,可能存在变量同名的情况,这些变量虽然名字相同但是...
  • 什么是变量的作用域呢?变量,前面已经学过;作用域,计算机专业用语。变量的作用域,简单说,就是变量的使用范围。如下图所示,函数外的变量,我们称为全局变量,如变量a,它的作用域(使用范围整个黄色和...
  • 一、JS中的作用域 理解: 作用域:代码(变量|函数)在某一个地方的作用 (即变量|函数在JS中的什么地方,起的什么作用) 结论1: 在全局范围内,声明的变量和函数,其实都window对象的属性或者方法 1.变量 弹出两个...
  • 这两种类型的变量有者不同的作用范围,全局变量的作用范围是面向整个文档的,可以称之为全局作用域局部变量是在函数内部设置的,作用范围为当前的函数,外部不能直接引用,因此称为函数作用域。 var a=1; function...
  • js变量作用域

    2020-03-17 19:49:23
    什么变量的作用域? 所谓的变量的作用域,就是变量的使用范围 每一个变量都有自己的使用范围 变量的作用域分为两种 1,定义在函数之内的变量 包括函数的参数,定义在函数内部的变量,都称为局部作用域变量 / 局部...
  • 作用域是什么 变量作用域,其实就是变量可以在哪些范围内可以使用,哪些范围内不可以使用。这里只讲函数中变量的作用域局部变量和全局变量 作用域的种类 面向过程编程就涉及函数的变量作用域,面向对象编程变量就...
  • 什么是变量的作用域?变量的作用域是指在脚本的一次生命周期内变量的有效范围。一般来说有全局和局部之分
  • 每个变量都有自己的作用域,更通俗地讲,就是在什么范围是可用。根据作用域,我们可以将变量氛围两种类型: 局部变量 全局变量 1.局部变量 每次函数的调用都会创建一个局部变量。 def f(): x=10 return x*x ...
  • 就是某个(变量)在某个范围内起作用和效果,出了这个变量的作用域就不起效果; 作用域主要分为2个,全局作用域和局部作用域; <script> // 1.全局作用域: 整个script标签下 或者单独的js文件(外部js) /...
  • 在前面案例中我们看到主程序中包含了函数...局部变量也称内部变量,局部变量是在函数内定义,其作用域仅限于函数内,离开函数再使用这种变量非法。 例如: def sum(m): s=0 for p in range(m+1): s=s+p ...
  • 作用域范围是程序区域,并从广义上说有三个地方可以变量声明: 内部函数或被称为局部变量 形式参数 - 函数参数定义 所有函数外称为全局变量 下面就让我们来解释一下什么是局部和全局变量。 局部变量: ...
  • javascript变量作用域

    2016-09-04 18:25:54
    1、什么是变量的作用域? 在js中,变量的作用指的就是变量起作用的范围   2、变量作用域的分类 js中变量的作用域分为全局作用域和局部作用域 3、怎么样区分? 根据function来划分 全局变量:在函数外定义的...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 339
精华内容 135
关键字:

局部变量的作用域是什么范围