精华内容
下载资源
问答
  • Python 全局变量与global关键字

    万次阅读 多人点赞 2017-07-25 19:34:39
    Python 全局变量之谜​ 在Python的变量使用中,经常会遇到这样的错误:local variable 'a' referenced before assignment它的意思是:局部变量“a”在赋值前就被引用了。

    Python 全局变量与global关键字

    ​ 在Python的变量使用中,经常会遇到这样的错误:

    local variable 'a' referenced before assignment
    

    它的意思是:局部变量“a”在赋值前就被引用了。
    ​ 比如运行下面的代码就会出现这样的问题:

    a = 3
    def Fuc():
        print (a)
        a = a + 1
    Fuc()
    

    ​ 但是如果把 a = a + 1 这一句删除又不会出现上述问题了

    a = 3
    def Fuc():
        print (a)
    Fuc()
    

    ​ 原来,在Python中,a=3 定义了全局变量a,作用域从定义处到代码结束,在 a=3 以下的函数中是可以引用全局变量a的,但如果要修改函数中与全局变量同名的变量,则函数中的该变量就会变成局部变量,在修改之前对该变量的引用自然会出现未分配或未定义的错误了。

    ​ 如果确定要引用并修改全局变量必须加上global关键字

    a = 3
    def Fuc():
    	global a
        print (a)
        a=a+1
    Fuc()
    

    ​ 注意要领:哪个函数需要修改全局变量,在函数中声明一下即可。

    ​ 但在 if _name_ == “main”:下,全局变量是一直保持的

    a = 3
    def Fuc():
        global a
        print (a)  # 1
        a = a + 1
    if __name__ == "__main__":
        print (a)  # 2
        a = a + 1
        Fuc()
        print (a)  # 3
    

    ​ 输出如下(Python3环境下):

    3
    4
    5
    

    三个print执行的顺序为:2, 1, 3 。

    人生苦短,我用Python~

    展开全文
  • 修饰对象:全局变量、函数作用:1、提示编译器在其他模块或者其他文件中查找该变量、函数的定义2、可以引用定义在其他文件中的全局变量和函数用法:先声明,再初始化,后调用。1、声明形式:声明时要严格对应声明...

    修饰对象:全局变量、函数

    作用:

    1、提示编译器在其他模块或者其他文件中查找该变量、函数的定义

    2、可以引用定义在其他文件中的全局变量和函数

    用法:先声明,再初始化,后调用。

    1、声明形式:声明时要严格对应声明类型,变量对变量、数组对数组、指针对指针、函数对函数

    1)extern + 变量类型 + 变量名            例子: extern int name;

    2)extern + 函数返回值类型 + 函数名 例子: extern void func();

    3)extern + 数组类型 + 数组名称                              例子: extern char arr[];

    2、初始化:在被引用文件(原文件)中初始化,如果没有初始化,编译器自动初始化为0。

    3、调用:直接使用变量名、函数名

    1)例子: name = 2;

    2)例子: func();

    近义用法:

    引用头文件。把需要引用的全局变量放到被引用文件(原文件)的头文件声明,在引用文件(引用外部变量的文件)抬头添加语句

    include "*.h"

    区别:

    引用头文件的方法:可以引用原文件的变量和函数。

    extern修饰的方法:仅引用原文件中特定的变量和函数。

    展开全文
  • 全局静态变量 在全局变量前加上关键字static,全局变量就定义成一个全局静态变量. 静态存储区,在整个程序运行期间一直存在。 初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被...
  • 全局变量 定义在类中 方法外的变量叫做全局变量 全局变量所有方法均能够访问 局部变量 作用域从定义位置开始 到代码块结束 static关键字 static关键字修饰的变量是静态变量 使用类名.变量直接访问 当虚拟机启动时即...

    全局变量
    定义在类中 方法外的变量叫做全局变量 全局变量所有方法均能够访问
    局部变量
    作用域从定义位置开始 到代码块结束
    static关键字
    static关键字修饰的变量是静态变量 使用类名.变量直接访问 当虚拟机启动时即加载变量到内存中不需要创建对象
    static关键字修饰的方法是静态方法 使用类名.方法直接访问 静态方法中不能访问成员变量
    类变量(静态变量)
    定义在类中 使用static 修饰其变量 访问时需要类名.变量名即可访问
    使用对象 也能访问其变量 当对象值改变 类变量值就会发生改变
    类变量也叫做静态变量
    成员变量
    在类中定义的变量,实例化对象时访问的变量 叫做成员变量
    在静态方法中 无法访问成员变量 可以访问静态变量
    在成员方法中 可以访问成员变量也可以访问静态变量
    例子:

    public class Demo {		
    // 静态变量
    	public static int a = 10;		
    	// 成员变量	
    	public int b = 20;		
    	// 静态方法。	
    	public static void show(){		
    	System.out.println("静态方法");		
    	//System.out.println(b);// 无法在静态方法中,访问成员变量。		
    	System.out.println(a);// 可以在静态方法中,访问静态变量。	}		
    	// 成员方法。	
    	public void show2(){		
    	System.out.println(b);// 成员方法可以访问成员变量		
    	System.out.println(a);// 成员方法是可以访问静态变量的。				
    	System.out.println("静态变量在成员方法中加20于:"+(a+=20));
    	}
    }

    值传递
    形式参数:
    在定义方法时声明的参数叫做形式参数
    实际参数:
    调用方法时 传入的实际值 叫做实际参数
    java中参数的传递:
    java中有两种值传递的方式:一种是变量传递 一种是对象的引用传递
    但是 要记得 java中只有一种传递 叫做值传递 如果是变量 传递的是变量值
    如果传递的是对象 则传递的是地址值
    例子:

    public class Test { 	
    	public static void main(String[] args) {		
    	int a = 10;		
    	int b = 20;		
    	show(a,b);//实际参数				
    	System.out.println("a的值是:"+a); 	}		
    	public static void show(int num1,int num2){// 形式参数	
    	num1 = num1+num2;		
    	System.out.println("方法中a的值是:"+num1);	
    	} 
    	}
    
    展开全文
  • 在Python的变量使用中,经常会遇到这样的错误: local variable ‘a’ referenced before ...​ 原来,在Python中,a=3 定义了全局变量a,作用域从定义处到代码结束,在 a=3 以下的函数中是可以引用全局变量a的,但如果
  • python中的全局变量(global关键字)

    万次阅读 2020-10-05 02:51:19
    全局变量,顾名思义,就是全局都可以使用的变量。一般定义在函数之外,然后函数内部通过global关键字描述,以区分函数内部的普通变量。一般,需要用到全局变量的地方,我都会把这些函数写成一个类,然后通过类属性...

    全局变量,顾名思义,就是全局都可以使用的变量。一般定义在函数之外,然后函数内部通过global关键字描述,以区分函数内部的普通变量。一般,需要用到全局变量的地方,我都会把这些函数写成一个类,然后通过类属性变量的方法公用一个变量。不过,很多时候用不着大动干戈去写类。

    先看一个简单栗子:

    a = 0  # initialize variable a
    def coo():
        global a  # call a
        a += 1
        return a
    
    for i in range(10):
        print(coo())
    

    注意,变量只是一个普通变量,首先在函数外部进行初始化,然后在函数内部通过global关键字呼叫这个变量,就可以实现全局变量的功能了。看输出就知道了,变量a会随着函数coo()的不断运行也在不断变化。输出如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    当然,全局变量不仅仅是数,还可以是其他类型的数据结构,比如:

    a = []
    def coo():
        global a
        a += [1]
        return a
    
    for i in range(10):
        print(coo())
    

    输出如下:

    [1]
    [1, 1]
    [1, 1, 1]
    [1, 1, 1, 1]
    [1, 1, 1, 1, 1]
    [1, 1, 1, 1, 1, 1]
    [1, 1, 1, 1, 1, 1, 1]
    [1, 1, 1, 1, 1, 1, 1, 1]
    [1, 1, 1, 1, 1, 1, 1, 1, 1]
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
     

    展开全文
  • 在函数内部修改全局变量的值 如果在函数内部需要修改全局变量的值,需要使用global进行声明 同一个num变量的引用被高亮
  • 全局变量是可以被本程序所有对象或函数引用的。在函数内部可以通过global关键字来定义全局变量。global 是表示全局变量,当函数中要改变函数外面的变量时候需要用全局变量global来表示全局变量既可以是某对象函数...
  • 1、关键字static的作用是什么?  定义静态变量  2、static有什么用途?(请至少说明两种)  网上答案:  ...1)....2)....(1)对局部变量用static声明,则为该变量分配的空间在整个程序...(2)全局变量用static声明,
  • 1、关键字static的作用是什么?  定义静态变量  2、static有什么用途?(请至少说明两种)  网上答案:  1)....2)....谭浩强C语言page180:  (1)对局部变量用static声明,则为该变量...(2)全局变量用static声明,
  • 变量又分为局部变量和全局变量,但他们都在内存的静态区,静态变量只能被初始化一次。 静态全局变量,作用域仅限于被定义的文件中,其他文件即使用extern声明也没法使用它。准确地说作用域是从定义之处开始,到文件...
  • 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字。如: #! /usr/bin/python a = 1 b = [2, 3] def func(): if a == 1: print("a: %d" %a) for i in range(4): if i ...
  • python变量总结: 全局变量、局部变量、类变量、实例变量以及global和nonlocal关键字的使用示例 前言:Python也同多数编程语言一样,也有全局变量与局部变量的概念, 但是与其他编程语言又有所不同: 全局变量与局部...
  • 我们知道,程序的编译单位是源程序文件,一个源文件可以包含一个或若干个函数。在函数内定义的变量是局部...如果在定义点之前的函数想引用全局变量,则应该在引用之前用关键字 extern 对该变量作“外部变量声明”,
  • 内容简介变量与作用域global关键字全局变量$GLOBALS 变量与作用域 php的变量分为三类:局部变量,全局变量,静态变量 同样php的作用域分为三类:1、local(局部作用域) 2、global(全局作用域) 3、static(静态...
  • 以下程序中,函数中可以直接打印出全局变量x,而无须使用关键字global: [html] view plaincopyprint? x = 1    def run():   print x    if __name__ == '__main__':  ...
  • $a=1; $b=2; function Sum(){    Global $a,$b;...在函数中申明了全局变量$a和$b,任何变量的所有引用变量都会指向到全局变量。 对于一个函数能够申明的全局变量的最大数,PHP没有限制。 ----1701081730
  • 一、全局变量和局部变量 我们可以简单的这样来看浏览器对js的使用: 浏览器接收到服务器发过来的代码后,会解释生成一棵 存在于浏览器缓存中的 Dom树。 同时为了方便程序员通过js代码来控制浏览器操作,也提供了...
  • python中在方法中引用全局变量

    千次阅读 2020-02-13 16:26:48
    在外面定义了一个变量 xxx ,然后在python的一个函数里面引用这个变量,并改变它的值,结果报错local variable ‘xxx’ referenced before assignment,代码如下: xxx = 23 def PrintFileName(strFileName): if...
  • 使用global关键字访问全局变量
  • static全局变量:相当于全局变量,但只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它,而extern全局变量可以。 static局部变量:只在定义的函数体内有效,第一次定义时初始化,后续再次进入子...
  • 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字。如: #! /usr/bin/python a = 1 b = [2, 3] def func(): if a == 1: print(a: %d %a) for i in range(4): if i in b: print...
  • python 全局变量引用与修改

    千次阅读 2018-09-23 12:17:10
    一、引用 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字。如: #! /usr/bin/pythona = 1b = [2, 3]def func():
  • python跨模块的全局变量引用

    千次阅读 2018-11-26 15:52:34
    在python面向对象开发的过程中往往会有###全局变量的问题,对于新入局小白来说确实 是一个不...Python 中 global 关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量: 我们知道...
  • 全局变量,就是指那些定义在函数或类之外的变量,它可作为多个类或函数都需要共同使用的变量。 (1)全局变量会被自动初始化,函数中的变量不会被...(2)全局变量如果加上static关键字,事情将会变得很奇妙。 我们
  • extern 关键字声明多文件共享变量我们在C++开发中经常会遇到一些场景需要多个cpp文件同时共享一个变量,这个时候有两种选择,1、使用static 关键字;2、使用extern 关键字,而本文着重讲的便是extern 关键字 如何...
  • 全局变量引用

    千次阅读 2018-07-27 21:05:23
    局部变量和全局变量 注意:局部变量作用的是函数内部,离开函数就是无效的,它包括在形参和在函数体内部定义的  全局变量默认的是整个程序,也就是所有源文件.c和.h文件,且在局部变量作用的范围内,全局变量不起...
  • 全局变量的使用方法 参考链接:https://www.cnblogs.com/Dageking/p/3185230.htmlhttps://blog.csdn.net/hi_baymax/article/details/82425457 强烈建议使用xxx.h和xxx.cpp的形式创建全局变量和全局函数。.h和....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 163,011
精华内容 65,204
关键字:

引用全局变量的关键字