精华内容
下载资源
问答
  • 局部变量和全局变量作用

    千次阅读 2019-06-30 19:10:34
    局部变量:在函数内部定义的变量,只在函数内部起作用,函数执行结束,变量会自动删除 即在一个函数内部定义的变量,只在本函数范围内有效 全局变量:“在函数外定义的变量”,即从定义变量的位置到本源文件结束都...

    局部变量:在函数内部定义的变量,只在函数内部起作用,函数执行结束,变量会自动删除
    即在一个函数内部定义的变量,只在本函数范围内有效
    全局变量:“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效
    即可以被程序所有对象或者函数引用  
    当有外部变量时,main函数中的同名变量就是全局变量。如果没有外部变量,main函数里的变量依然是局部变量
    或者也可以直接在函数内部声明变量为全局变量

    目的:增加函数间数据联系的渠道。由于同一文件中的所有函数都能引用全局变量的值
    因此如果在一个函数中改变了全局变量的值,就能影响到其他函数中全局变量的值,相当于各个函数之间有直接的传递渠道

    a = 1
    print('out: ',id(a))查看变量的id
    def fun():
        global a
        a = 5
        print('in: ',id(a))
    fun()
    print(a)
    print(id(a))
    id是查看变量在内存中存放区域的编号
    

    在这里插入图片描述
    在这里插入图片描述
    此时函数内部定义的a是全局变量,所有的输出均为全局变量的信息
    在这里插入图片描述
    在这里插入图片描述
    此时函数外面的a是全局变量,所有的输出是全局变量的信息,局部变量只在函数内部起作用

    展开全文
  • 本文实例讲述了Python3.5局部变量全局变量作用域。分享给大家供大家参考,具体如下: 1、局部变量与全局变量定义: 在子程序(函数)中定义的变量称为:局部变量;在程序顶级(一开始)定义的变量称为:全局变量。...
  • 二、变量作用域分为:局部变量和全局变量。1、局部变量://就是定义在函数内部的变量(内部变量),局部变量起作用的范围是函数内部。//局部变量就是私有的变量2、全局变量://就是定义在函数外部的变量(外部变量)...

    一、变量的作用域:

      变量起作用的范围,变量在啥地方能用。那么啥地方就是它的作用域。


    二、变量作用域分为:局部变量和全局变量。


    1、局部变量:

    //就是定义在函数内部的变量(内部变量),局部变量起作用的范围是函数内部。
    //局部变量就是私有的变量

    2、全局变量:

    //就是定义在函数外部的变量(外部变量),
    //全局变量起作用的范围是当前文件中的所有函数。
    //全局变量就是所有函数共享的变量

    三、代码示例

    1、局部变量

    function testf1(){
    	var age = 100;//定义了一个局部变量age;age只能在函数testf1内部使用,其它函数不能使用
    	console.log("testf1:age="+age);
    	console.log("testf1:name="+name1);//出错:name1 is not defined;
    }
    
    function testf2(){
    	var name1 = "张三疯";//定义了一个局部变量name1;name1只能在函数testf2内部使用,其它函数不能使用
    	console.log("testf2:age="+age);//出错:
    	console.log("testf2:name="+name1);
    }
    
    function testf(){
    	console.log("testf:age="+age);//出错
    	console.log("testf:name="+name1);//出错:
    	testf1();
    	//testf2();
    }
    

    2、全局变量

    var age = 250;//定义一个全局变量age,赋值为250;
    
    function testf(){
    	testf1();
    	testf2();
    	console.log("testf:age="+age);//251
    }
    
    function testf1(){
    	console.log("testf1:age="+age);	//250
    }
    
    function testf2(){
    	age = 251;
    	console.log("testf2:age="+age);//251
    }

    3、全局变量和局部变量重名:

    就近原则:当前全局变量和局部变量重名时,在函数内部使用的是局部变量

    var age=250;
    function testf(){
    	var age = 10;//声明,并赋值;
    	console.log("testf:age="+age);//age是局部变量,因为testf函数内部定义了age。10;
    	testf1();
    }
    
    function testf1(){
    	console.log("testf1:age="+age);age是全部变量,因为testf1函数内部没有定义age。250;
    }



    -----------------------------------测试代码----------------------------------


    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		
    	</head>
    	<body>
    		<input type="button" value="  测试  " onclick ="testf()" />		
    	</body>
    </html>
    <script type="text/javascript" src="js/tools.js"></script>
    <script type="text/javascript">
    //一、变量的作用域:变量起作用的范围,变量在啥地方能用。那么啥地方就是它的作用域。
    
    //二、变量作用域分为:局部变量和全局变量。
    
    //局部变量:
    //就是定义在函数内部的变量(内部变量),局部变量起作用的范围是函数内部。
    //局部变量就是私有的变量
    
    //全局变量:
    //就是定义在函数外部的变量(外部变量),
    //全局变量起作用的范围是当前文件中的所有函数。
    //全局变量就是所有函数共享的变量
    
    //三、代码示例
    
    //1、局部变量
    /*
    function testf1(){
    	var age = 100;//定义了一个局部变量age;age只能在函数testf1内部使用,其它函数不能使用
    	console.log("testf1:age="+age);
    	console.log("testf1:name="+name1);//出错:name1 is not defined;
    }
    
    function testf2(){
    	var name1 = "张三疯";//定义了一个局部变量name1;name1只能在函数testf2内部使用,其它函数不能使用
    	console.log("testf2:age="+age);//出错:
    	console.log("testf2:name="+name1);
    }
    
    function testf(){
    	console.log("testf:age="+age);//出错
    	console.log("testf:name="+name1);//出错:
    	testf1();
    	//testf2();
    }
    
    */
    
    //2、全局变量:
    /*
    var age = 250;//定义一个全局变量age,赋值为250;
    
    function testf(){
    	testf1();
    	testf2();
    	console.log("testf:age="+age);//251
    }
    
    function testf1(){
    	console.log("testf1:age="+age);	//250
    }
    
    function testf2(){
    	age = 251;
    	console.log("testf2:age="+age);//251
    }
    */
    
    
    //3、全局变量和局部变量重名:
    //就近原则:在函数内部使用的就是局部变量
    var age=250;
    function testf(){
    	var age = 10;//声明,并赋值;
    	console.log("testf:age="+age);//age是局部变量,因为testf函数内部定义了age。10;
    	testf1();
    }
    
    function testf1(){
    	console.log("testf1:age="+age);age是全部变量,因为testf1函数内部没有定义age。250;
    }
    
    </script>
    

    展开全文
  • python变量的作用域:局部变量和全局变量

    万次阅读 多人点赞 2018-08-10 18:14:10
    变量定义以后,是有一定的使用范围,称之为变量的作用域。比如Java中,变量的使用范围是变量声明时所在的{}范围,而python的作用域对应的为同一个缩进。按着变量的使用范围给变量划分成... 局部变量作用域:只能在...

           变量定义以后,是有一定的使用范围,称之为变量的作用域。比如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学习中一个必须理解掌握的环节,下面我们从局部变量和全局变量开始全面解析Python中变量的作用域,需要的朋友可以参考下
  • 局部变量和全局变量,以及作用范围

    万次阅读 多人点赞 2018-11-11 13:56:55
    变量按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。 变量按作用域分:  全局变量:在整个工程文件内都有效;“在函数外定义的变量”,即从定义变量...

           在写工程文件的时候,犯了一个基础性的错误,基础不牢,地动山摇。所以通过查阅资料回顾了一些相关知识,并记录下来。防止以后再发生这种惨案。

    变量按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区

    变量按作用域分:

    1.     全局变量:整个工程文件内都有效;“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效。由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值, 就能影响到其他函数中全局变量的值。
    2.     静态全局变量:只在定义它的文件内有效,效果和全局变量一样,不过就在本文件内部;
    3.     静态局部变量:只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;静态局部变量的生存期虽然为整个工程,但是其作用仍与局部变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。     
    4.   局部变量:在定义它的函数内有效,但是函数返回后失效。“在函数内定义的变量”,即在一个函数内部定义的变量,只在本函数范围内有效。

    注意:全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。

    静态局部变量全局变量最明显的区别就在于:全局变量在其定义后所有函数都能用,但是静态局部变量只能在一个函数里面用。

    形参变量 :  只在被调用期间才分配内存单元,调用结束立即释放。

          在做工程的时候,我将全局变量传入函数的形参中,没注意将形参和全局变量同名了,导致全局的变量的值一直没有改变,错误的认为,编译器问题。。。。。。-_-|| 哈哈哈,论菜鸟是怎样炼成的。写个相似的代码,记录一下这个错误。

    #include "stdio.h"
    int Max = 1;
    void add(int Max)
    {
        Max = 2;
    }
    
    int main()
    {
    	add(Max);
    	printf("Max = %d",Max);
    	getchar();
    
    	return 0;
    }

    进入函数后,形参的优先级要高于全局变量了,且函数执行完后,形参释放。这时候对代码进行如下的修改,才能得到想要的效果。地址传参,要么有返回值赋值的方式。

    #include "stdio.h"
    int Max = 1;
    void add(int *Max)
    {
        *Max = 2;
    }
    
    int main()
    {
    	add(&Max);
    	printf("Max = %d",Max);
    	getchar();
    
    	return 0;
    }

    记录一下这个不好的习惯,变量命名要规矩,不能出现歧义性。

    展开全文
  • 局部变量和全局变量总汇,希望对大家有帮助!
  • 主要涉及了java中的局部变量和全局变量,就二者的含义、生存时间创建位置作了介绍,需要的朋友可以参考下。
  • 静态全局变量,静态局部变量,全局变量,局部变量静态全局变量,静态局部变量,全局变量,局部变量
  • java中的局部变量和全局变量

    万次阅读 多人点赞 2017-08-18 15:09:10
    Java变量 java中主要有如下几种类型的变量: ...一、局部变量 ...只在特定的过程或函数中可以...局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会
  • 局部变量和全局变量是从作用域分类的 外部变量就是前面加了extern,这个是从生存期定义的 这个两者应该不能混为一谈 为什么很多地方就默认为内部变量外部变量就是局部变量和全局变量 这样子的话那么这句话怎么理解...
  • 局部变量和全局变量的区别

    千次阅读 2017-03-05 18:17:45
    1、全局变量 全局变量也成为外部变量,它是在函数外部...在C等面向过程语言中,局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。 #
  • python的 局部变量和全局变量

    万次阅读 2017-07-31 19:12:06
    全局变量:所有函数之外定义的变量局部变量:函数内部定义的变量 或者代码块里的变量1....如果这个变量名字全部变量名字相同,那么局部变量名字会覆盖全局变量名字。#[demo1] num = 100 def func(): newVa
  • Python局部变量和全局变量区别

    千次阅读 2018-05-29 15:31:52
    全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量 局部变量: 在函数内、在class的方法内(未加self修饰),这就是局部变量 2. 如何使用: 在def中,我们可以定义一个局部变量,该变量仅仅在...
  • python的局部变量和全局变量区别

    千次阅读 2018-01-16 15:37:59
    全局变量:所有函数之外定义的变量 局部变量:函数内部定义的变量 或者代码块里的变量 ...如果这个变量名字全部变量名字相同,那么局部变量名字会覆盖全局变量名字。 #[demo1] num = 100 def fu
  • 【C语言】C语言局部变量和全局变量

    千次阅读 2016-02-13 16:41:30
    全局变量】 · 定义 · 作用域 · 生命周期 【外部变量】 · 定义 · 用extern修饰变量 【内部变量】 · 定义 · 用static修饰变量 1.局部变量 · 定义 在函数(代码块)内部定义的变量称为局部变量...
  • javascript 关于局部变量和全局变量

    千次阅读 2014-10-04 09:54:29
    js中函数执行过程不只是单纯的局部变量覆盖全局变量
  • 局部变量和全局变量重名的时候,局部会屏蔽全局变量,如果需要使用全局变量,需要使用“::"。 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而...
  • [第五章]函数对变量的作用...2. 局部变量 : 局部变量指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不存在>>>n = 1 #n是全局变量 >>def func(a, b): c = a*b return c >>>s = func("knock~", 2) >>>
  • 关于ArrayList存储局部变量和全局变量的易错笔记
  • 概念首先得明白局部变量,静态局部变量全局变量,静态全局变量这几个概念,以下面程序举例://main....全局变量:具有全局作用域,全局变量只需在一个源文件中定义,就可以作用于所有的源文件。 静态全局变量:具有全
  • shell局部变量和全局变量

    千次阅读 2017-11-04 22:24:35
    局部变量和环境变量,局部变量只适用于当前shell,而环境变量是全局的,它适用于所有当前shell以及其派生出来的任意子进程,有些变量是用户创建的,其他的则是专用的shell变量。 二、局部变量 局部变量作用域被...
  • 局部变量和全局变量,externstatic

    千次阅读 2016-07-24 19:34:59
    局部变量和全局变量,externstatic
  • 2、局部变量全局变量作用域: 局部变量作用域:定义该变量的子程序;全局变量作用域:整个程序。 当局部变量与全局变量同名时,在定义局部变量的子程序内局部变量其作用;其他地方全局变量起作用。 #!/usr/bin/...
  • OC中局部变量,全局变量和成员变量

    千次阅读 2015-11-13 00:55:43
    OC中局部变量,全局变量和成员变量

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 375,686
精华内容 150,274
关键字:

局部变量和全局变量的作用