作者:刘顺祥
个人微信公众号:每天进步一点点2015
前文传送门:
从零开始学Python数据分析【1】--数据类型及结构
从零开始学Python数据分析【2】-- 数值计算及正则表达式
在Python编程中控制流和自定义函数是用的非常频繁的语句,通过控制流完成各种判断、循环等处理;通过自定义函数实现个性化的问题解决。今天我们就来讲讲Python中的控制流和自定义函数。
控制流
if判断
if判断可以处理两分支判断和多分支判断,对于两分支类似于Excel中的if函数、R中的ifelse函数,处理的是某种条件满足时则如何如何,否则又如何如何;而多分支无非是Excel中if函数或R中ifelse函数的多层嵌套而已。接下来看看Python中if语言的语法和例子。
语法
注意的点:
1)关键词if、elif、else所在行的末尾必须要有英文冒号;
2)冒号的下一行必须要有缩进;
3)else后面不要再写条件;
例子
for循环
for循环可以对一切可迭代对象(如列表、元组、字典、字符串、序列等)按照指定的方式进行循环处理。在R语言中,也有相应的for循环语句,只是语法上有些不同,实质是完全一致的。
语法
例子
while循环
while循环与for循环比较类似,两者基本上都是可以互换的,即for循环也可以用while循环完成,反之亦可。
语法
注意的点:
1)对于可知循环次数的while循环,一般需要给一个初始的计数器i,i可以是任何值(这要根据你实际的情况来了,如我只是计算1....100的和,那i可以从0开始也可以从1开始);
2)对于可知循环次数的while循环,有了初始的计数器,也要有循环体内的累加器,即 i+=1,每循环一次则累加记录一次;
3)对于未知循环次数的while循环,可以用True关键词接在while关键词后面,但一定要记得通过if分支实现break操作,否则将会进入死循环。
例子
自定义函数
lambda函数
lambda函数又称匿名函数,是一种精简版的小函数,可以非常方便的嵌套在任何地方。先来看一下lambda函数的语法和例子。
语法
注意的点:
1)parameters形参可以是多个,用英文逗号隔开;
2)参数与函数体之间用英文冒号隔开,且不需要换行;
3)函数体expression不可写的复杂,即一个表达式即可;
例子
自定义函数语法
在实际工作中,你可能觉得Python现有的函数并不能满足你的需求,这就需要你自己构造一个自定义函数完成实际的工作,关于自定义函数是一个必知必会的知识点,下面带你进入自定义函数的说明。
语法
注意的点:
1)以关键词def开头,说明准备开始自定义函数;
2)function_name是用户指定要的一个函数名称;
3)形参放在括号内,即使没有参数,括号也保留着;
4)def行末尾记得加上英文冒号,并换行缩进写入函数体
5)一般需要加上关键词return,将函数的运算结果返回出来;
例如,使用列表解析式,对列表的每一个元素做一个二次函数处理
Python的自定义函数,有四种类型的形参,分别是必选参数、默认参数、可变参数和关键词参数,我们通过例子一一道来。
必选参数
顾名思义,自定义函数时,传入了某个形参,为保证函数正常运行则必须为其传入实参。举个例子就明白了:
上面的程序运行出错,就是因为没有给c参数传入一个实参导致的。我们再看一个猜数字游戏的代码:
默认参数
默认参数就是在自定义函数的时候,就已经给了函数一个初始值的参数,那么,在函数运行时,就可以不用为该默认参数传值了,当然也可以根据实际情况为默认参数传入其他值。
这里的pi参数就是一个默认参数,可以在函数运行时不给该参数传入一个值,从而减少了重复的代码。
可变参数
有的时候,你在构造一个函数时都不知道会有多少参数,即参数是可变的,故衍生出了可变参数。可变参数前面需要加一个星号(*),用来区分必选参数和默认参数,可变参数是以元组的形式传给函数的,还是举个例子说明比较好。
参数name前面有一个星号,说明该参数就是可变参数,而income,outcome则为必选参数,故给函数func2传入6个参数时,前面两个分别为income和outcome的实参,后面4个则以捆绑的元组作为name的实参。
关键字参数
最后,再来说一下关键字参数,其实该参数与可变参数类似,区别有二,一是关键字参数前面需要以双星号(**);二是关键字参数是以字典的形式传给函数的。同样举个例子说明:
math,english,chinese三个参数就传递给了关键字参数score,而且这三个捆绑在一起的实参是以字典的形式传给score参数的。
注意
在构造自定义函数时,如果你的函数比较复杂,需要考虑到使用上面介绍的4种参数,切记4种参数是有顺序的,即必须参数,默认参数,可变参数和关键字参数。
今天我们的内容就介绍到这边,欢迎大家拍砖。下期我们来聊聊Python数组操作--numpy。
Python爱好者社区历史文章大合集:
Python爱好者社区历史文章列表(每周append更新一次)
福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:
关注后在公众号内回复“课程”即可获取:
1.崔老师爬虫实战案例免费学习视频。
2.丘老师数据科学入门指导免费学习视频。
3.陈老师数据分析报告制作免费学习视频。
4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。
5.丘老师Python网络爬虫实战免费学习视频。