查看原文
其他

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

2017-11-04 王大伟 Python爱好者社区


作者:王大伟

Python爱好者社区唯一小编

博客:https://ask.hellobi.com/blog/wangdawei



前言

前文传送门:

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

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

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

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

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允许同名变量的出现


让我们看个例子:



我们调用dayin_outer( )

这里打印的 a 的值是 2

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


我们稍微修改一下:


这样就可以了


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


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


比如我们改一下程序:




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


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

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

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

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


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


我们修改一下程序:




当我们把 a = 1 注释掉


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


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


我们再改一下程序:



把内层函数里的 a 注释掉


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

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


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



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


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


我们看个例子:



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

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


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

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


下课


人生苦短,我选Python

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


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

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



接下来是福利时间!!!

连载看的不过瘾?快来听小编的Python从零开始免费直播课啦~

点击文末阅读原文立即报名


加微信直播管理员微信:xtechday(请注明:从零开始) ,随后管理员会将你拉入到交流群中。  

Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复“课程”即可获取:

1.崔老师爬虫实战案例免费学习视频。

2.丘老师数据科学入门指导免费学习视频。

3.陈老师数据分析报告制作免费学习视频。

4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

5.丘老师Python网络爬虫实战免费学习视频。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存