zoukankan      html  css  js  c++  java
  • 函数变量作用域

    变量作用域:

    变量的作用域相当于变量的命名空间,赋值过的变量并不是在哪里都可以使用的。如何定义变量决定了变量可以在哪里被使用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面向对象之继承
    ios Block解决循环引用和回传值
    iOS 计算label的高度
    十六进制的颜色
    App调SDK时加判断
    vmware中clone后的工作
    关于python保留几位小数,不进行四舍五入的方法
    git 绑定github
    opensuse ./filezilla: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory
    关于opensuse开机登录背景修改后,不生效的问题
  • 原文地址:https://www.cnblogs.com/zl-mengxiang/p/13869872.html
Copyright © 2011-2022 走看看