查看原文
其他

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

2017-06-19 刘顺祥 每天进步一点点2015

在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--数据类型及结构

从零开始学Python--数值计算及正则表达式


每天进步一点点2015

学习与分享,取长补短,关注小号!


长按识别二维码 马上关注



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

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