前方高能——初识函数
一.什么是函数
首先给出函数的官方定义:对代码块和功能的封装和定义
用可以让人听懂的方法来说就是这样一个过程,好比你们现在用的一些约*软件一样,咱们先来写一下整个流程:
print("打开手机")
print("打开陌陌")
print("搜索附近")
print("你好,约吗?")
print("走吧!")
输出:
打开陌陌
搜索附近
你好,约吗?
走吧!
那么你就约一次吗?下一次约的时候是不是还要写一边呢??
那这样一直去做反复的事情是不是很繁琐,那不如我把这一套程序封装在一个函数里面,下一次用的时候就直接调用,这样不就不用做那多重复的事了呀,那么这样函数的概念就出来了
那我们就引出函数登场
def yue()
print("打开手机")
print("打开陌陌")
print("搜索附近")
print("你好,约吗?")
print("走吧!")
yue()
输出结果
打开手机
打开陌陌
搜索附近
你好,约吗?
走吧!
那么下次约的时候应该怎么办的,我们只是输出了一次约的过程。不要急接着看
def yue():
print("打开手机")
print("打开陌陌")
print("搜索附近")
print("你好,约吗?")
print("走吧!")
yue()
yue()
yue()
yue()
输出结果
打开手机
打开陌陌
搜索附近
你好,约吗?
走吧!
打开手机
打开陌陌
搜索附近
你好,约吗?
走吧!
打开手机
打开陌陌
搜索附近
你好,约吗?
走吧!
打开手机
打开陌陌
搜索附近
你好,约吗?
走吧!
这会你应该够了吧!这回想约几次就约几次......
但是老哥不要太过度了,那么如果在你正要和基友去约的时候你老婆的电话来了,我问你咋办还是要继续去吗?是不是要回家了呢?但是函数在执行的时候很快的,要让他停下来还是有办法的,在函数体里面增加一个量那就是return,艾这个return就像是那个电话一样你要回家了,你要跳出来了
def yue():
print("打开手机")
print("打开陌陌")
return ()
print("搜索附近")
print("你好,约吗?")
print("走吧!")
yue()
输出结果
打开手机
打开陌陌
看到了吗?程序走到return哪里的时候他不走了,那如何告诉你要回家了呢?我们只需要在return的返回值里面加一个人你老婆打电话让你回家了,来下面我们来看一下代码:
def yue():
print("打开手机")
print("打开陌陌")
return "死鬼回家"
print("搜索附近")
print("你好,约吗?")
print("走吧!")
dangerous = yue()
print(dangerous)
输出结果
打开手机
打开陌陌
死鬼回家
这里边有几个坑要注意一下:
首先你们注意到在我的代码中有个dangerous来承接你的return值那么这个dangerous到底有多神奇。
总结一下:
1.遇到return.此函数结束,函数后面的东西就不会在执行了
2.return 返回值
关于返回值:
如果return 什么都不写,或者 干脆不写retun.那么返回值就是None
如果return后面写了一个值.则调用者可以接受一个结果
如果return后面写了多个结果,则调用者可以接受一个tuple,调用者可以直接解构成多个变量
那么接下来想这样一个问题,就是现在的约*神奇真的太多了,那么如果老板让你跟这潮流走随时都有可能变化的神器那怎么办?难道你还有去读代码然后去改写吗?上一次我们在函数的基本操作里说过要读写操作是一件非常烧内存的是而且也是非常的麻烦,那么我们能不能在函数的外面就能实现这个功能呢?是可以的.那么这里就要引入一个新的概念,那就是函数的参数.
函数的参数可以有效的去解决你老板的这个需求,那么接下来我们我们来说一下这个函数的参数
二. 函数的参数
参数, 函数在调⽤的时候指定具体的⼀个变量的值. 就是参数.
语法:
def 函数名(参数列表):
函数体
1 def yue(chat): 2 print("拿出⼿机") 3 print("打开"+chat) 4 print("找个漂亮的妹⼦") 5 print("约不约")
6 yue("陌陌") 7 yue("微信") 8 yue("探探")
1. 形参 写在函数声明的位置的变量叫形参. 形式上的⼀个完整. 表⽰这个函数需要xxx
2. 实参 在函数调⽤的时候给函数传递的值. 叫实参, 实际执⾏的时候给函数传递的信息. 表⽰给函数 xxx
3. 传参 给函数传递信息的时候将实际参数交给形式参数的过程被称为传参
1 def yue(chat): # chat 形参 2 print("拿出⼿机") 3 print("打开"+chat) 4 print("找个漂亮的妹⼦") 5 print("约不约")
6 yue("陌陌") # 实参 7 len("字符串") # "字符串"在这⾥就是实参 8 print("麻花藤") # "麻花藤"就是实参
实参中 位置参数
1 def yue(chat, address, age): # 形参 2 print("拿出⼿机") 3 print("打开"+chat) 4 print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦") 5 print("约不约")
6 yue("微信", "北京", 18) # 实参 7 结果: 8 拿出⼿机 9 打开微信 10 找个北京附近漂亮的18岁妹⼦ 11 约不约
分析: 在访问yue()的时候, 我们按照位置的顺序分别把"微信", "北京", 18 赋值给 chat, address, age. 在传参过程中. 系统会默认按照位置把实参赋值到形参.
练习: 编写函数, 给函数传递两个参数a, b. 比较a, b的⼤⼩, 返回 a, b中最⼤的那个数
1 def my_max(a, b):
2 if a > b:
3 return a
4 else:
5 return b
6 # 有点⼉麻烦, 我们在这⾥学⼀个三元运算符.
7 def my_max(a, b):
8 c = a if a > b else b # 当a>b成⽴返回a, 否则返回b
9 return c
关键字参数
1 def yue(chat, address, age):
2 print("拿出⼿机")
3 print("打开"+chat)
4 print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦")
5 print("约不约")
6 yue(chat="微信", age=18, address="北京") # 关键字参数.
8 结果:
拿出⼿机
打开微信
找个北京附近漂亮的18岁妹⼦
约不约
混合参数
可以把上⾯两种参数混合着使⽤. 也就是说在调⽤函数的时候即可以给出位置参数, 也可 以指定关键字参数.
1 # 混合参数
2 yue("微信", age=18, address="上海") # 正确.第⼀个位置赋值给chat, 后⾯的参数开始
3 指定关键字.
4 yue(age="18", "微信", address="⼴州") # 错误, 最开始使⽤了关键字参数, 那么后⾯的
5 微信的位置就串了, 容易出现混乱
在形参⾓度看 位置参数.
1 def yue(chat, address, age):
2 print("拿出⼿机")
3 print("打开"+chat)
4 print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦")
5 print("约不约")
默认值参数
1 def stu_info(name, age, sex='男'):
2 print("录⼊学⽣信息")
3 print(name, age, sex)
4 print("录⼊完毕")
5 stu_info("张强强", 18)
注意, 必须先声明位置参数, 才能声明默认值参数.