Все необходимые параметры должны быть помещены перед любыми аргументами по умолчанию. Просто потому, что они являются обязательными, тогда как аргументы по умолчанию - нет. Синтаксически это было бы невозможно для интерпретатора, чтобы решить, какие значения соответствуют тем аргументам, если допустимы смешанные режимы. A SyntaxError
возникает, если аргументы не указаны в правильном порядке:
Давайте рассмотрим аргументы ключевых слов, используя вашу функцию.
def fun1(a="who is you", b="True", x, y):
... print a,b,x,y
Пусть его разрешено объявить функцию, как описано выше, Затем с вышеперечисленными декларациями, мы можем сделать следующий (регулярный) позиционные или ключевые слово вызовов аргумента:
func1("ok a", "ok b", 1) # Is 1 assigned to x or ?
func1(1) # Is 1 assigned to a or ?
func1(1, 2) # ?
Как вы предположите задание переменных в вызове функции, как аргументы по умолчанию будут использоваться вместе с аргументами ключевого слова.
>>> def fun1(x, y, a="who is you", b="True"):
... print a,b,x,y
...
Reference O'Reilly - Core-Python
Где в этой функции используют аргументы по умолчанию синтаксически корректных для указанных выше вызовов функций. Вызовы аргументов ключевого слова оказываются полезными для того, чтобы быть в состоянии предусмотреть позиционные аргументы вне порядка, но в сочетании с аргументами по умолчанию они также могут использоваться для «пропускания» отсутствующих аргументов.
в питоне, который, как структура, когда вы определяете функцию 'Защита MYFUNCTION (position_arguments, * аргументы ** ключевых слов):' ' ....' – abhishekgarg