A *
is used to represent that all of the following arguments are keyword-only.
In [7]: def test(positional, positional_or_keyword='foo', *, keyword_only='bar', keyword_only_no_default):
...: print(f"position={positional}, positional_or_keyword={positional_or_keyword}, keyword_only={keyword_only}, keyword_only_no_default={keyword_only_no_default}")
...:
In [8]: test(10)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[8], line 1
----> 1 test(10)
TypeError: test() missing 1 required keyword-only argument: 'keyword_only_no_default'
In [9]: test(10, 11)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[9], line 1
----> 1 test(10, 11)
TypeError: test() missing 1 required keyword-only argument: 'keyword_only_no_default'
In [10]: test(10, keyword_only_no_default=11)
position=10, positional_or_keyword=foo, keyword_only=bar, keyword_only_no_default=11
In [11]: test(10, keyword_only_no_default=11, positional_or_keyword=12)
position=10, positional_or_keyword=12, keyword_only=bar, keyword_only_no_default=11