python_函数作用域

Posted 手可摘星辰。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python_函数作用域相关的知识,希望对你有一定的参考价值。

py文件:全局作用域

函数:局部作用域

  • 一个函数是一个作用域
  • def func():
        x = 9
        print(x)
    func()
    print(x)
  • 作用域中查找数据规则:优先在自己的作用域找数据,自己没有就去“父级”->“父级”->直到全局,全局没有就报错。
  • x = 10
    def func():
        x = 9
        print(x)
    func()

    x = 10
    def func():
    # x = 9
    print(x)
    def x1():
    # x = 888
    print(x)

    x1()
    func()
    
    
  • 子作用域中只能找到父级中的值,默认无法重新为父级的变量进行重新赋值(global.nonlocal可以强制做)。
  • name = wdc
    def func():
        # 这里name是函数中的一个新的变量,和全局作用域中的name没有任何关系。
        name = yhf
        print(name)
    func()
    # 这个打印的name还是为‘wdc‘
    print(name)

    name = [11,22,33]
    def func():
    # 列表为可变类型,用APPEND()方法可以修改列表中的内容
    name.append(‘wdc‘)
    print(name)
    func()
    print(name)

    name = ‘wdc‘
    def func():
    # 如果说非要更改全局作用域中的变量可以先用GLOBAL强制修改,可以重新赋值
    # 只能改全局变量
    global name
    name = ‘yhf‘
    print(name)
    func()
    print(name)

    name = ‘wdc‘
    def func():
    name = ‘yhf‘
    def func1():
    def func2():
    # nonlocal 找到上一级变量修改
    nonlocal name
    name = 888
    func2()
    func1()
    print(name)
    func()
    print(name)

     

以上是关于python_函数作用域的主要内容,如果未能解决你的问题,请参考以下文章

Python_函数的镶嵌和作用域链_26

Python全栈__动态参数名称空间作用域作用域链加载顺序函数的嵌套globalnonlocal

Python--作用域

Python3 包模块函数与变量作用域

21天学习python编程_作用域

python 归纳 _模块变量作用域