• 技术文章 >后端开发 >Python教程

    Python中的全局变量和局部变量的区别(代码详解)

    藏色散人藏色散人2019-03-16 16:37:33原创3791

    全局变量是在函数外部定义和声明的变量,我们需要在函数内部使用它们。

    #这个函数使用全局变量s
    def f():  
        print s  
      
    # 全局作用域
    s = "I love Python"
    f()

    输出:

    I love Python

    如果在函数范围内定义了具有相同名称的变量,那么它将仅打印函数内给出的值而不是全局值。

    # 这个函数有一个与s同名的变量。
    def f():  
        s = "Me too."
        print s  
      
    # 全局作用域
    s = "I love Python" 
    f() 
    print s

    输出:

    Me too
    I love Python

    在我们调用函数f()之前,变量s被定义为字符串“I love Python”。f()中唯一的语句是“print s”语句。由于没有本地s,将使用全局s的值。

    问题是,如果我们改变函数f()内部的s值会发生什么?它会影响全局吗?

    我们在下面的代码中测试它:

    def f():  
        print s 
      
        # 如果我们在下面评论,这个程序不会显示错误。
        s = "Me too."
      
        print s 
      
    #全局作用域
    s = "I love Python" 
    f() 
    print s

    输出:

    Line 2: undefined: Error: local variable 's' referenced before assignment

    为了使上述程序有效,我们需要使用“global”关键字。如果我们想要进行分配/更改它们,我们只需要在函数中使用全局关键字。打印和访问不需要全局。

    Python“假设”我们想要一个局部变量,因为f()内部的赋值,所以第一个print语句抛出此错误消息。在函数内部更改或创建的任何变量都是本地的,如果它尚未声明为全局变量。要告诉Python,我们要使用全局变量,我们必须使用关键字“global”

    如以下示例所示:

    # 这个函数修改全局变量's' 
    def f(): 
        global s 
        print s 
        s = "Look for Python"
        print s  
      
    #全局作用域
    s = "Python is great!" 
    f() 
    print s

    输出:

    Python is great!
    Look for Python.
    Look for Python.

    一个很好的例子:

    a = 1
      
    # 使用global,因为没有本地'a' 
    def f(): 
        print 'Inside f() : ', a 
      
    #变量“a”被重新定义为局部变量
    def g():     
        a = 2
        print 'Inside g() : ',a 
      
    #使用全局关键字修改全局'a'
    def h():     
        global a 
        a = 3
        print 'Inside h() : ',a 
      
    # 全局作用域
    print 'global : ',a 
    f() 
    print 'global : ',a 
    g() 
    print 'global : ',a 
    h() 
    print 'global : ',a

    输出:

    global :  1
    Inside f() :  1
    global :  1
    Inside g() :  2
    global :  1
    Inside h() :  3
    global :  3

    相关推荐:《Python教程

    以上就是Python中的全局变量和局部变量的区别(代码详解)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:anaconda使用教程(图文) 下一篇:Python中整数的最大可能值是多少?(代码示例)

    相关文章推荐

    • Python中的特殊变量__name__有什么用?• Python描述符的用法介绍(附示例)• Python并发之PoolExecutor的介绍(附示例)• Python抓取网页乱码的原因及解决方法

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网