函数作用域

对于函数来说,有一个很重要的也是基础的知识点需要我们知道了解清楚——作用域。什么是作用域呢?函数有可见范围,这就是作用域的 概念。
举个简单的函数嵌套,了解一下可见范围。函数嵌套就是在一个函数中定义了另一个函数,这个很好理解。

def outer():
    def inner():
        print('inner')
    print('outer')
    inner()
outer()
inner()

首先怎么阅读?从上到下遇到“def”先跳过,这样就是直接遇到了outer(),就是函数outer的调用,接下来就是执行了,同样的遇到‘def’跳过,打印‘outer’,往下走inner(),执行一下inner函数,这个内部函数里面就一个命令:打印‘inner’。到此,outer函数执行完毕。通过走一遍我们发现,嵌套结构里面先执行外层的函数,然后再外层遇到调用内层函数的命令才会执行内部函数,这样的结构也就决定了你直接调用内部函数是行不通的,内部函数相当于被外层包住了,我们是不能直接“看见”它的。这个函数嵌套的结果是什么呢?
可以看到在外层直接调用内层是报错。因为它不可见。
作用域:一个标识符的可见范围,这就是标识符的作用域,一般我们常说的是变量的作用域。
作用域分为全局作用域和局部作用域。
全局作用域在整个程序运行环境中都可见,局部作用域在函数,类等内部可见,局部变量使用范围不能超过其所在的局部作用域。
举例,对比一下下面2个函数。
函数1
函数2
看着这两个函数基本一样啊,就是第二个函数多了一个 x += 1 为什么就报错了呢?python里面赋值即重新定义,这个等式把‘x’重新定义了一次,已经和外面的x不一样了,因为作用域在函数里面定义 x 就是内部所有 x 都是局部变量x了而左边定义还没完成,你就要用它做运算了,所以错了。解决办法很简单用不同的变量接收,或者把 x = 5写进函数里面。
在嵌套结构结构中,外层变量的作用域在内层变量作用域中可见,但是如果内层重新定义了,内层就会使用在自己内层作用域新定义的,但是不影响外层变量作用域中的变量。举例:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值