python入门笔记——函数②

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值