Python笔记 变量作用域

Python变量查找顺序 L -> E -> G -> B

  • L (Local) 局部作用域
  • E (Enclosing) 闭包函数外的函数中
  • G (Global) 全局作用域
  • B (Built-in) 内建作用域

局部变量

def func():
    word = 'Hello pynotes'

print(word)

上面的代码会报 NameError 错误
因为 变量word只在 func函数中定义,直接 在外部print python找不到这个变量

闭包函数

name = 'global name'
def func():
    name = 'Hello closure'

    def closure():
        print(name)
    
    closure()

func()

全局变量

简单示例

name = 'silence'

def func():
    print(name)

func()

func函数中找不到name变量时就往再上一级查找

修改全局变量

age = 25

def func():
    age = 26

print(age)

func函数中定义的是局部变量并不会影响到全局的变量age
如果想改变全局变量age该像这么做

一些问题

age = 26

def func():
    now = age + 1
    age = 25
    print(age)

func()

你可能会以为 会输出 25,结果报了UnboundLocalError错误

Comments
Write a Comment