Полагаю, вы имеете в виду «аргумент ключевого слова», когда говорите «именованный параметр». dict.pop()
не принимает аргумент ключевого слова, так что эта часть вопроса является спорной.
>>> {}.pop('test', d=None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pop() takes no keyword arguments
Тем не менее, способ определить, был ли предоставлен аргумент, - это использовать синтаксис *args
или **kwargs
. Например:
def foo(first, *rest):
if len(rest) > 1:
raise TypeError("foo() expected at most 2 arguments, got %d"
% (len(rest) + 1))
print 'first =', first
if rest:
print 'second =', rest[0]
С некоторой работой, а также с использованием синтаксиса **kwargs
можно полностью эмулировать соглашение о вызовах python, где аргументы могут быть предоставлены либо по позиции, либо по имени, а аргументы, предоставленные несколько раз (по позиции и имени), вызывают ошибка.