无返回值的函数
之前说了好多,都是有返回值的函数,那有没有没返回值的函数呢?
这个可以有!
图片.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
未完待续,连载中......
现在还坚持再看连载学习的你们真的很棒棒!
入门部分已经学完大部分啦!加油