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)

猜你喜欢

转载自www.cnblogs.com/wangdianchao/p/11479811.html