Python: 无名关键字参数列表
Python: Nameless keyword argument list
Python函数的参数列表中的孤星'*'是什么意思?
我是在scikit-learn的源码里找到的,以前没见过。我熟悉位置参数和关键字参数(*args、**vargs)的概念。我假设,这里它与 _deprecate_positional_args 装饰器有关,但即使没有装饰器,在纯 Python 3.7 中似乎也允许将孤星作为函数参数的语法。
我的猜测是,它不可能在星号之后指定任何关键字参数作为位置参数(对于名为 'safe' 的参数实际上有意义)。
# Part of https://github.com/scikit-learn/scikit-learn.git
# commit 7117a6313791db6f8b737bac28c1f47277a68cfb
# Quoting from sklearn/base.py:
# ...
from .utils.validation import _deprecate_positional_args
# ...
@_deprecate_positional_args
def clone(estimator, *, safe=True):
"""Constructs a new estimator with the same parameters.
(rest omitted)
"""
# ...
我的猜测是,它不可能在星号之后指定任何关键字参数作为位置参数(对于名为 'safe' 的参数实际上有意义)。
你是对的,单独 *
之后的参数被称为 仅关键字参数 ,此功能由 PEP 3102.
定义
Python函数的参数列表中的孤星'*'是什么意思?
我是在scikit-learn的源码里找到的,以前没见过。我熟悉位置参数和关键字参数(*args、**vargs)的概念。我假设,这里它与 _deprecate_positional_args 装饰器有关,但即使没有装饰器,在纯 Python 3.7 中似乎也允许将孤星作为函数参数的语法。
我的猜测是,它不可能在星号之后指定任何关键字参数作为位置参数(对于名为 'safe' 的参数实际上有意义)。
# Part of https://github.com/scikit-learn/scikit-learn.git
# commit 7117a6313791db6f8b737bac28c1f47277a68cfb
# Quoting from sklearn/base.py:
# ...
from .utils.validation import _deprecate_positional_args
# ...
@_deprecate_positional_args
def clone(estimator, *, safe=True):
"""Constructs a new estimator with the same parameters.
(rest omitted)
"""
# ...
我的猜测是,它不可能在星号之后指定任何关键字参数作为位置参数(对于名为 'safe' 的参数实际上有意义)。
你是对的,单独 *
之后的参数被称为 仅关键字参数 ,此功能由 PEP 3102.