Позиционный аргумент следует за ключевым аргументом |Ошибка при вызове функции - PullRequest
0 голосов
/ 21 ноября 2018

Во-первых, я понимаю, что при определении функции вы должны сначала разместить позиционные аргументы, а затем аргументы по умолчанию, чтобы избежать ситуации неоднозначности для интерпретатора.Вот почему, когда мы пытаемся это сделать, он выдает ошибку.

Например, в следующем коде a и b не могут быть оценены во время выполнения, из-за чего он выдает ошибку

def func(a=1,b):
    return a+b

func(2)

(Error:non-default argument follows default argument)

Это понятно.

Но почему следующее приводит к ошибке.Это не происходит во время определения функции, но во время вызова функции.

def student(firstname, standard,lastname): 
    print(firstname, lastname, 'studies in', standard, 'Standard') 
student(firstname ='John','Gates','Seventh')

Error:positional argument follows keyword argument

Разве мы не можем передавать параметры с ключевыми словами и без них одновременно?[Редактировать]: Вопрос не является возможными дубликатами, поскольку дубликаты говорят о случае, когда заданы аргументы по умолчанию.Я не определил их.Я просто спрашиваю, почему мы не можем смешивать параметры значения ключевого слова и параметры прямого значения.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Возможно, вам следует попробовать:

student('John', 'Gates', 'Stevehn')

Я не знаю, можете ли вы определить переменную одновременно с вызовом функции.

Сидней

0 голосов
/ 21 ноября 2018

Это именно то, что говорит ошибка:

Error:positional argument follows keyword argument

Вы не можете иметь позиционные аргументы после ключевых аргументов.

Ваш пример является хорошим примером.

Вы указываете первый аргумент в качестве ключевого аргумента.Поэтому неоднозначно, как интерпретатор теперь интерпретирует порядок параметров.2-й аргумент становится первым параметром?Второй параметр?Но вы уже указали первый параметр (firstname='John'), так что происходит с позиционным параметром?

def student (имя, стандарт, фамилия): print (имя, фамилия, «учится в», стандарт, 'Стандарт')

student(firstname ='John','Gates','Seventh')

Интерпретация интерпретирует это как:

student(firstname ='John',standard='Gates',lastname='Seventh')

или

student(firstname ='John',standard='Gates',lastname='Seventh')

или

student(firstname ='John',firstname='Gates',lastname='Seventh')

Как насчет:

student(lastname ='John','Gates','Seventh')

This?

student(lastname ='John',firstname='Gates',standard='Seventh')

или this?

student(lastname ='John',standard='Gates',firstname='Seventh')

Удачи в попытке отладить, какой аргумент соответствует какому параметру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...