• 函数变量作用域


    变量作用域:

    变量的作用域相当于变量的命名空间,赋值过的变量并不是在哪里都可以使用的。如何定义变量决定了变量可以在哪里被使用python中变量赋值的位置决定了哪些范围的对象可以访问这个变量,该范围也就是作用域。

    分为局部变量和全局变量

    局部变量:

    在函数内赋值的变量,不做特殊说明声明的就是局部变量。作用域是局部的,只能在当前函数使用

    Def foo():

                   X = “hello”

                   Print(x)

    Foo()

    Print(x)#错误

    >>hello

    >>nameError:name’x’ is not defined

    在函数体内的print(x)成功执行,但是函数体外的“print(x)”执行失败,即错误信息:”x”没有被定义。

    Def foo(x):

                   Print(x)

    Foo(“hello”)

    Print(x)

    >>hello

    >>nameError:name’x’ is not defined

    同样的结果,函数体内的“print(x)”成功执行,函数外的“print(x)”执行失败,并且受到错误信息:“x”没有定义。

    全局变量:

    在函数外定义的变量就是全局变量,作用域是整个程序范围

    函数体内的重新赋值的相同函数名字变量并不会改变函数体外的全局变量

    X = “函数体外”

    Def foo():

                   X = “函数体外”

                   Print(x)

    Foo()

    Print(x)

    >>函数体内

    >>函数体外

    函数foo对“x”进行复制操作时并没有改变函数体外的“x”变量。也就可以说是函数内实际就是创建了一个新的变量,只是名字同函数外“x”变量相同,但并不会改变函数外的“x”。

    X = “函数体外”

    Def foo():

                   Global x

                   X = “函数体内”

                   Print(x)

    Foo()

    Print(x)

    >>函数体内

    >>函数体内

    从执行结果可以发现,函数体内修改全局变量“x”为“函数体内”,函数体外的全局变量“x”也变成了“函数体内”。“global”可以在函数体内修改全局变量。

  • 相关阅读:
    大端小端与数字的二进制存储
    java基础之进制转换汇总
    (转) tcp udp通讯协议
    JAVA Tcp Udp的通讯实现(转)
    ExecutorService创建线程使用 转()
    转:java中的位运算
    SVN服务器的搭建与TortoiseSVN的使用
    [Mark]VM Cone & Template
    [Mark]VM migrate
    [Mark] ethtool command in REHL OS
  • 原文地址:https://www.cnblogs.com/zl-mengxiang/p/13869872.html
Copyright © 2020-2023  润新知