今天让我们来初步认识一个在python中非常重要的组成部分:函数
首先,让我们来幻想这样一个场景:
比如说我们现在想要通过社交软件约一个妹子,步骤都有什么?
print('打开手机 ') print('打开陌陌') print('找一个漂亮的小姐姐') print('吃饭,唱歌,看电影,然后...')
结果:
打开手机
打开陌陌
找一个漂亮的小姐姐
吃饭,唱歌,看电影,然后 ...
是这样一个步骤吧,但是约一次不给力,还想再约一次,是不是还得重复上面的过程,第三次...是不是很麻烦,如果我们不想这样麻烦,很简单:
while 1: print('打开手机 ') print('打开陌陌') print('找一个漂亮的小姐姐') print('吃饭,唱歌,看电影,然后...')
之前我们说的while循环就能帮我们实现,可是现在问题又来了,这是一个死循环,会不停的约,根本停不下来,是不是我们的身体会受不了啊,况且我们也不能不停的约啊,我们还要上班,还有其他事情要干,其实用我们今天的知识会非常简单.
一.什么是函数
我们知道数学里的函数是一种计算方式,让我们的运算变得方便,python中的函数其实是有同样的作用,可以让我们的编程更方便,编码更简洁,解决一些编码冗余的问题.说了半天我们还没有给函数一个准确的定义.
定义:对功能或者动作的封装.那么函数怎么用呢?
二.函数的语法和定义
语法:
def 函数名():
函数体
调用:
函数名()
def--->define 函数的关键字 ,定义的意思
那么我们再看看上面的情况要怎么解决.首先我们要计划一下,要怎么约,然后需要的时候我们约一下,可以使用函数来定义一个动作:
def yue():
#描述你的动作 print('打开手机 ') print('打开陌陌') print('找一个漂亮的小姐姐') print('吃饭,唱歌,看电影,然后...') yue() #调用函数,不调用不执行函数体
print('上班')
print('上班')
print('上班')
yue() #再调用
这样我们就可以在需要的时候再约了
三.函数的返回值
return : 返回
def yue(): print('打开手机 ') print('打开陌陌') print('找一个漂亮的小姐姐') print('吃饭,唱歌,看电影,然后...') return '小姐姐' #只返回一个结果:小姐姐 下面的都不会执行 return '大妈' return '流浪汉' ret = yue()
print(ret) #小姐姐
return后面也可以返回多个值
def yue(): print('打开手机 ') print('打开陌陌') print('找一个漂亮的小姐姐') print('吃饭,唱歌,看电影,然后...') return '小姐姐','大妈','流浪汉'#返回多个值,以元组的形式
ret = yue()
print(ret) #('小姐姐','大妈','流浪汉')
函数的返回值:
1.可以有,也可以没有;
2.函数中没有return,不返回任何结果,即使接收也是None;
3.return后面如果是一个值,返回一个值;
4.如果是多个值,多个值会以元组的形式返回;
5.程序 执行到return,函数直接结束,下面的不会执行;
def yue(): #描述你的动作 print('打开手机 ') print('打开陌陌') print('找一个漂亮的小姐姐') print('吃饭,唱歌,看电影,然后...') ret = yue() print(ret) #None
def yue(): #描述你的动作 print('打开手机 ') print('打开陌陌') print('找一个漂亮的小姐姐') return None #返回的是None,后面的就不再执行了 print('吃饭,唱歌,看电影,然后...') ret = yue() print(ret)
四.函数的参数(部分)
函数里的有两个小括号 ,除了我们之前知道的调用的功能之外,它还可以传递一些信息
def yue(app): print('打开手机') print('打开%s'%app) print('找一个心仪的小姐姐') print('吃饭,唱歌,看电影,然后...') yue('微信') yue('陌陌') yue('探探')
根据你指定的APP去约
在括号里写的叫参数,在函数声明的位置写的参数叫形参,在函数调用的位置写的叫实参,而把实参传递给形参的过程叫传参
1.形参
必须保证所有的形参都有值,调用的时候如果不传值的话会报错,不够也会报错
1.位置参数 : 按照位置声明的变量
2.默认值参数
3.当默认值和位置参数同时存在的时候 规定 : 默认值必须写在后面
2.实参
1.位置参数 按照位置给形参传递信息
2.关键字参数 按照形参的声明的变量名进行传递
3.混合参数 位置+关键字(规定:位置在前,关键字在后)
记住:所有带等号的参数都放后面
def chi(zhushi,fushi,tang,tiandian): print('主食:%s'%zhushi) print('副食:%s'%fushi) print('汤:%s'tang) print('甜点:%s'%tiandian) chi('大米','红烧肉','紫菜蛋花汤','蛋糕')
结果:
主食:大米
副食:红烧肉
汤:紫菜蛋花汤
甜点:蛋糕
这是按照位置进行传参,实参跟形参一一对应,让我们来看一下关键字传参
def chi(zhushi,fushi,tang,tiandian): print('主食:%s'%zhushi) print('副食:%s'%fushi) print('汤:%s'tang) print('甜点:%s'%tiandian) chi(zhushi='大米',fushi='红烧肉',tang='紫菜蛋花汤',tiandian='蛋糕') 结果: 主食:大米 副食:红烧肉 汤:紫菜蛋花汤 甜点 :蛋糕
结果是一样的.上面都是正确的演示,下面来一种错误的演示
def chi(zhushi,fushi,tang,tiandian): print('主食:%s'%zhushi) print('副食:%s'%fushi) print('汤:%s'%tang) print('甜点:%s'%tiandian) chi('大米','红烧肉',tang='紫菜蛋花汤','蛋糕') 结果: SyntaxError: positional argument follows keyword argument 报错:位置参数在关键字参数 之后
再看另一种情况,形参中的位置参数和默认值参数
例子:比如我们要统计班级里学生的情况
def regist(name,age,sex): print('name:',name) print('age:',age) print('sex:',sex) regist('张三',19,'男') regist('李四',20,'男') regist('王小丽',18,'女')
这是位置参数,我们可以看到,男学生比较多,那么就可以这样操作了:
def regist(name,age,sex='男'): print('name:',name) print('age:',age) print('sex:',sex) regist('张三',19) regist('李四',20) regist('王小丽',18,'女')
把性别直接默认为男,女同学就直接传 '女'就可以了,男的就可以不用输入了.
今天简单的认识一下函数,明天还会接着今天没写完的写!