Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
zero or one argument
#8
There is a problem with *args and **kwargs regarding the task.
Skaperen Wrote:to accept zero or one argument
There is no limit for that in *args and **kwargs

Just add:
>>> @limit_args(1)
... def func(*args):
...     if not args:
...         args = 'default'
...     return args

>>> func()
'default'

>>> func('hello')
('hello',)

>>> func('hello', 'world')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in new_f
TooManyArguments: 1 args accepted at most, 2 args passed
1 args accepted at most, 2 args passed

>>> @limit_args(1)
... def something(**kwargs):
...     if kwargs:
...         for key, value in kwargs.items():
...             print(f'{key} is {value}')
...     else:
...         print('nothing to see here')

>>> something(place="London")
place is London

>>> something(place="London",  wetness="raining heavily")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in new_f
TooManyArguments: 1 args accepted at most, 0 args passed
1 args accepted at most, 0 args passed
The missing code for that.
class TooManyArguments(Exception):
    pass

def limit_args(n):
    def limit_decorator(func):
        def new_f(*args, **kwargs):
            if len(args or kwarg) > n:
                raise TooManyArguments(f"{n} args accepted at most, {len(args)} args passed")
            return func(*args, **kwargs)
        return new_f
    return limit_decorator
But this going a little overboard,as the simple solution shown solve  that task.
Reply


Messages In This Thread
zero or one argument - by Skaperen - Oct-14-2017, 12:55 AM
RE: zero or one argument - by metulburr - Oct-14-2017, 01:14 AM
RE: zero or one argument - by Skaperen - Oct-14-2017, 01:55 AM
RE: zero or one argument - by metulburr - Oct-14-2017, 02:45 AM
RE: zero or one argument - by wavic - Oct-14-2017, 08:22 AM
RE: zero or one argument - by gruntfutuk - Oct-14-2017, 11:59 AM
RE: zero or one argument - by buran - Oct-14-2017, 12:28 PM
RE: zero or one argument - by snippsat - Oct-14-2017, 12:44 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  SyntaxError: positional argument follows keyword argument syd_jat 3 6,008 Mar-03-2020, 08:34 AM
Last Post: buran

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020