一. 什么是函数
函数: 对代码块和功能的封装和定义.等到需要使用这个功能的时候直接调用就可以了.函数名命名规则和变量一样
二. 函数定义, 函数名, 函数体以及函数的调用
语法:def 函数名(形参):
函数体(代码块)
调用:
函数名(实参)
#定义一个函数名为day的函数,里面打印七条语句,从周一到周日.
def day():
print('周一')
print('周二')
print('周三')
print('周四')
print('周五')
print('周六')
print('周日')
day() #调用函数,然后执行函数day
# 周一
# 周二
# 周三
# 周四
# 周五
# 周六
# 周日
三. 函数的返回值
函数的返回值:return, 函数执行完毕. 不会执行后面逻辑
1. 如果函数中不写return返回None 2. 只写return 返回None 3. return 返回值. 返回一个值 4. return 值1, 值2,... 返回多个值.多个值需要用,隔开.调用方接收到的是元组
def day():
print('周一')
print('周二')
print('周三')
print('周四')
print('周五')
print('周六')
print('周日')
return '一周过完了' #遇到return,函数执行结束,不会继续执行下面的语句
print('新的一周就要来了') #在return语句后面,无法打印
print(day()) #调用函数,然后执行函数day
# 周一
# 周二
# 周三
# 周四
# 周五
# 周六
# 周日
# 一周过完了
def f():
print('今天吃饭了吗')
s = f()
print(s) #没有return,所以返回值为None
def f():
print('今天吃饭了吗')
return #只有return,返回值仍为None
ss = f()
print(ss) #None
def day():
print('周一')
print('周二')
print('周三')
print('周四')
print('周五')
print('周六')
print('周日')
return '一周结束','下一周就要开始了' #return值有两个,接收到的是元组
a,b = day() #函数返回值接收的是元组,可以解构来获取值
print(a) #一周结束
print(b) #下一周就要开始了
四. 函数的参数
参数, 函数在调用的时候指定具体的一个变量的值.
def day(c):
print('周%s'%c)
day('一') #周一 通过调用day函数把实参'一'的值传递给形参'c'
不仅可以定义函数打印语句,也可以定义函数拥有其他的功能,然后调用函数.
#定义两个数相加的函数
def q(a,b): #定义函数名为q的函数,形参是a,b
s = a + b
return s #返回值为s
sss = q(3,5) #调用函数,把实参3,5传递给形参a,b
print(sss) #8
#定义两个数互相对换的函数
def q(a,b):
a,b = b,a
return a,b #return的返回值是元组
a,b = q(3,5)
print(a,b) #5,3
当函数的形参值很多时,我们在调用时写实参还要记着形参的位置,使用位置参数会很麻烦,可以使用关键字参数(按照名称给形参赋值)和混合参数(先用位置参数,再用关键字参数). 最终到的结果都一样.
def f(name,age,sex,weight,height,hobby):
print('name:%s,age:%s,sex:%s,weight:%s,height:%s,hobby:%s' %(name, age, sex, weight, height, hobby))
f('小小',18, '女', 90, 1.8, '吃饭') #使用位置参数
f(sex='女', hobby='吃饭', name='小小', height=1.8, weight=90, age=18) #使用关键字参数,不用在意形参的位置
f('小小', 18, '女', hobby='吃饭', height=1.8, weight=90) #使用混合参数
# name:小小,age:18,sex:女,weight:90,height:1.8,hobby:吃饭
# name:小小,age:18,sex:女,weight:90,height:1.8,hobby:吃饭
# name:小小,age:18,sex:女,weight:90,height:1.8,hobby:吃饭
函数的形参也可以为默认值参数(给参数一个具体的值)和混合参数(先用位置参数,再用默认值参数).
def f(name,age,sex='男',add='昌平'): #混合使用,name和age没有被赋值,是位置参数. sex和add都被赋值,是默认值参数
print('name:%s,age:%s,sex:%s,add:%s' %(name,age,sex,add))
f('小小',18) #sex默认为'男',add默认为'昌平'
f('尔尔',22)
f('哈哈',19,'女') #实参'女'传递给sex,sex值变成'女'
f('天天',26,'女','沙河') #实参'沙河'传递给形参add,add的值为'沙河'
# name:小小,age:18,sex:男,add:昌平
# name:尔尔,age:22,sex:男,add:昌平
# name:哈哈,age:19,sex:女,add:昌平
# name:天天,age:26,sex:女,add:沙河
总结形参和实参的分类:
1. 形参: 1. 位置参数. 2. 默认值参数. 当调用的时候不给传值使用默认值 3. 混合使用. 顺序: 1. 位置参数, 2, 默认值参数 2. 实参: 1.位置参数. 按照位置给形参赋值 2. 关键字参数. 按照名称给形参赋值 3. 混合参数. 先用位置参数, 再用关键字参数
来源:https://www.cnblogs.com/huangqihui/p/9300118.html