python 变量作用域

变量作用域

  • 块级作用域

    • python中变量没有块级作用域,下面代码能够正常运行

    if True:
       name = 'xiaoming'

    print(name)
  • 局部作用域

    • 局部变量:定义在函数内部的变量叫局部变量,只能在函数内部使用


    def test():
       a = 10

    test()
    # 此处会报错
    # print(a)
  • 全局作用域

    • 全局变量:定义在函数外部的变量叫全局变量,哪里都可以使用(但是不能修改)


    num = 20

    def show():
       # 加上这句代码,就可以在函数内部修改全局变量
       global num
       num = 30
       print(num)

show() print(num)



> 当函数内部与外部有同名变量时,优先使用内部的

说明:

1. 全部变量在函数内部只能使用不能修改
2. 若要在函数内部修改全局变量,通过global关键字声明

- nonlocal

- 内部函数使用外部函数的局部变量时使用

```python
def wai():
    age = 20
    def nei():
        # 使用外层函数的局部变量
        nonlocal age
        age = 30
        print(age)
    nei()
    print(age)

wai()

加上nonlocal就可以在内部函数中修改外部函数的局部变量了

原文地址:https://www.cnblogs.com/kiki5881/p/8550055.html