Python从零开始系列连载(27)——Python特色数据类型(函数)(中)

168 阅读2分钟

无返回值的函数

之前说了好多,都是有返回值的函数,那有没有没返回值的函数呢?

这个可以有!

图片.png

函数中变量的作用域

变量的作用域就是在程序中能对这个变量操作的区域范围

有点像初高中学的函数的定义域

Python允许同名变量的出现

让我们看个例子:

图片.png

我们调用dayin_outer( )

这里打印的 a 的值是 1

注意的dayin_inner( ) 函数只是定义了,并没有调用,所以不会运行这个dayin_inner( )的函数体

我们稍微修改一下:

图片.png

这样就可以了

注意到,a变量分别有三次赋值,这里的赋值不是覆盖了,因为他们三个a是在不同的位置

第一个a是在函数外面,我们称之为全局变量(即它的作用域是全局的)

比如我们改一下程序:

图片.png

这时候,外面的a就打印出来了!

当然,与之相对的,第二个和第三个a就成为局部变量

而且这个dayin_inner( ) 函数是被嵌套在 dayin_outer( ) 中的

值为 1 的 a 的作用范围是dayin_outer( )外层函数中

值为 2 的 a 的作用范围是dayin_outer( )内层函数中

当我们要使用变量时候,现在最近的区域搜索

我们修改一下程序:

图片.png

当我们把 a = 1 注释掉

则外层函数打印 a 的时候,取的全局变量

因为内层函数的作用域只在内层函数中,不能延伸到外层函数

我们再改一下程序:

图片.png

把内层函数里的 a 注释掉

则内层函数使用的 a 是外层函数定义的 a

因为,外层函数距离内层函数比全局变量距离内层函数更近

如果外层函数没有定义 a ,则会去取全局变量

图片.png

是不是又想起了俄罗斯套娃。。。

注意:不要将变量的作用域和变量重复赋值覆盖搞混

我们看个例子:

图片.png

注意这里全局变量只有一个 a

他的值是 4,因为 0 被覆盖了

今天作业是自己跟着操作一遍~

自己不敲代码永远学不会写代码

下课

人生苦短,我选Python

未完待续,连载中......

现在还坚持再看连载学习的你们真的很棒棒!

入门部分已经学完大部分啦!加油