专栏名称: Python爱好者社区
人生苦短,我用Python。分享Python相关的技术文章、工具资源、精选课程、视频教程、热点资讯、学习资料等。每天自动更新和推送。
目录
相关文章推荐
Python爱好者社区  ·  72k,直接封神! ·  3 天前  
Python爱好者社区  ·  王者归来!《大模型最佳实践》开源了。。。 ·  5 天前  
Python爱好者社区  ·  写个爬虫,一单一个W ·  4 天前  
Python爱好者社区  ·  北大韦东奕上课照片走红,板书潇洒,新发型吸睛 ... ·  1 周前  
51好读  ›  专栏  ›  Python爱好者社区

从零开始学Python数据分析【3】-- 控制流与自定义函数

Python爱好者社区  · 公众号  · Python  · 2017-10-11 16:24

正文

作者:刘顺祥

个人微信公众号:每天进步一点点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网络爬虫实战免费学习视频。