Есть ли в python способ получить аргументы, переданные вызывающей стороной в функцию? Вот что я пытаюсь сделать:
# function
def repeat(self, min=None, max=None, optional=False):
do_something()
Мне нужно сделать что-то по-другому, в зависимости от того, передан ли ему один или несколько аргументов. Например:
r.repeat('hello').repeat(2,None)
Необходимо различать:
r.repeat('hello').repeat(2) # only one arg passed
Я думал, что locals
может быть хорошим местом для начала, но он берет аргумент по умолчанию из функциипоэтому не работает для моих целей:
{'_max': None, '_min': 2, 'discrete': [], 'optional': False, 'max': None, 'min': 2, 'self': r'(hello)'}
Другими словами, max
не должен отображаться в качестве одного из аргументов. Возможно ли это сделать в python? Я также пытался использовать inspect
, но это, похоже, также показывает значения по умолчанию:
(Pdb) inspect.getargvalues(f)
ArgInfo(args=['self', 'min', 'max', 'optional', 'discrete'], varargs=None, keywords=None, locals={'pdb': <module 'pdb' from '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/pdb.py'>,
'_max': None, '_min': 2, 'discrete': [], 'optional': False, 'max': None, 'min': 2, 'self': r'(hello)', 'f': <frame object at 0x101e2de68>})