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

浏览: 4324

前言

前文传送门:

Python从零开始系列连载(1)——安装环境

Python从零开始系列连载(2)——jupyter的常用操作(上)

Python从零开始系列连载(3)——jupyter的常用操作(中)

Python从零开始系列连载(4)——jupyter的常用操作(下)

Python从零开始系列连载(5)——Python的基本数据类型(上)

Python从零开始系列连载(6)——Python的基本数据类型(中)

Python从零开始系列连载(7)——Python的基本数据类型(中二)

Python从零开始系列连载(8)——Python的基本数据类型(下)

Python从零开始系列连载(9)——Python的基本运算和表达式(上)

Python从零开始系列连载(10)——Python的基本运算和表达式(中)

Python从零开始系列连载(11)——Python的基本运算和表达式(中二)

Python从零开始系列连载(12)——Python的基本运算和表达式(下)

Python从零开始系列连载(13)——Python程序的基本控制流程(上)

Python从零开始系列连载(14)——Python程序的基本控制流程(中) 

Python从零开始系列连载(15)——Python程序的基本控制流程(中二)

Python从零开始系列连载(16)——Python程序的基本控制流程(下)

Python从零开始系列连载(17)——Python特色数据类型(列表)(上)

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

Python从零开始系列连载(19)——Python特色数据类型(列表)(下)

Python从零开始系列连载(20)——Python特色数据类型(元组)(上)

Python从零开始系列连载(21)——Python特色数据类型(元组)(下)

Python从零开始系列连载(22)——Python特色数据类型(字典)(上)

Python从零开始系列连载(23)——Python特色数据类型(字典)(下)

Python从零开始系列连载(24)——Python特色数据类型(集合)(上)

Python从零开始系列连载(25)——Python特色数据类型(集合)(下)

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


无返回值的函数


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


这个可以有!


图片.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

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


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

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


下一篇:Python从零开始系列连载(28)——Python特色数据类型(函数)(下)

推荐 2
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

7 个评论

是不是可以理解为:比如有3层,每层优先使用自己定义的变量,第三层没有就往第二层找,第二层没有就往第一层找。
是的
是的
最后一个例子,为什么先输出print(a),再运算定义的函数?
因为打印在函数调用之前~
老师,第一个函数解释的错了,那里打印出来的是1,不是2.
感谢 ~

要回复文章请先登录注册