美文网首页
python3 局部变量、非局部变量和全局变量的区别

python3 局部变量、非局部变量和全局变量的区别

作者: 诸葛小愚 | 来源:发表于2018-08-11 15:39 被阅读0次

最近在看python中nonlocal和global的使用,参考网上的大作,写了点自己的心得。有不完善的地方,还请不吝赐教。

  • 局部变量作用在函数范围内,如果超出函数的作用范围,则对局部变量所作的操作,都将‘’失效“。
  • 全局变量在函数内访问,但是要修改的话,需要加global关键字,这样对全局变量的操作不会因为超出函数范而”失效“。
  • nonlocal关键字可将局部变量转为非局部变量,这样就可以在嵌套的函数内访问和修改。
spam='hello' #这是一个全局变量
def test():
    def do_local():
        spam='do_local'#创建一个局部变量

    def do_nonlocal():
        #变量用在嵌套作用域上
        nonlocal spam
        spam='do_nolocal'

    def do_global():
        #可以访问和修改全局变量,如果没有则创建一个全局变量
        global spam
        spam='do_global'

    spam='hello world'
    print('before do anything :',spam)
    do_local()
    print('after do_local: ',spam)
    do_nonlocal()
    print('after do_nonlocal: ',spam)
    do_global()
    print('after do_global: ',spam)
test()
print('全局变量',spam)
print(dir())#查看定义的全局变量

程序运行结果:

before do anything : hello world
after do_local:  hello world
after do_nonlocal:  do_nolocal
after do_global:  do_nolocal
全局变量 do_global
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'spam', 'test']
  • 总结一下
    global关键字申明的变量必须在全局作用域上,而如果在嵌套作用域中,则需要使用nonlocal关键字申明变量。
  • 使用global可以访问和修改全局变量,如果没有全局变量,则创建一个新的全局变量。
  • 这里需要注意python的变量作用域,请移步
  • 参考文章:python官方文档Linux中国

相关文章

  • 你真的理解static吗?

    static修饰的全局变量与普通的全局变量的区别static修饰的局部变量和普通局部变量的区别static修饰的函...

  • 编程中的局部变量,全局变量,静态变量

    关于局部变量、全局变量与静态全局变量和静态局部变量的比较与分析和拓展: 首先要明白的是局部变量与其它三个有本质区别...

  • python3 局部变量、非局部变量和全局变量的区别

    最近在看python中nonlocal和global的使用,参考网上的大作,写了点自己的心得。有不完善的地方,还请...

  • iOS 内存管理

    1 面试:全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 局部变量定义在局部的空间,全局变量定义在全局...

  • python

    函数内全局变量赋值 Python中有局部变量和全局变量,当局部变量名字和全局变量名字重复时,局部变量会覆盖掉全局变...

  • C++面试考点总结

    static作用是什么?在C和C++中有何区别? static可以修饰局部变量(静态局部变量)、全局变量(静态全局...

  • Swift-全局变量、局部变量以及类型属性

    全局变量和局部变量 全局变量和局部变量 计算属性和属性观察器所描述的功能也可以用于全局变量和局部变量。全局变量是在...

  • C语言特性(局部变量和全局变量)

    局部变量和全局变量 局部变量 局部变量根据定义形式的不同,又分为如下三种。 全局变量 在一个函数内部,如果全局变量...

  • Python基础教程——全局变量和局部变量的应用

    前言 学编程的总离不开全局变量和局部变量,那么,首先我们要知道局部变量和全局变量的定义: 局部变量:定义在函数内部...

  • python基础

    1.局部变量、全局变量 在函数内部修改全局变量时局部变量会创建一个和全局变量一样名称的局部变量,在更改的时候只会更...

网友评论

      本文标题:python3 局部变量、非局部变量和全局变量的区别

      本文链接:https://www.haomeiwen.com/subject/cpddbftx.html