一、什么是函数?
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print(),len()等。但你也可以自己创建函数,这被叫做用户自定义函数。
函数:对代码块和功能的封装和定义
二、 函数的定义与调用。
定义:
def 函数名(): 函数体
def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。
def 是固定的,不能变,他就是定义函数的关键字。
空格: 为了将def关键字和函数名分开,必须空(四声)。
函数名:(函数名的命名规则和变量的命名规则一样)函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并能表达函数功能
括号:是必须加的,先别问为啥要有括号,总之加上括号就对了!
函数体:就是函数被执行之后要执行的代码
注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。
调用:就是 函数名() 要记得加上括号。
调用函数 def make(): print("拿出手机") print("打开陌陌") print("找一个漂亮的妹子") print("问 约不约啊") print("ok 走起") make() # 这是make函数的调用 # 结果: # 拿出⼿手机 # 打开陌陌 # 找个漂亮的妹⼦ # 问她, 约不约啊 # ok. 走你
三、函数的执行流程
def make(): print("拿出手机") print("打开陌陌") print("找一个漂亮的妹子") print("问 约不约啊") print("ok 走起") make() make() make() make() make() #多执行几次
1.定义了一个函数make
2.调用函数
3.执行函数里的约你
4.执行函数里的约我
5.执行函数里的约他
6.返回给调用者一个字符串'美女一枚',这个调用者就是make()
7.将返回的字符串通过一个等号赋值给白变量girl
8.打印变量girl的值
四、函数的返回值。
(1)没有设置返回值,输出 None
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
def make(): print("约你") print("约我") print("约他") ret = make() print(ret) #结果 # 约你 # 约我 # 约他 # None
(2)只写return,后面不写其他内容,也会返回None
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
def make(): print("约你") print("约我") print("约他") return ret = make() print(ret) #结果 # 约你 # 约我 # 约他 # None
(3)返回一个值的情况,只需在return后面写上要返回的内容即可。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
def make(): print("约你") print("约我") print("约他") return '美女一枚' ret = make() print(ret) # 结果: # 约你 # 约我 # 约他 # 美女一枚
(4)可以返回任意多个、任意数据类型的值.返回的多个值会被组织成元组被返回,也可以用多个值来接收
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
def make(): print("约你") print("约我") print("约他") return '美女一枚','萝莉' ret = make() print(ret) # 结果: # 约你 # 约我 # 约他 # ('美女一枚', '萝莉')
(5)函数中遇到return,此函数结束.不在继续执行
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
def make(): print("约你") print("约我") print("约他") return print("约谁呀") # 这句话不会被执行 make()
总结一下:
1.遇到return,此函数结束,函数后面的东西将不会在执行
2.return 返回值
关于返回值:
如果return什么都不写或者干脆就没写return,返回的结果就是None
如果return后面写了一个值,则调用者可以接受一个结果
如果return后面写了多个结果,则调用者可以接受一个tuple,调用者可以直接使用解构获取多个变量
五、函数的参数。
参数,也就是函数括号里的内容 函数在调用的时候指定一个具体的变量的值 就是参数
1.形参
写在函数声明的位置的变量叫形参,形式上的一个完整.表示这个函数需要xxx
2.实参
在函数调用的时候给函数传递的值.加实参,实际执行的时候给函数传递的信息.表示给函数xxx
3.传参
给函数传递信息的时候将实际参数交给形式参数的过程被称为传参.
def make(char,addr,sex): # 形参 char = '探探' print('掏出手机') print('打开%s'%char) print('找一个%s,%s'%(addr,sex)) print('聊一聊') make('探探','北京','萝莉') # 实参 #结果: #掏出手机 #打开探探 #找一个北京,萝莉 #聊一聊
在形参的角度来看
1. 位置参数
2. 默认值参数(大多数传进来的参数都是一样的, 一般用默认参数)
位置参数 > 默认参数
在实参的角度来看
1. 位置参数
2 .关键字参数
3.混合参数
位置参数 > 关键字参数
# 位置参数: # def make(char,addr,sex) # make('探探','北京','萝莉')
def func(a,b): c = a + b return c print(func(10,20))
def make(a,b,d=1,e=0): #位置参数 默认参数 print(a,b,d) make(1,2)
def func(a,b,c,d=1): # 形参 (位置+默认)混合形参 print(a,b,c,d) func(1,2,3) # 位置参数 # 1 2 3 1
def user_info(name,age,sex='男'): print(name,age,sex) user_info('某某',48,'不详') # 某某 48 不详
def func(a,b,c,d=1): # 形参 (位置+默认)混合形参 print(a,b,c,d) func(1,2,3,d=3) # 实参 (位置+关键字)混合实参 #1 2 3 3
三元表达式
def func(a,b): if a>b: return a else: return b print(func(9,0))
def func(a,b): # c = a if a>b else b # # return c return a if a>b else b print(func(10,9))
# 条件成立的结果 条件 条件不成立的结果
# c = a if a>b else b