精华内容
下载资源
问答
  • 本文主要讲述python全局变量局部变量和导入模块变量的方法。具有很好的参考价值,下面跟着小编一起来看下吧
  • 全局变量:在模块内、在所有函数的外面、在class外面 局部变量:在函数内、在class的方法内 下面来看看例子 一、函数内部调用全局变量 a="hello" #全局变量a def test(): global a#调用全局变量a b =a #test方法...
  • 局部变量全局变量

    2020-11-02 15:34:48
    全局变量:就是在函数外部定义的变量。(注意是定义在所有函数的外部)。所有的函数内部都可以使用这个变量。 二、局部变量 1. 函数外部不能使用局部变量。【例1】【例2】 2. ...

     

     

    一、定义

    局部变量:就是在函数内部定义的变量。这个变量只能在定义这个变量的函数内部使用。

    全局变量:就是在函数外部定义的变量。(注意是定义在所有函数的外部)。所有的函数内部都可以使用这个变量。

     

     

     

     

    二、局部变量的使用

    1. 函数外部不能使用局部变量。【例1】【例2】

    2. 函数执行时,执行到创建局部变量的地方,局部变量才会创建。当函数执行完后,局部变量也就死亡了。只有在生命周期内才能使用这个变量。

    3.  不同的函数内部,可以定义相同的局部变量。彼此之间没有任何关系。【例3】

     

    例1:函数外部不能使用局部变量

     

    结果:

     

    例2:函数外部不能使用局部变量

     

    结果:

     

     

    例3:

     

    结果:

     

    三、全局变量的使用

    1. 全局变量就是在函数外部定义的变量。【例1】

    2. Python有一个限制:在函数内部不允许改变全局变量的值。【例2】

        如果确实需要在函数内部对全局变量进行修改,可以使用global关键字声明一下。【例3】

    3. 要注意全局变量定义的位置。虽然也可以定义在函数下方【例4】,但是有时候容易出错【例5】,最好是把所有的全局变量统一放在所有函数的上方进行定义。【例6】

        在实际代码开发的时候,最好这样写:

        

     

    4. 全局变量的命名建议

        如果全局变量起名字的时候很普通,那么在函数内部起名字的时候有可能也起了这个名字,这个时候就会混淆。所以有的公司规定,在给全局变量起名字的时候加上"g_"或"gl_"的前缀。【例7】

     

     

     

     

     

    例1:

     

    结果:

     

     

    例2:在函数内部不能修改全局变量的值

     

     

    结果:

     

    执行完fun2()之后,输出的值还是10。说明fun1()中的语句并不是改变全局变量num的。

     

     

    例3:使用global关键字

     

    结果:

     

    执行完fun2()之后,输出的值是20。说明fun1()中的语句改变了全局变量num的值。

     

     

     

    例4:代码可以成功执行么?

     

    结果:

     

    fun1()中是认识num1的。为什么呢?

    先执行第1句。

    然后到第3句,发现是个函数定义,就会跳过。不执行。

    再执行第9行,现在有了num1了。

    在执行第11行。会调用fun1()

    进入fun1()之后,执行第5句的时候因为已经有全局变量num,所以输出。执行第6句的时候,因为已经有全局变量num1,所以会输出。

     

    所以上面的程序是可以成功执行的。

     

     

     

    例5:代码可以成功执行么?

     

    结果:

     

     

    当执行到12行的时候,已经知道num和num1这两个变量了。但是还不知道num2这个变量。所以调用fun1()时,找不到num2。

     

     

    例6:

     

    结果:

     

     

    例7:推荐给全局变量这么起名字,这样函数里面的变量名就不可能重了。

     

    结果:

     

     

     

     

     

     

     

    展开全文
  • python全局变量-局部变量区别及用法

    万次阅读 多人点赞 2017-11-13 11:12:36
    python里面全局变量局部变量的区别就常用情况

    对于很多初学的同学,对全局和局部变量容易混淆,看看下面给大家的讲解相信都应该明白

     

    两者的区别了。

     

    定义:

    全局变量:在模块内、在所有函数的外面、在class外面

    局部变量:在函数内、在class的方法内

     

    下面来看看例子

    一、函数内部调用全局变量

     

    a="hello"  #全局变量a
    def test():
        global a#调用全局变量a
        b =a     #test方法里之后再调用a时,都是全局的a
        print(b,a)
    test()

     

    在test函数里调用全局变量a,看看运行后的结果


    运行后都是全局变量的值hello

    二、函数内部使用与全局变量同名的局部变量

     

    a="hello"  #全局变量a
    def test():
       
    a="hell0 local" #定义了一个局部变量a
       
    b =a     #test方法里之后再调用a时,都是局部的a
       
    print(b+",",a)
    test()

     

    这里在函数test里面再定义了一个a,这个a就为局部变量了,之后在test里调用的a全都是局部的a。看看运行结果:

     

    三、函数内部修改全局变量值

     

    a="hello"  #全局变量a
    def test():
        global a
        a="hell0 global" #修改全局变量a的值
        b =a     #test方法之里后再调用a时,都是全局的a
        print(b+",",a)
    test()

     

    在函数test里面先声明用的是全局的a,然后对a进行修改,就等于是修改了全局变量a的值。

    看看运行结果:

     

       注:在方法内部的变量是在=号前面的,那肯定是局部变量。如果是第一次出现在=号后

     

    面的,那肯定是调用的全局变量;全局变量可以在函数里面调用,局部变量只能在对应的函

     

    数里面调用,在该函数外面任何地方都无法被调用。

     

    有问题加QQ群交流610845268

    展开全文
  • 1、局部变量能否和全局变量重名?  答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器...

    1、局部变量能否和全局变量重名?   

      答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: " 

        局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 

    2、如何引用一个已经定义过的全局变量?   

      答:可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 


    3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?  

      答:可以,在不同的C文件中以static形式来声明同名全局变量。前提是只能有一个C文件中对此变量赋初值,连接才不会出错 

     

    4、语句for( ;1 ;)有什么问题?它是什么意思?  

      答:和while(1)相同。 


    5、do……while和while……do有什么区别?   

      答:前一个循环一遍再判断,后一个判断以后再循环   

    6、请写出下列代码的输出内容   

    #include <stdio.h>     
    main()     
    {      
    int a,b,c,d;      
    a=10;   
    b=a++;    
    c=++a;    
    d=10*a++;   
    printf( "b,c,d:%d,%d,%d",b,c,d);   
    return 0;   
    } 

     

     答:10,12,120 


    7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 

    答:static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

           static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

           static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

     

    (1)用static定义的全局变量,构成静态的全局变量,若是一个源程序由多个源文件组成,一般的全局变量在各个源文件中都是有效的,而用static修饰的全局变量只在定义该变量的源文件中是有效的,因此static限制了全局变量的作用范围。
    (2)普通局部变量在所在的函数每次调用的时候都会被重新分配存储空间,函数结束后,就会回收该存储空间。而用static修饰的局部变量不会,它的值始终保持着。
    (3)static函数与普通函数作用域不同,它仅作用于定义它的源文件中。

    (4)储存方式:程序的局部变量存在于(堆栈)中,全局变量存在于(静态区/全局区)中,动态申请(new)数据存在于(堆)中。

      

    8.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?


    c用宏定义,  #define S(a,b) a*b

    c++用inline  

    引入内联函数的目的是为了解决程序中函数调用的效率问题。内联函数是指用inline关键字修饰的函数。任何在类的说明部分定义的

    函数都会被自动的认为是内联函数。

    它与一般函数所不同之处只在于函数调用的处理。

    内联函数必须是和函数体声明在一起才有效。像这样的申明Inline Tablefunction(int I)是没有效果的,编译器只是把函数作为普通的函数声明,

    我们必须定义函数体。

    Inline tablefunction(int I) {return I*I};  这样我们才算定义了一个内联函数。我们可以把它作为一般的函数一样调用。

    但是执行速度确比一般函数的执行速度要快。

    (C#有无内联函数:C#就没有头文件,哪来的内联外联?要说内联,应该全都是内联,因为所有函数什么的都定义在一个文件里。存在内联函数,但要注意,在何处内联代码的决定完全由CLR做出,我们无法使用像C++中inline这样的关键字来控制那些方法是内联的。)

     

     

    全局变量、局部变量、静态全局变量、静态局部变量的区别

    C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。

    从作用域看:

    全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。

    静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。

    局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。

    静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。

    从分配内存空间看:
    全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间

     

     

    全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

        1)、静态变量会被放在程序的静态数据存储区(数据段)(全局可见)中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
      2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。

    从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。应予以注意。

    Tips:
      A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
      B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
      C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题,因为他们都放在静态数据存储区,全局可见;
        D.如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数)
        E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

    -----------------------------------------------------------------------------------------------------------

    static 全局变量:改变作用范围,不改变存储位置

    static 局部变量:改变存储位置,不改变作用范围

    静态函数 :在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。

                    如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数也称为内部函数。定义一个内部函数,只需在函数类型前再加一个“static”关键字即可。

     

     

    参考:

    https://www.cnblogs.com/burandanxin/archive/2009/10/16/1584735.html

    https://blog.csdn.net/Zhanganliu/article/details/79185251

    展开全文
  • 主要介绍了Javascript学习之谈谈JS的全局变量局部变量虽然脚本之家小编以前发过,但还是这篇文章整理的比较好,需要的朋友可以参考一下
  • 这篇文章主要介绍了图解python全局变量...我们把新创建的一个.py文件看做事一个模块,在模块内定义的变量,如a,就是这个模块全局变量,作用于全局,不论在哪都可以调用, 但是b和c 是定义在函数内部的,我们叫做局部
  • 这篇文章主要介绍了图解python全局...我们把新创建的一个.py文件看做事一个模块,在模块内定义的变量,如a,就是这个模块全局变量,作用于全局,不论在哪都可以调用, 但是b和c 是定义在函数内部的,我们叫做局部变量
  • 最近在学习VUE.js 中间涉及到JS全局变量,与其说是VUE的全局变量,不如说是模块化JS开发的全局变量。 1、全局变量专用模块 就是以一个特定模块来组织管理这些全局量,需要引用的地方导入该模块便好。 全局变量专用...
  • 1,全局变量 ** 1,在函数和类定义之外声明的变量。 作用域为定义的模块,从定义位置开始,知道模块结束。 2,全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。 3,全局变量一般做常量使用 4...

    **

    1,全局变量

    **

    1,在函数和类定义之外声明的变量。

    作用域为定义的模块,从定义位置开始,知道模块结束。

    2,全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。

    3,全局变量一般做常量使用

    4,在函数内要改变全局变量的值,要使用global声明一下

    全局变量的作用域测试:

    a = 100		#全局变量
    
    
    def f1():
        global a			# 在函数内改变全局变量的值,增加global关键字声明
        print(a)				# 打印全局变量a的值
        a = 400
    
    f1()
    print(a)				# 打印修改后全局变量a的值
    

    运行结果如下:

    100
    400
    

    **

    2,局部变量

    **
    1,在函数体中(包含形式参数)声明的变量

    2,局部变量的引用比全局变量快,优先考虑使用

    3,如果局部变量和全局变量同名,则在函数内隐藏全局变量,只使用同名的局部变量

    全局变量和局部变量的同名测试

    a = 1
    
    
    def f1():
        a = 400
        print(a)
    
    
    f1()
    print(a)
    

    运行结果为:

    400
    1
    

    输出局部变量和全局变量

    a = 100
    
    
    def f1(a, b, c):
        print(a, b, c)
        print(locals())
        print("*" * 20)
        print(globals())
    
    f1(2, 3, 4)
    
    

    运行结果为:

    2 3 4
    {'c': 4, 'b': 3, 'a': 2}
    ********************
    {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000235B34D4FD0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'E:/06_面向对象/LX_15_单例.py', '__cached__': None, 'a': 100, 'f1': <function f1 at 0x00000235B18B4E18>}
    
    

    **

    3,全局和局部变量的效率测试

    **
    局部变量的查询和访问速度比全局变量块,尤其是在循环的时候。应优先考虑
    在特别强调效率的地方或者循环次数较多的地方,可以将全局变量转为局部变量提高运行速度

    效率测试操作如下:

    import time
    import math
    
    
    def test01():
        start = time.time()
        for i in range(1000000):
            math.sqrt(30)
        end = time.time()
    
        print("test01耗时{0}".format(end-start))
    
    
    def test02():
        start = time.time()
        b = math.sqrt
        for i in range(1000000):
            b(30)
        end = time.time()
        print("test02耗时{0}".format(end-start))
    
    test01()
    test02()
    

    运行结果如下图所示:

    test01耗时0.4827232360839844
    test02耗时0.23786211013793945
    
    
    展开全文
  • 变量 变量起作用的范围称为变量的作用域,不同的作用域内同名变量之间互不影响。变量分为:全局变量局部变量全局变量: 在函数和类定义之外声明的... 如果局部变量全局变量同名,则在函数内隐藏全局变量
  • Python局部变量全局变量区别

    千次阅读 2018-05-29 15:31:52
    全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量 局部变量: 在函数内、在class的方法内(未加self修饰),这就是局部变量 2. 如何使用: 在def中,我们可以定义一个局部变量,该变量仅仅在...
  • 作用域分为三种:全局作用域(全局变量),局部作用域(局部变量),块级作用域(es6新增) 什么是全局变量(在函数外定义的变量) 什么是局部变量(在函数内定义的变量) 为什么刚学习js的时候都说要少用全局...
  • 静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。...
  • 局部变量 全局变量 函数的嵌套

    千次阅读 2018-07-14 07:47:22
    day10笔记:局部变量: 1.... 定义在函数外部,模块内部的变量称为全局变量 2. 所有的函数都可以直接访问"全局"变量,但函数内部不能直接通过赋值语句来改变全局变量 示例见: variable.py 局部变...
  • 全局变量局部变量、静态全局变量、静态局部变量的区别  C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用...
  • 全局变量局部变量的区别

    万次阅读 多人点赞 2018-08-23 21:46:04
    静态全局变量:使用 static 关键字修饰,也具有全局作用功能,和全局变量区别在于如果该程序包含多个文件,其作用范围仅在定义的那个文件,不能作用于其它文件,这样即使两个不同的源文件都定义了相同名字的静态...
  • python的局部变量全局变量区别

    千次阅读 2018-01-16 15:37:59
    全局变量:所有函数之外定义的变量 局部变量:函数内部定义的变量 或者代码块里的变量 ...如果这个变量名字和全部变量名字相同,那么局部变量名字会覆盖全局变量名字。 #[demo1] num = 100 def fu
  • 1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域...当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。 2
  • 在lua中声明一个全局变量很简单 a=5 直接赋值就可以,而且也不会限制变量的类型,我们可以直接把number类型的变量赋值string ...在局部块内声明的局部变量可以和前面已经声明过的全局变量同名 d="全局变量" do loc
  • python变量的作用域:局部变量全局变量

    万次阅读 多人点赞 2018-08-10 18:14:10
    变量定义以后,是有一定的使用范围,称之为变量的作用域。...全局变量:就是在函数外部定义的变量 2.局部变量:就是在函数内部定义的变量 1.全局函数和局部函数的作用域 局部变量作用域:只能在...
  • 2、静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。...
  • 全局变量局部变量的区分

    千次阅读 热门讨论 2013-11-13 17:10:57
    全局变量,静态变量和局部变量的区别;从存储方式和作用域两个方面做了一个比较!
  • 全局变量局部变量命名规则 PYTHON开发人员的提示 (TIPS FOR PYTHON DEVELOPERS) In the beginning, I assume that you know how to define your own functions — but not only that, you know how to write ...
  • Python 查找变量是顺序是:先局部变量,再全局变量 x = 2 def funcx(): global x # 声明 x 是全局变量, x = 9 print “this x is in the funcx:–>”,x funcx() print “————————–“ print “this x is ...
  • verilog全局变量局部变量定义

    千次阅读 2020-01-21 22:55:44
    1、局部变量定义(parameter) 声明: parameter xx = 8;(注意有等号,且后面有分号) 使用:xx 作用域:parameter 作用于声明的那个文件。 另外parameter可以用作例化时的参数传递。具体方法参见《Verilog例化...
  • 变量的作用域(全局变量局部变量) 变量起作用的范围称为变量的作用域,不同作用域内同名变量之间互不影响。变量分为:全局变量局部变量全局变量: 1.在函数和类定义之外声明的变量。作用域为定义的模块,从...
  • 局部变量全局变量及其存储方式

    千次阅读 2021-03-19 21:43:33
    局部变量全局变量及其存储方式 1、变量及其存储的分类 从变量的作用域的角度观察,变量可以分为全局变量局部变量;变量的存储分为静态存储方式和动态存储方式。 内存中供用户使用的存储空间可分为程序区、静态存...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,405
精华内容 40,562
关键字:

局部变量模块变量全局变量