一、函数参数类型分为
1、形式参数
2、实际参数
(1)形式参数:函数定义过程中所传递的参数称为形式参数,函数名后面括号中的参数为’形式参数’,注意形式参数本身没有实际含义. 只有当实际参数的值传递给形式参数时,形参会被当成是一个临时容器,存储该数据,保证函数执行过程中数据的使用
(2)实际参数:函数调用过程中传递的参数称为实际参数,函数名后面括号中的参数为’实际参数’,实际参数决定了形式参数的数据类型和具体的数据值。就像剧本选主角一样,剧本的角色相当于形式参数,而演角色的演员就相当于实际参数
return:关键字,函数调用结束的标志,作用是将return后面的内容返回给外界,同时结束本次函数调用;
如果return后面有代码也不再执行,因此函数调用过程中,函数的代码必须放在return关键字的前面
二、函数的参数种类:
1.必须参数
程序执行过程中必须要设置的参数
def outPut(num): #必须参数
print(num)
outPut(30)
2.默认参数
程序执行过程中具有默认值的参数
必须参数和默认参数区别:
默认参数和必须参数的区别就是参数是否提前设置好默认值,默认参数在函数调用过程中认为可以省略
def outPut(num = 0): #默认参数
print(num)
outPut()
3.可变参数
语法结构:在必须参数的前面添加 * ,此时参数就变成了可变参数
作用:参数的多少可以根据函数调用过程中实际参数的数量灵活增长,
注意可变参数对应的数据类型是一个元祖类型,可变参数需要放在默认参数的后面
#定义函数求和
def get_sum(*arguments): #可变参数 (以元组形式传给函数内部)
sum_num = 0
for item in arguments:
if isinstance(item,list): #在Python中可以使用type()与isinstance()这两个函数判断
sum_num = sum(item) #对象类型,而isinstance()函数的使用上比type更加方便
else:
sum_num += item
return sum_num
num = get_sum(1,2,3,4,5)
print(num)
结果:
15
4.关键字参数
在必须参数的前面写上**,此时参数变成关键字参数,外界调用该函数时必须为每一个数据设置一个唯一的键,或者通过**dict的格式直接将某一个字典类型的数组作为该关键字参数的数据输入
(1)
def outPut_userInfor(**kw): #关键字参数 (以字典形式传给函数内部)
print(kw)
for key,value in kw.items():
print(key,",",value)
outPut_userInfor(name = '小菜菜',age = 20,sex = '男')
结果:
{'name': '小菜菜', 'age': 20, 'sex': '男'}
name , 小菜菜
age , 20
sex , 男
(2)
infor = {'name': '狗剩子','age': 23,'sex': '男','marry':'已婚'}
def outPut_infor(**kw):
str = '我叫{name},今年{age}岁,性别{sex},{marry}'.format(**kw)
print(str)
outPut_infor(**infor)
结果:
我叫狗剩子,今年23岁,性别男,已婚
5.命名关键字参数
在所有参数的最前面设置一个*,此时后面的所有参数都被看成是提前定义好名字的参数,
外界在调用该函数时每一个参数的名字必须和*后面的参数名字保持一致
def put(*,name,sex,age):
print(name,sex,age)
put(name = 20,sex = 30,age = 40)
如果这几种组合起来作为形参,顺序为:
def fun(必须参数,默认参数,可变参数,关键字参数,命名关键字参数)