首页
学习
活动
专区
圈层
工具
发布

python基础—作用域

函数的返回值

  • python函数使用return语句返回  返回值
  • 所有函数都有返回值,如果没有return语句,默认调用 return None
  • return语句并不一定是函数的语句块的最后一条语句
  • 一个函数可以存在多个return语句,但是只有一条可以被执行,如果没有一条return语句被执行到,隐式调用return None
  • 如果有必要,可以显示调用return None,可以简写为return
  • 如果函数执行了return语句,函数就会返回,当前被执行的return语句之后的其他语句就不会被执行
  • 作用: 结束函数调用和返回值

使用return返回值时,不能同时返回多个值,返回的是一个值,并不是多个:

上面的这个就是返回的一个元组,我们可以结合解构来获取这三个值,

作用域

一个标识符的可见范围,这就是标识符的作用域,一般常说的是变量的作用域

对比这两个函数,第二个函数会报错:UnboundLocalError: local variable ‘x’ referenced before assignment

这是因为,我们在函数内部,执行了x += 1这个语句块,也就是 x = x + 1,这里对x进行了重新赋值,而我们常说,赋值即定义,我们这里将 x + 1赋值给了x,

而这里的x + 1中的x从何而来,我们没有去定义,所以会出错,下面修改下:

也就是说: 我们在函数内单纯的引用这个变量时,是不会出错的,只会记录一次引用次数,但是如果我们在函数内部重新赋值该变量,便需要重新定义了。这里我们需要弄清楚是引用还是赋值这两个概念

经过这个示例,我们能够看出一个变量在函数外和函数内是不一样的,这个变量所作用的范围是不一样的,在函数外部定义一个变量时,整个环境都可见,在函数内部定义一个变量时,仅限于函数内部使用,且对于外部是不可见的

再来看一个示例:

这个示例我们可以看出,内层函数可以引用外层函数的变量,但是内层函数在进行重新定义变量时,是和外层函数中的同名变量是不影响的,也就是说,这两个变量所作用的作用域不同,在外层函数的作用域中对内层函数里的变量并不可见,而相反,内层作用域是可以看见外层的变量的

那么我们该如何区分局部作用域和全局作用域,也就是如何定义全局变量和局部变量呢?

全局变量global

  • 使用global关键字的变量,将函数内部的变量声明为全局变量,并在本层作用域和外部作用域可以随意使用
下一篇
举报
领券