python入门笔记——函数②
'''
函数参数分类:
①必选参数
②默认参数
③可变参数
④关键字参数
'''
print('————————————必选参数——————————————')
def sum(i,j):
#这里的i和j都是形式参数,简称形参,只是意义上的一种参数,但在定义的时候是不占用内存地址的
sum=i+j
print(sum)
pass
sum(5,6)
#这里的5,6就是实际参数,简称实参,是确实的参数,占用内存地址
print('————————————默认参数(又称缺省参数)——————————————')
def sum1(a=3,b=4):
#这里的a和b在括号里就进行了初始默认的赋值,故如果对sum1不传参的话,它就会使用默认参数进行计算
sum1=a+b
print('默认参数使用=%d'%(sum1))
pass
sum1()
sum1(5,6)
#但是如果对其传参的话,它就会覆盖默认的参数,和一般的相同了
# def sum2(a=20,b):
# sum2=a+b
# print('默认参数使用2=%d'%(sum2))
# pass
#
# sum2(5)
'''如果是以上这种写法,会报错:
SyntaxError: non-default argument follows default argument
意思是默认参数的值必须放在参数列表中最后的位置
'''
def sum3(a,b=20):#默认参数(这里是b=20)始终存在于参数列表的尾部
sum2=a+b
print(sum2)
pass
sum3(5)#这里传入的5是赋给了a,所以结果是25,不能直接sum3(),要对必选参数a有赋值
sum3(5,21)#同样,这里对b重新赋值也会覆盖默认参数的默认值
print('————————————可变参数——————————————')
#这里的set前面的*即将输入的数据变为了元组,是可变参数
def getsum(*set):
'''
这是一个计算累加和的函数
:param args:
:return:
'''
sum=0
for i in set:
sum+=i
pass
print('累加和sum=%d'%sum)
pass
getsum(1,2,3,4)
getsum(1,2,3,4,5)
print('————————————关键字参数——————————————')
def keyfuction(**key):
'''
这是一个介绍关键字参数的函数
:param key:
:return:
'''
print(key)
pass
keyfuction()#直接调用keyfuction函数得到的就是一个空字典,因为你没有传参
#keyfuction(1,2)
'''
如果如上处理,会报错:
TypeError: keyfuction() takes 0 positional arguments but 2 were given
意思是这个函数不需要参数,但是你却传递了两个参数
这个函数可以接受的传参类型应该是一个字典
例子如下
'''
dict1={'name':'张三','age':'18'}
#keyfuction(dict1) 顺便一提,这种方式也是不行的
keyfuction(**dict1)#第一种调用方式
keyfuction(name='张三',age='18')#第二种调用方式
print('————————————混合利用可变和关键字参数——————————————')
def complex(*args,**kwargs):
'''
这是介绍混合利用两种参数的函数
:param args1:
:param kwargs:
:return:
'''
print(args)
print(kwargs)
pass
complex(1,2,3)#函数会对传入的参数进行自动分类,这里传入的1,2,3三个值
#因被识别为字典类型,故函数将其列在了第一个print中
#complex(1,3,name='张三',5)
'''
这样会报错SyntaxError: positional argument follows keyword argument
意思是位置参数不能跟着关键字参数,当然将关键字参数放在开头其他放在后面也是不行的
'''
complex(1,2,3,name='李四')
#这样就会分类成两个很好了
'''
def error(**kwargs,*args):
pass
这里再注意一下,这样定义是会报错的,可变参数一定是在关键字可选参数参数之前
可选参数:接受的数据是一个元组类型
关键字参数:接受的数据是一个字典类型
'''
输出结果:
————————————必选参数——————————————
11
————————————默认参数(又称缺省参数)——————————————
默认参数使用=7
默认参数使用=11
25
26
————————————可变参数——————————————
累加和sum=10
累加和sum=15
————————————关键字参数——————————————
{}
{'name': '张三', 'age': '18'}
{'name': '张三', 'age': '18'}
————————————混合利用可变和关键字参数——————————————
(1, 2, 3)
{}
(1, 2, 3)
{'name': '李四'}
Process finished with exit code 0