精华内容
下载资源
问答
  • python全局变量与局部变量

    万次阅读 多人点赞 2019-03-01 15:27:17
    python全局变量与局部变量 标签: python 局部变量就是定义在一个函数体内部的变量 全局变量是定义在外面的变量 比如: a = 1 def f(): b = 2 其中a就是全局变量,而b是局部变量。局部变量只在函数体内部...

    python中全局变量与局部变量

    标签: python


    • 局部变量就是定义在一个函数体内部的变量
    • 全局变量是定义在外面的变量

    比如:

    a = 1
    def f():
        b = 2
    
    

    其中a就是全局变量,而b是局部变量。局部变量只在函数体内部有效,出了函数体,外面是访问不到的,而全局变量则对下面的代码都有效。

    在函数体内部使用全局变量

    全局变量可以直接在函数体内容部使用的,你可以直接访问,但是注意的是,如果对于不可变类型的数据,如果在函数里面进行了赋值操作,则对外面的全局变量不产生影响,因为相当于新建了一个局部变量,只是名字和全局一样,而对于可变类型,如果使用赋值语句,同样对外部不产生影响,但是使用方法的话就会对外部产生影响。

    如下面的代码:

    g_b = 3;g_l1 = [1,2];g_l2 = [1,2,3]
    def t1():
        g_b = 2
        g_l1 =[]
        g_l2.append(7)
    t1(g_b,g_l1,g_l2)
    print(g_b,g_l1,g_l2)
    

    global关键字

    上面说到,如果使用的是赋值语句,在函数内部相当于新建了一个变量,并且重新给了指向,但是有时候我们想把这个变量就是外部的那个全局变量,在赋值操作的时候,就是对全局变量给了重新的指向,这个时候可以通过global关键字表示我在函数里面的这个变量是使用的全局那个。使用方法如下:

    g_b = 3
    def t1():
        global g_b
        g_b = 2
    t1()
    print(g_b)
    

    这个时候你会发现全局变量g_b也重新指向了,这是因为global gb表示指定了函数中的g_b就是外面的那个。

    展开全文
  • python全局变量和局部变量详解

    万次阅读 多人点赞 2018-11-13 12:18:46
    python全局变量和局部变量的最大区别在于局部变量只能通过函数去访问,而全局变量可以直接访问。 !!! 我们先来看一个最简单的例子,事实上这并不是一个真正的全局变量,只是在类中的一个变量。 !!! 我们...

    写在最前面:

    python中全局变量和局部变量的最大区别在于局部变量只能通过函数去访问,而全局变量可以直接访问。

    !!!

    我们先来看一个最简单的例子,事实上这并不是一个真正的全局变量,只是在类中的一个变量。

    !!!

    我们先从类中的变量访问开始讲起

    那么我们要如何访问这个变量呢?

    class variable:
        a = '我是类变量'
    
        def showvarible(self):
            b = '我是函数变量'
            print(a)
            print(b)
    
    
    variable().showvarible()

    毫无疑问,编译器就已经报错了,这是因为类中的变量不可以在函数中直接访问,应该这样

    class variable:
        a = '我是类变量'
    
        def showvarible(self):
            b = '我是函数变量'
            print(variable.a)
            print(b)
    
    
    variable().showvarible()
    我是类变量
    我是函数变量
    

    其实我们还可以通过self去访问

    class variable:
    
        a = '我是类变量'
    
        def showvarible(self):
            b = '我是函数变量'
            print(self.a)
            print(b)
    
    
    variable().showvarible()

     结果是一样的

    我是类变量
    我是函数变量

     

    还可以怎么做呢,我们通过构造函数给定一个参数,类中可访问

    class variable:
    
        def __init__(self,a):
            self.a = '我是类变量'
    
        def showvarible(self):
            b = '我是函数变量'
            print(self.a)
            print(b)
            
    
    
    variable(1).showvarible()
    我是类变量
    我是函数变量

     这里需要注意的是,实例化的时候必须给参数,由于python是动态语言,不需要指定参数的类型,你可以放int,比如1,也可以给一个字符串。 

     

    然后我们真正看一下全局变量

    a = '我是真正的全局变量'
    
    
    def showvariable():
        b = '我一直都是局部变量'
        print(a)
        print(b)
    
    
    showvariable()
    我是真正的全局变量
    我一直都是局部变量
    

     

    当我们试图在函数外访问这个函数的局部变量时

    a = '我是真正的全局变量'
    
    
    def showvariable():
        b = '我一直都是局部变量'
        print(a)
    
    def showb():
        print(b)
    
    
    showvariable()

    报错

    我是真正的全局变量
    Traceback (most recent call last):
      File "F:/leetcode/xxx.py", line 13, in <module>
        showb()
      File "F:/leetcode/xxx.py", line 9, in showb
        print(b)
    NameError: name 'b' is not defined
    

    说明局部变量只能在局部使用。

    那么不巧的是,我的局部变量和全局变量定义了同一个名称,谁的优先级更高呢?

    a = '我是真正的全局变量'
    
    
    def showvariable():
        a = '我一直都是局部变量'
        print(a)
    
    
    print(a)
    showvariable()

    我猜是局部变量,嘿嘿

    我是真正的全局变量
    我一直都是局部变量

    果然,函数优先使用了局部变量

    而优先级还有一个体现,来看下面的例子

    a = 3
    
    
    def showvariable():
        a = a * 5
        print(a)
    
    
    showvariable()

    你可能会认为输出15,但是上面的一个例子告诉我们,在函数内会优先使用局部变量

    3
    Traceback (most recent call last):
      File "F:/leetcode/xxx.py", line 10, in <module>
        showvariable()
      File "F:/leetcode/xxx.py", line 5, in showvariable
        a = a * 3
    UnboundLocalError: local variable 'a' referenced before assignment
    

    这样是因为,我们在函数内定义了一个局部变量a,但是还没来得及赋值,就被*5,编译器不知道拿谁去*5,当然报错了。

     

    下面讲讲global,global第一次是只能定义不能赋值的

    def showvariable():
        global a
        a = '我是global'
        print(a)
    
    
    showvariable()
    我是global

    当然是可以在函数外访问的

    def showvariable():
        global a
        a = '我是global'
        print(a)
    
    def showglobal():
        print(a)
    
    showvariable()
    showglobal()
    我是global
    我是global

    但是,必须赋值后才有意义,如果像这样

    def showvariable():
        global a
        a = '我是global'
        print(a)
    
    def showglobal():
        print(a)
    
    print(a)
    showvariable()
    showglobal()

    在没有赋值的时候,就去打印

    Traceback (most recent call last):
      File "F:/leetcode/xxx.py", line 9, in <module>
        print(a)
    NameError: name 'a' is not defined
    

    因为此时global a还没有赋值,当然不能打印。

    展开全文
  • python全局变量

    千次阅读 2020-09-01 16:32:06
    1.全局变量 2.python全局变量 3.Python全局变量的用法 4.Python全局变量实质

    1.全局变量

             在计算机中,一切数据都可以当作变量。理论上讲,变量可以分为几种类型:

             1)全局变量;

             2)静态变量;

             3)常量;

             4)栈变量;

             5)堆变量。

             这些变量的不同在于作用域和生命周期是不同的。对于其中的全局变量来说,必须要注意是,其作用域属于全部,生命周期存在于进程整个时期。

    2.python的全局变量

           以前笔者写过一篇博客,是有关Golang语言的全局变量的(https://blog.csdn.net/wangzhezhilu001/article/details/91493594)。Golang中,全局变量属于包。在python中,全局变量的生命也属于模块(表现为单个python文件),而不是整个进程。

          可以通过如下程序验证。先提供一个文件A.py

              

    # A.py
    
    # ---- coding=utf-8--A--#
    
    
    def f(a):
        print(a)
    
    def main():
        global a
    
        a = 5
        f(a)
    
    if __name__ == '__main__':
        main()

         再加上另一个调用程序B.py。

       

    # B.py
    
    # ---- coding=utf-8----#
    
    from A import f
    
    
    def main():
        global a
       
        f(a)
    
    if __name__ == '__main__':
        main()

           运行B.py,发现程序报错。会提示程序变量a不存在。其原因在于,全局变量a并未定义,而B文件的全局变量a的作用域和生命空间只属于B文件。

    3.Python的全局变量的用法

           python的全局变量的用法为:1)python的全局变量的作用域为特定模块之内;2)在函数内,如不加global关键字,则该变量为局部变量,如该变量未声明,如对变量进行修改,会出问题。

           测试程序如下所示:

          

    # C.py
    
    # ---- coding=utf-8----#
    
    a = 2
    
    
    def f(a):
        print(a)
    
    def main():
       a += 1
       f(a)
    
    if __name__ == '__main__':
        main()
    

         该方法会提示a为本地变量。

          要想使用,必须在函数内提供global关键字,才会让global变量起作用。

      

    # C.py
    
    # ---- coding=utf-8----#
    
    a = 2
    
    
    def f(a):
        print(a)
    
    def main():
       global a
    
       a += 1
       f(a)
    
    if __name__ == '__main__':
        main()
    

    4.Python的全局变量实质

          python的全局变量的实质是:python在程序运行时,提供了一个__globals__字典,__globals__字典属于模块,并把全局变量放入字典里。这种方式,决定了python的全局变量不属于进程而属于模块。

    展开全文
  • 在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是全局变量。此时用global语句就可以变成这个任务,也就是说没有用global语句的情况下...
  • python实现 全局变量的两种解决办法

    万次阅读 2018-07-13 15:26:34
    python实现 全局变量的两种解决办法 两种解决办法:python实现 全局变量的两种解决办法

    python实现 全局变量的两种解决办法

    两种解决办法:python实现 全局变量的两种解决办法
     

    展开全文
  • Python 全局变量与global关键字

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

    千次阅读 2020-10-07 20:52:22
    python定义全局变量 全局变量可以在代码任意位置创建,能够被所有对象和函数引用,有利于变量的共享。 全局变量的定义: global+变量名 声明后引用: OLD_URL='http://oldboyedu.com' def bb(): global OLD_...
  • x = 8 def function(): global x x = 100 print(str(x)) #打印全局变量x function() 由上面的代码可知,想要修改全局变量,只需要在函数里面将全局变量标记为global即可。
  • a、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。 b、局部变量:在函数内、在class的方法(构造、类方法、静态方法、实例方法)内(变量未加self修饰),这就是局部变量 ...
  • python递归 全局变量全局变量

    千次阅读 2018-10-12 17:14:02
    # 优先读取局部变量,能读取全局变量,无法对全局变量重新赋值 NAME=“fff”, # 但是对于可变类型,可以对内部元素进行操作 # 如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值 NAME=“fff”...
  • 全局变量:函数体之外定义的变量 局部变量:函数体之内定义的变量 下述代码中,t是全局变量,m是局部变量 t = 1 def func(x): m = 2 return x//m 规则 1. 局部变量和全局变量是不同的变量,即使变量名相同 ...
  • Python 使用全局变量

    万次阅读 2017-05-31 16:13:24
    今天在写以下Python代码时出现了问题。该段代码根据一些URL下载视频:#coding=utf-8def save_case_infos(case_urls): for case_url in case_urls: # some download code ...... # 希望访问全局变量 case_total_num
  • 本文针对Python全局变量实现方法简述如下: 先来看下面一段测试程序: count = 0 def Fuc(count): print count count += 1 for i in range(0, 10): Fuc(count) 运行结果是: >>> 0 0 0 0 0 0 0 0 0 0 很...
  • python3 全局变量和局部变量

    万次阅读 2018-08-10 14:37:56
    全局变量和局部变量 局部变量: 1.定义在函数内部的变量称为局部变量(函数的形参也是局部变量) 2.局部变量只能在函数内部使用 3.局部变量在函数调用时才能够被创建,在函数调用之后会自动销毁 全局变量: 1.定义...
  • Python全局变量和局部变量

    千次阅读 2018-07-18 11:55:14
    Python全局变量和局部变量 1. 变量 变量:临时存储数据的容器:工具! 生活:私有的工具;公有的工具; 2. 变量类型 所有人都可以使用的:全局变量 只有当前函数可以使用的变量:局部变量 3. 声明全局...
  • python函数中可以访问全局变量但是不能给全局变量赋值,除非进行显式声明global a 比如定义了全局变量 a 在函数my_fun()中可以直接访问a的值,而不需要global全局变量申明。下图为上面代码运行输出 当企图改变全局...
  • Python中局部变量、全局变量和修改全局变量.pdf
  • Python global全局变量的使用

    千次阅读 2020-12-10 22:00:48
    Python global全局变量的使用 在使用global全局变量时, ①在声明函数时,形参不能是全局变量,不然会报错:SyntaxError: name 'x' is parameter and global ②在声明函数时内部使用全局变量x,要在函数内部写:...
  • Python全局变量和局部变量

    万次阅读 多人点赞 2018-05-13 13:38:40
    学编程的总离不开全局变量和局部变量,那么,首先我们要知道局部变量和全局变量的定义: 局部变量:定义在函数内部的变量称为局部变量,他的作用域范围为函数内,也就是出了函数外就无效。举个简单的例子:葫芦娃在...
  • python全局变量操作

    千次阅读 2017-08-13 00:57:46
    python全局变量一般有两种方法进行实现: 方法一:调用内置函数global 首先在函数外部定义全局变零(一般是开头),并对全局变量进行赋值,然后在函数中也要进行申明,之后才可以进行调用 话不多说,直接上代码...
  • Python: 全局变量 & 局部变量的使用

    千次阅读 2017-07-10 17:33:58
    Python代码时,想用全局变量,报了错。所以上网查了相关文档,总结出以下几点: 函数内部的变量名如果 第一次 出现,且出现在 = 前面,则在该函数内部被视为定义一个局部变量。 函数内部的变量名如果 第一次 出现...
  • 本文通过一个案例说明 Python全局变量用法与 Java 的不同。(ps:一直在用 Java 的方式用 Python,所以踩了一个坑)觉得无聊可以直接看文末总结。 局部变量与全局变量的概念 以下摘自百度百科: 变量分为局部与...
  • Python定义全局变量的用法

    万次阅读 2018-12-24 16:12:49
    全局变量是编程语言中常见的一种...和C语言一样,Python也具有全局变量,其定义全局变量的用法有两种: 1. 声明法 该方法是直接在当前模块中进行全局变量定义声明,使用global的声明方式,再进行引用! OLD_URL=...
  • Python 处理全局变量和局部变量的方式其实是相当另类的。在大多数编程语言中,一个未被声明的变量会被当作全局变量,而Python正好相反。在Python中,没有被声明的变量会被当作局部变量。Python语言的设计思想认为...
  • Python全局变量的引用与修改之格式影响.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 151,705
精华内容 60,682
关键字:

python设置全局变量

python 订阅