浅析python函数参数类型
在python函数定义时,截止目前到3.x的版本,一共有五种类型的参数:(注:该文章基于python 3.4.4)
- POSITIONAL_OR_KEYWORD(位置或关键字参数)
- POSITIONAL_ONLY(仅位置参数)
- KEYWORD_ONLY(仅关键字参数)
- VAR_POSITIONAL(任意数量的位置参数)
- VAR_KEYWORD(任意数量的关键字参数)
第一种:位置或关键字参数:
先上文档的定义:
- Parameter.POSITIONAL_OR_KEYWORD - value may be supplied as either a keyword or positional argument (this is the standard binding behaviour for functions implemented in Python.)
意思就是该参数,运行两种方式的传递:位置和关键字。
def foo(arg1, arg2):
print(arg1, arg2)
#以位置参数传递
foo('one', 'two')
#output:
one two
#以关键字参数传递:
foo(arg1='one', arg2='two')
foo(arg2='two', arg1='one')
#output:
one two
one two
#混合方式:
foo('one', arg2='two')
#output:
one two
#注意:关键字参数不能先于位置参数被传递
foo(arg1='one', 'two')
#output:
foo(arg1='one', 'two')
^
SyntaxError: non-keyword arg after keyword arg
第二种:仅位置参数:
- Parameter.POSITIONAL_ONLY - value must be supplied as a positional argument.
Python has no explicit syntax for defining positional-only parameters, but many built-in and extension module functions (especially those that accept only one or two parameters) accept them.
意思就是:这类仅位置参数只允许接收位置参数传递,目前还没有能够让开发者自行定义接收该参数的函数,简而言之,这一般会在python内建函数中出现,如:
abs(-