首页
学习
活动
专区
圈层
工具
发布
30 篇文章

Python基础语法-函数-函数的作用域(二)

命名空间

在 Python 中,每个函数都有自己的命名空间,用于存储函数内定义的变量。变量名只在相应的命名空间中可见,因此同名变量可以存在于不同的命名空间中而不会相互干扰。

例如:

代码语言:javascript
复制
def my_func():
    count = 1
    print(count)

my_func()      # 输出 1
print(count)   # 报错,count 未定义

在上面的例子中,my_func() 函数内定义了一个变量 count,值为 1。在函数内部输出 count 的值,输出为 1。但是,函数外部没有定义 count 变量,因此会报错。

作用域嵌套

在 Python 中,函数可以嵌套定义。内部函数可以访问外部函数的变量,但是外部函数不能访问内部函数的变量。如果内部函数定义了同名的变量,那么内部函数的变量会覆盖外部函数的同名变量。

例如:

代码语言:javascript
复制
def outer_func():
    count = 0

    def inner_func():
        nonlocal count  # 声明 count 为外部函数的变量
        count += 1
        print(count)

    inner_func()   # 输出 1
    print(count)   # 输出 1

outer_func()

在上面的例子中,outer_func() 函数内定义了一个变量 count,值为 0。内部定义了一个函数 inner_func(),并访问了外部函数的变量 count,将其值加 1 并输出 1。再次输出外部函数的变量 count,输出为 1

在内部函数中修改外部函数的变量,需要使用 nonlocal 关键字来声明变量是外部函数的变量。如果不声明,Python 会将其认为是新的局部变量,导致外部函数的变量没有被修改。

下一篇
举报
领券