精华内容
下载资源
问答
  • 主要介绍了python的全局变量用法,详细分析了Python全局变量使用的利弊与相关技巧,需要的朋友可以参考下
  • 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全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_a的值,这时可能导致程序的错误。这种错误是很难发现和...
  • Python中全局变量

    千次阅读 2020-07-11 08:54:52
    In this tutorial, We will look into Python Global Variables. We will learn how to define a global ... 在本教程,我们将研究Python全局变量。 我们将学习如何定义全局变量,然后如何在函数访问它们。...

    In this tutorial, We will look into Python Global Variables. We will learn how to define a global variable and then how to access them in a function.

    在本教程中,我们将研究Python全局变量。 我们将学习如何定义全局变量,然后如何在函数中访问它们。

    Python中的全局变量 (Global Variables in Python)

    Global Variables are defined outside a function. We can access a global variable in all parts of the Python program.

    全局变量在函数外部定义。 我们可以在Python程序的所有部分中访问全局变量。

    Python全局变量示例 (Python Global Variables Example)

    Let’s look at a simple example to declare a global variable. Then we will use this global variable in a function.

    让我们看一个声明全局变量的简单示例。 然后,我们将在函数中使用此全局变量。

    website = "JournalDev.com"
    
    
    def return_website():
        return website
    
    
    print(f'My favorite website is {return_website()}')

    Output:

    输出:

    My favorite website is JournalDev.com

    The variable “website” is defined in the program, outside of a function. So, it becomes a global variable.

    变量“网站”在程序中的函数外部定义。 因此,它成为一个全局变量。

    使用全局关键字访问全局变量 (Using global keyword to access global variable)

    If there is a variable defined inside a function with the same name, then we have to use global keyword to access the global variable. Otherwise, the local variable value will be used.

    如果在函数内部定义了一个具有相同名称的变量,那么我们必须使用global关键字来访问全局变量。 否则,将使用局部变量值。

    Let’s look at a quick example to use the global keyword to access global variables.

    让我们看一个使用global关键字访问全局变量的简单示例。

    website = "JournalDev.com"
    
    
    def print_website():
        global website
        print(f'My favorite website is {website}')
    
        website = 'Wikipedia.com'
        print(f'My favorite website is {website}')
    
    
    print_website()

    Output:

    输出:

    My favorite website is JournalDev.com
    My favorite website is Wikipedia.com

    If we don’t use the global keyword, the program will throw error message “UnboundLocalError: local variable referenced before assignment”.

    如果我们不使用global关键字,则程序将抛出错误消息“ UnboundLocalError:分配前引用的本地变量”。

    The best practice is to avoid using the same name as the global variable and stay away from the name conflicts.

    最佳做法是避免使用与全局变量相同的名称,并避免名称冲突。

    Python globals()函数快速入门 (Quick word on Python globals() function)

    Python globals() function return a dictionary representing the current global symbol table. This dictionary contains the global variables name and its values. We can use this function to get quick information on all the global variables.

    Python globals()函数返回一个表示当前全局符号表的字典 。 该词典包含全局变量名称及其值。 我们可以使用此功能来获取有关所有全局变量的快速信息。

    Python program maintains program information in symbol tables.

    Python程序在符号表中维护程序信息。

    There are two types of symbol tables:

    符号表有两种类型:

    1. Local Symbol Table – stores information related to the local scope of the program.

      本地符号表 –存储与程序的本地范围有关的信息。
    2. Global Symbol Table – stores information related to global scope of the program.

      全局符号表 –存储与程序的全局范围有关的信息。

    Python symbol table contains details about variable names, methods, classes, etc.

    Python符号表包含有关变量名称,方法, 等的详细信息。

    Python globals() function doesn’t accept any arguments.

    Python globals()函数不接受任何参数。

    print(globals())

    Output:

    输出:

    {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x10a99b358>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_globals_example.py', '__cached__': None}

    It also prints the python script from where this function is called.

    它还会在调用此函数的位置打印python脚本。

    Let’s see the output if the same function is called from the Python interpreter.

    让我们看看是否从Python解释器调用了相同的函数的输出。

    $ python3.7
    Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 2018, 23:26:24) 
    [Clang 6.0 (clang-600.0.57)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> print(globals())
    {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}
    >>>

    This time there is no __file__ attribute in the output.

    这次输出中没有__file__属性。

    globals()字典中的全局变量 (Global Variables in globals() dictionary)

    As we mentioned earlier that the global symbol table contains information about the global variables.

    如前所述,全局符号表包含有关全局变量的信息。

    Let’s see this with a simple example.

    让我们用一个简单的例子来看一下。

    name = 'Pankaj'
    
    print(globals())

    Output:

    输出:

    {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x10a99b358>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_globals_example.py', '__cached__': None, 'name': 'Pankaj'}

    The global symbol dictionary contains the ‘name’ variable too.

    全局符号字典也包含“名称”变量。

    One of the features of globals() is that we can modify the variables in the global dictionary. Since it’s a dictionary, we can get the value of a specific key too.

    globals()的功能之一是我们可以修改全局字典中的变量。 由于它是字典,因此我们也可以获取特定键的值。

    globals()['name'] = 'David'
    
    print(globals()['name'])

    Output: David

    输出: David

    Let’s see if globals() contains local scope variables or not. For this, let’s define a function and some variables inside it.

    让我们看看globals()是否包含局部作用域变量。 为此,让我们定义一个函数和其中的一些变量。

    def fx():
        local = ''
        global gl
        gl = 'Global'
    
    
    fx()  # calling fx() to set the variables
    print(globals())
    
    print(globals()['gl'])

    Output:

    输出:

    {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x10a99b358>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_globals_example.py', '__cached__': None, 'name': 'David', 'fx': <function fx at 0x10a9331e0>, 'gl': 'Global'}
    
    Global

    The ‘gl’ variable is part of the global dictionary because its scope is global. Whereas, ‘local’ variable is not part of the global dictionary because of having local scope.

    'gl'变量是全局词典的一部分,因为它的范围是全局的。 而“局部”变量由于具有局部范围,因此不属于全局词典。

    结论 (Conclusion)

    Python global variables are very easy to define and use. The globals() function returns the global variables and it can be used in debugging the code. We can use it to identify the global scope variables and functions available to the program. We can also modify the global variable data, but that is not advisable and mostly not required in normal programs.

    Python全局变量非常易于定义和使用。 globals()函数返回全局变量,可用于调试代码。 我们可以使用它来识别程序可用的全局范围变量和函数。 我们还可以修改全局变量数据,但这是不可取的,并且在正常程序中通常不是必需的。

    GitHub Repository. GitHub存储库中检出完整的python脚本和更多Python示例。

    Reference: Official Documentation

    参考: 官方文档

    翻译自: https://www.journaldev.com/22870/global-variables-python

    展开全文
  • python函数中全局变量的使用

    千次阅读 2018-11-28 21:52:18
    python函数中全局变量的使用 global i #定义全局变量 i=0 def digui(n): global i #使用全局变量,若无该语句,编译器会认为i为函数内的局部变量 i += 1 if i &gt; 2: return n else: return digui(n-1) + digui...

    python函数中全局变量的使用

    global i #定义全局变量
    i=0
    def digui(n):
    global i #使用全局变量,若无该语句,编译器会认为i为函数内的局部变量
    i += 1
    if i > 2:
    return n
    else:
    return digui(n-1) + digui(n-2)

    展开全文
  • 主要介绍了Python教程之全局变量用法,结合实例形式分析了Python全局变量的定义、修改等使用方法及注意事项,需要的朋友可以参考下
  • 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中全局变量

    2013-10-04 22:32:17
    最近使用python过程,发现使用全局变量时有时得声明global,有时不用,很郁闷,上网查了下资料,然后对比python的官方文档,发现原来global的作用是在给全局变量赋值之前声明,否则变量会被识别为局部变量。...
  • python中全局变量(global关键字)

    万次阅读 2020-10-05 02:51:19
    一般,需要用到全局变量的地方,我都会把这些函数写成一个,然后通过属性变量的方法公用一个变量。不过,很多时候用不着大动干戈去写。 先看一个简单栗子: a = 0 # initialize variable a def coo(): ...
  • Python中局部变量、全局变量和修改全局变量.pdf
  • 本文主要总结python中全局变量、局部变量和函数调用时的可变对象的使用: 1、关于全局变量和局部变量 (1)如果函数内无global关键字,优先读取局部变量,无局部变量则读取全局变量,不能对全局变量重新赋值。 ...
  • 我们在使用Python编写应用的时候,有时候会遇到多个文件之间传递同一个全局变量的情况。所以下面这篇文章主要给大家介绍了关于Python跨文件全局变量的实现方法,需要的朋友可以参考借鉴,下面来一起看看吧。
  • 全局变量是在整个py文件声明,全局范围内都可以访问 局部变量是在某个函数声明的,只能在该函数调用它,如果试图在超出范围的地方调用,程序就爆掉了 如果在函数内部定义与某个全局变量一样名称的局部变量,就...
  • <p>a 一个程序的变量包含两类全局变量和局部变量 b全局变量一般没有缩进 c全局变量在程序执行全过程有效 d全局变量不能和局部变量重名</p>
  • Python跨文件全局变量

    万次阅读 2018-04-25 18:17:30
     Python  global 关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量:我们知道Python使用变量的时候是可以直接使用的,x=[] ,y=2,z="123",而不需要先定义(var x...
  • python局部变量全局变量-静态方法-实例变量静态变量代码解析。
  • python中全局变量与C语言类似,也就是在的那个单页面所有函数外头定义的变量局部变量为函数内定义的变量,函数执行完后会被回收实例变量是类中前面有self的变量,每个实例变量都不同变量是所有实例共享的一个...
  • 和C语言一样,Python也具有全局变量,其定义全局变量的用法有两种: 1.声明法 该方法是直接在当前模块进行全局变量定义声明,使用global的声明方式,再进行引用! OLD_URL='http://oldboyedu.com' ...
  • 全局变量 1.局部变量 在 def , 我们可以定义一个局部变量, 这个变量 a 只能在这个功能 fun 有效, 出了这个功能, a 这个变量就不是那个局部的 a. def fun(): a = 10 print(a) return a+90 print(fun()) 下面...
  • python全局变量

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

    万次阅读 多人点赞 2015-09-04 16:38:59
    全局变量是在整个py文件声明,全局范围内都可以访问 局部变量是在某个函数声明的,只能在该函数调用它,如果试图在超出范围的地方调用,程序就爆掉了
  • python函数可以访问全局变量但是不能给全局变量赋值,除非进行显式声明global a 比如定义了全局变量 a 在函数my_fun()可以直接访问a的值,而不需要global全局变量申明。下图为上面代码运行输出 当企图改变全局...
  • Python 全局变量与global关键字

    万次阅读 多人点赞 2017-07-25 19:34:39
    Python 全局变量之谜​ 在Python的变量使用,经常会遇到这样的错误:local variable 'a' referenced before assignment它的意思是:局部变量“a”在赋值前就被引用了。
  • python中全局变量一般有两种使用方式: 第一种:是在一个单独的模块定义好,然后在需要使用的全局模块中将定义的全局变量模块导入。 第二种:直接在当前的模块定义好,然后直接在本模块通过 global 声明,...
  • a、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。 b、局部变量:在函数内、在class的方法(构造、方法、静态方法、实例方法)内(变量未加self修饰),这就是局部变量 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 153,673
精华内容 61,469
关键字:

python类中的全局变量

python 订阅