参考链接:
Python中的参数
Python中的参数,有positional arguments
和keyword arguments
def function4(a=1, **kwargs):
print(a, kwargs)
如上,a
是positional argument
,kwargs
是keyword arguments
*args的使用方式
def function(*args):
print(args, type(args), len(args))
def function2(x, y, *args):
print(x, y, args, type(x), type(y), type(args), len(args))
# function(1, 2, 3, 4, 5) # (1, 2, 3, 4, 5) <class 'tuple'> 5
# function2(1, 2) # 1 2 () <class 'int'> <class 'int'> <class 'tuple'> 0
# function2(1, ) # TypeError: function2() missing 1 required positional argument: 'y'
*args
用来将参数打包成tuple给函数体调用
**kwargs的使用方式
kwargs 是 keyword arguments
的缩写
def function3(**kwargs):
print(kwargs, type(kwargs))
function3(a=2) # {'a': 2} <class 'dict'>
function3(a=1, b=2, c=3) # {'a': 1, 'b': 2, 'c': 3} <class 'dict'>
**kwargs
打包关键字参数成dict给函数体调用
参数的顺序
def function6(*args, **kwargs, arg):
print(args, kwargs, arg)
function6(6, 7, 8, 9, a=1, b=2, c=5) # SyntaxError: invalid syntax
参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。
def function8(*args):
print(args)
function8(6, 7, 8, 9, a=1, b=2, c=5)
如果函数没定义keyword arguments ,却传入了keyword arguments,程序会报错
完整示例和测试代码
以下是完整示例和测试代码(args_kwargs.py)
def function(*args):
print(args, type(args), len(args))
def function2(x, y, *args):
print(x, y, args, type(x), type(y), type(args), len(args))
# *args用来将参数打包成tuple给函数体调用
# function(1, 2, 3, 4, 5) # (1, 2, 3, 4, 5) <class 'tuple'> 5
# function2(1, 2) # 1 2 () <class 'int'> <class 'int'> <class 'tuple'> 0
# function2(1, ) # TypeError: function2() missing 1 required positional argument: 'y'
# **kwargs打包关键字参数成dict给函数体调用
def function3(**kwargs):
print(kwargs, type(kwargs))
# function3(a=2) # {'a': 2} <class 'dict'>
# function3(a=1, b=2, c=3) # {'a': 1, 'b': 2, 'c': 3} <class 'dict'>
# function3(11, a=1, b=2, c=3)
# TypeError: function3() takes 0 positional arguments but 1 was given
# function3(a=1, b=2, c=3, a=11) # SyntaxError: keyword argument repeated
def function4(a=1, **kwargs):
print(a, kwargs)
# function4(b=2, a=1, c=3) # 1 {'b': 2, 'c': 3}
# function4(a=1, b=2, c=3) # 1 {'b': 2, 'c': 3}
# 参数arg、*args、**kwargs三个参数的位置必须是一定的。
# 必须是(arg,*args,**kwargs)这个顺序,否则程序会报错
def function5(arg, *args, **kwargs):
print(arg, args, kwargs)
# function5(6, 7, 8, 9, a=1, b=2, c=5) # 6 (7, 8, 9) {'a': 1, 'b': 2, 'c': 5}
# def function6(*args, **kwargs, arg):
# print(args, kwargs, arg)
# function6(6, 7, 8, 9, a=1, b=2, c=5) # SyntaxError: invalid syntax
def function7(*args, **kwargs):
print(args, kwargs)
# function7(6, 7, 8, 9, a=1, b=2, c=5) # (6, 7, 8, 9) {'a': 1, 'b': 2, 'c': 5}
def function8(*args):
print(args)
function8(6, 7, 8, 9, a=1, b=2, c=5)
# positional arguments
# keyword arguments
end.感谢阅读.