8.函数及参数
函数及参数
一.函数
1.含义:包裹一部分代码 实现某一个功能 达成某一个目的
2.特点:可以反复调用,提高代码的复用性,提高开发效率,便于维护管理
3.函数的格式:
定义函数:
def 函数名():
code
调用函数:
函数名()
4.函数的命名:
命名规则与变量一样:
字母数字下划线,首字符不能用数字
严格区分大小写,且不能用关键字
函数命名有意义,且不能是中文
命名法:单词与单词之间用_隔开=>my_car
驼峰命名法:
大驼峰命名法:每个单词首字符都大写(面向对象-类)
小驼峰命名法:第一个单词首字符小写,其他首字符大写(用在函数中)
二.函数参数
1.参数种类
参数含义:函数运算时需要的值
函数参数的种类:
1.形参:形式上的参数,在函数的定义处
2.实参:实际上的参数,在函数的调用处
形参种类:1.普通形参,2.默认形参,3.普通收集形参,4.命名关键字形参,5关键字收集形参
实参种类:1.普通实参,2.关键字实参
形参声明位置顺序:1=>2=>3=>4=>5
实参声明位置顺序:1=>2
原则:形参实参个数要一一对应
2.形参
2.1普通形参
def func(a,b):
print(a,b)
func(11,22) #普通实参
func(a=1,b=2) #关键字实参
2.2默认形参
"""
a=1,b=2 是默认形参
如果给与了实参,那么使用实参值
如果没有给与实参,那么使用默认值
"""
def func(a=1,b=2):
print(a,b)
func(11)
func(11,33)
2.3收集形参
# 收集参数:普通收集形参和关键字收集形参
# 1.普通收集形参
"""
功能:专门用来收集那些多余没人要的普通实参
语法:在参数的前面加上一颗星(*args)
返回:一个元组
"""
def func(a,b,*args):
print(a,b,args)
func(1,2,3,4,5,6,7)
# 作用:可以提前任意值
# 计算任意个数数值的累加
def func(*args):
total=0
for i in args:
total +=i
print(total)
func(1,2,3,4,5,6,7,8)
# 2.关键字收集参数:
"""
功能:专门用来收集多余没人要的关键字实参
语法:在参数的前面加上两颗星(**kwargs)
返回:一个字典
"""
def func(a,**kwargs):
print(a,kwargs)
func(a=11,b=22,c=33,d=44,e=55)
# 作用:可以做任意数值的字符串拼接
def func(**kwargs):
strvar1=""
strvar2=""
dic={"a":"呵呵","b":"哈哈"}
for k,v in kwargs.items():#把字典的键值对变成元组,提取元组元素
if k in dic:
strvar1 +=dic[k]+":"+v+"\n"
else:
strvar2 +=v +","
print(strvar1.strip())
print("无用的:",strvar2.strip(","))
func(a="11",b="22",c="33",d="44",e="55")
2.4命名关键字形参
"""
两种表达形式:
1.def func(a,*,b,c):在星号后面定义的是命名关键字形参(b,c)
2.def func(*args,b,**kwargs):在普通收集形参和关键字收集形参中间的是命名关键字形参
如果是命名关键字形参,在调用时,必须使用关键字实参的方式调用
"""
# 方法一:
def func(a,b,*,c,d):
print(a,b)
print(c,d)
func(11,22,c=33,d=44)
# 方法二:
def func(*args,a,**kwargs):
print(args)
print(a)
print(kwargs)
func(2,3,4,3,a=111,b=222,c=333)
2.5 * 和 ** 的使用方法
* 和 ** 的使用方法:
1.在定义处:负责收集打包数据
*:负责收集打包成元组
**:负责收集打包成字典
2.在调用处:负责打散解包数据
*:负责对str list tuple set dict解包成单独的数据(字典只能解包键)
**:负责dict 打散解包成单独的(键=值)的形式
三.return 自定义返回值
"""
return:会把函数内部的值返回到函数的调用处
1.return后面可以接:六大标准类型,还可以接函数,类,对象
2.没有自定义返回值,默认返回的None
3.执行完return后,函数直接终止,后面的代码不执行;
"""
# 1.return的基本使用
def func():
# return "df "
return [1,2,3]
print(func())
# 2.return 运行之后,后面代码不执行
def func():
for i in range(10):
print(i)
if i==5:
return
print(func()) #返回空值
#注意:打印的数据与自定义的数据不是一个值