一、函数的概念
函数:对某一个特定的功能或代码块进行封装,在需要使用该功能时直接调用即可
定义函数:
def 函数的名字(): [ 只是定义函数,不能直接运行 ]
()里面是被封装的功能或代码块 -> 函数体
调用:
函数的名字()
好处;
让程序更加简洁,代码更加合理
def buy_cai(): # 只是定义函数
print("1.开上我的Porsche")
print("2.讨价还价")
print("3.开车回家")
buy_cai()
print("猛猛炫饭")
buy_cai()
print("美美睡觉")
返回结果:
二、参数
1. 参数的概述
参数:可以在函数调用的时候,给函数传递一些信息
分类:
- 形参:在函数定义的时候,需要准备一些变量来接受信息
- 实参:实际在调用的时候传递的信息
举例:
def maren(ren,lvl): # 形参
print("1.怒目而视", ren)
print("2.严正交涉", ren)
if lvl > 99:
print("3.死不要脸", ren)
else:
print("4.你瞅啥", ren)
print("4.骂完收工")
maren("破电脑", 999) # 在调用函数的时候,才能知道函数作用对象是谁 -> 实参
maren("垃圾鼠标", 9)
返回结果:
2. 实参的分类
- 位置参数:按照位置进行传递参数
- 关键字参数:按照参数的名字进行传递参数
- 混合参数:
顺序:位置参数放前面,关键字参数放后面 -> 否则报错
实参在执行的时候,必须要保障形参有数据
3. 形参的分类
- 位置参数:按照位置一个一个去声明变量
- 默认值参数:在函数声明的时候给变量一个默认值,如果实参不传递信息,此时默认值生效,否则就不生效。
def luru(name, age, gender="男"):
print(name, age, gender)
luru("张三", 18) # gender位置不输入,识别为默认值
luru("李四", 25)
luru("刘能", 38)
luru("谢大脚", 49, "女")
luru("虞书欣", 18, "女")
- 动态传参:
(1)* args:表示接收所有位置参数的动态传参
def eat(*food): # * 表示位置参数的动态传参,* 接收到的值会被统一放在一个元组里
print(food)
eat("大米饭", "大盘鸡")
返回结果
(2)** kwargs:表示接收所有关键字参数的动态传参
def eat(**food): # ** 表示接收关键字的动态传参,接收到的所有参数都会被处理成字典
print(food)
eat(zhu="米饭", fu="麻婆豆腐")
顺序:位置 > *args > 默认值 > **kwagrs
上述参数可以随意搭配使用
def func(a, b, c="haha", *args, **kwargs):
print(a, b, c, args, kwargs)
func(1,2,3,4,5,6,7,8,9,hello="456",world="hello")
(3)def func(*args, **kwargs): 可以没有限制的接收任何参数
def func(*args, **kwargs): # 没有限制的接收任何参数
print(args, kwargs)
func()
func(1)
func(1,2,3,4,4,a=2)
func(1,2,3,4,c=4,a=2)
返回结果:
4. 补充情况
4.1 func(*stu_lst) :如果**号在实参位置,其意义是把列表打散成位置参数进行传参
举例:
stu_lst = ["dada", 'stefan', "demon", 'bonnie']
def func(*args):
print(args)
func(*stu_lst)
返回结果:
4.2 ** 在实参位置,可以把字典自动转化为关键字参数进行传递
三、返回值
1. 概念
返回值:函数执行之后,会给调用方一个结果,这个结果就是返回值
关于return:
函数执行到了return,就会立即停止并返回内容,函数内的return的后续的代码不会执行
- 如果函数内没有return,此时外界收到的是None
- 如果写了return
1)只写了return,后面不跟数据,此时接收到的依然是None
2)return 值,此时表示函数有一个返回值,外界能够收到一个数据 -> 使用频率最高
3)return 值1,值2,值3,此时函数有多个返回值,外界收到的是一个元组,并且该元组内存放所有的返回值
举例:
def func():
return 1, 2, 3 # 会让程序停止,后续代码不会继续执行,有点像循环里的break
print(81)
ret = func()
print(ret)
返回结果: