函数的返回值
使用return返回值时,不能同时返回多个值,返回的是一个值,并不是多个:
上面的这个就是返回的一个元组,我们可以结合解构来获取这三个值,
作用域
一个标识符的可见范围,这就是标识符的作用域,一般常说的是变量的作用域
对比这两个函数,第二个函数会报错:UnboundLocalError: local variable ‘x’ referenced before assignment
这是因为,我们在函数内部,执行了x += 1这个语句块,也就是 x = x + 1,这里对x进行了重新赋值,而我们常说,赋值即定义,我们这里将 x + 1赋值给了x,
而这里的x + 1中的x从何而来,我们没有去定义,所以会出错,下面修改下:
也就是说: 我们在函数内单纯的引用这个变量时,是不会出错的,只会记录一次引用次数,但是如果我们在函数内部重新赋值该变量,便需要重新定义了。这里我们需要弄清楚是引用还是赋值这两个概念
经过这个示例,我们能够看出一个变量在函数外和函数内是不一样的,这个变量所作用的范围是不一样的,在函数外部定义一个变量时,整个环境都可见,在函数内部定义一个变量时,仅限于函数内部使用,且对于外部是不可见的
再来看一个示例:
这个示例我们可以看出,内层函数可以引用外层函数的变量,但是内层函数在进行重新定义变量时,是和外层函数中的同名变量是不影响的,也就是说,这两个变量所作用的作用域不同,在外层函数的作用域中对内层函数里的变量并不可见,而相反,内层作用域是可以看见外层的变量的
那么我们该如何区分局部作用域和全局作用域,也就是如何定义全局变量和局部变量呢?
全局变量global