python形参和实参中的特殊字符讲解

python中形参和实参的特殊字符有哪些?

参考官方文档: https://hlog.cc/docs/python/tutorial/controlflow.html#positional-or-keyword-arguments

位置参数/关键字参数

  • 位置参数, 同其他编程语言一致, 位置参数形参的顺序很重要
  • 关键字参数, 以kwarg=value形式定义的参数

关键字参数使用注意:

  • 关键字参数必须跟在位置参数后面
  • 关键字参数的顺序可以打乱
  • 不能对同一个关键字参数多次赋值

特殊参数

形参中的 / * 参数

# pos1,pos2 必须是位置参数
# / 表示此符号前的参数只能是位置参数
# pos_or_kwd 位置参数或关键字参数都可以
# * 表示此符号后的参数只能是关键字参数
# kwd1,kwd2 必须是关键字参数
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
    pass

# 此只能传位置参数
def g(arg1, arg2, arg3, /)
    pass

# 此函数只能传关键字参数
def h(*, arg1, arg2, arg3)
    pass

形参中 *arguments **keywords

使用注意事项:

  • 同时存在 * 与 ** 时, 一个星号的参数必须在两个星号的前面

*arguments 表示可以接受任意数量的实参, 且这些实参都储存在元组

def abc(a, *args):
    print(args)

# 输出:(2, 3, 4)
abc(1, 2, 3, 4)

**keywords 表示可以接受任意数量的实参, 且这些实参都储存在字典

def abc(a, **args):
    print(args)

# 输出:{"x":2, "y":3, "z":4}
abc(1, x=2, y=3, z=4)
def abc(a, *args1, **args2):
    print(args1)
    print(args2)

# 输出:
# (4, 5, 6)
# {"x":2, "y":3, "z":4}
abc(1, 4, 5, 6, x=2, y=3, z=4)

# 输出:
# ((2, 3), 99, {'m': 4, 'n': 5}, 88)
# {}
abc(1,(2,3),99,dict(m=4,n=5),88)

# 输出:
# ((2, 3), 99)
# {'kkk': {'m': 4, 'n': 5}, 'mmm': 88}
abc(1,(2,3),99,kkk=dict(m=4,n=5),mmm=88)

实参中使用 *, ** 表示解包实参列表


def aaa(x, y):
    print(x,"|",y)

# 都输出: 5 | 6
# 解包后与形参的位置对应
aaa(*(5,6))
aaa(*[5,6])

# 都输出: 5 | 6
# 解包后与关键字参数的关键字对应
# 字典必须与函数参数名一致,否则报错
aaa(**{"x":5,"y":6}) 
aaa(**dict(x=5,y=6))

此处评论已关闭