函数2——参数

1.位置参数:从左至右进行匹配

2.关键字参数:通过参数名进行匹配

3.默认参数:为没有传入值的参数定义参数值

4.可变参数(动态传参):收集任意多基于位置或关键字的参数

参数出现顺序

​ 在函数中,参数出现顺序为:位置参数、关键字参数、默认参数(函数定义时)、任意长度的位置参数、任意长度的关键字参数

位置参数和关键字参数
def f(id,name,age):
    print(id,name,age)
f(1901001,'Able',21)
# 1901001 Able 21
f(id =1901001,'Able',21)
#报错
f(1901001,'Able',age =21)
# 1901001 Able 21
#  位置参数 > 关键字参数
关键字参数和默认参数
def f(name,age,gender = 'man'):
    print(name,age,gender)
f('Able',21)
# Able 21 man
def f(name,gender = 'man',age)
    print(name,age,gender)
#导致默认参数无法使用,还会增加关键字参数的使用

#  位置参数 >关键字参数 > 默认参数

重要警告: 默认值只会创建一次。这条规则在默认值为可变对象(列表、字典以及大多数类实例)时很重要

def func(a,L = []):
    L.append(a)
    print(a,L)
func(1)             #第一使用默认参数
func(2,L = [2])
func(3)             #第二次使用默认参数
#结果:
1 [1]
2 [2, 2]
3 [1, 3]     
任意参数

1.任意数量的位置参数

def func(*arges):
    print(arges)
func(1,2,3)
#结果
(1, 2, 3)

#Python将所有位置相关的参数收集到一个新的元组中,并将这个元组赋值给变量arges。

#在函数定义时,如果将位置参数放在*arges后面,在函数调用时,都会当作是*arges的形参,从而引发错误。

2.任意数量的关键字参数

def func(**kwarges):
    print(kwarges)
func(a = 1,b = 2)
#结果
{'a': 1, 'b': 2}

# **它只对关键字参数有效,将这些关键字参数传递给一个新的字典

#在函数定义时,如果将关键字参数或默认参数放在**kwarges后面,在函数调用时,都会当作是**kwarges的形参,从而引发错误。
参数解包

​ 在函数调用时,同样能够使用*和**语法

def func(a,b,c):
    print(a,b,c)
L = [7,8,9]
func(*L)   
#  7 8 9

#在函数调用时,*会对参数集合进行解包。

def func(a,b,c):
    print(a,b,c)
D = {'a':1,'b':2,'c':3}
#  1 2 3

#在函数调用时,**会以key:value对的形式解包一个字典,使其成为独立的关键字参数。

​ 查找一个序列中与其它n(n>1)个序列中的相同元素(每个序列中都至少有一个)

def union(*arges):
    res = []
    for i in arges[0]:
        for other in arges[1:]:
            if i not in other:
                break  
        else:
            res.append(i)
    return res      

keyword - only参数

def kwo(a,*b,c):
    print(a,b,c)
#c必须按关键字传递
函数作为参数

例如内置函数map(function,iterable)

转载于:https://www.cnblogs.com/notfind/p/11479863.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值