Позиционный аргумент против. ключевой аргумент - PullRequest
59 голосов
/ 26 февраля 2012

На основании это

Позиционный аргумент - это имя, за которым не следует знак равенства (=) и значение по умолчанию.

За аргументом ключевого слова следует знак равенства и выражение, которое дает значение по умолчанию.

def rectangleArea(width, height):
    return width * height

print rectangleArea(width=1, height=2)

Вопрос > Я предполагаю, что и width, и height являются позиционными аргументами. Тогда почему мы можем также назвать его с синтаксисом реального аргумента ключевого слова?

Ответы [ 5 ]

106 голосов
/ 26 февраля 2012

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

Ссылка на Python относится к позиционным аргументам и ключевым словам только в отношении вызова функции (см. section 5.3.4 Calls).

Когда они говорят об определении функции в section 7.6 Function definitions, это совершенно другой термин «значения параметров по умолчанию».

Я подозреваю, что люди, которые собрали эту программу курса, не были полностью знакомыми с Python: -)


В качестве примера, обратитесь к следующему определению извонки:

def fn (a, b, c = 1):          # a/b required, c optional.
    return a * b + c

print fn (1, 2)                # returns 3, positional and default.
print fn (1, 2, 3)             # returns 5, positional.
print fn (c = 5, b = 2, a = 2) # returns 9, named.
print fn (b = 2, a = 2)        # returns 5, named and default.
print fn (5, c = 2, b = 1)     # returns 7, positional and named.
print fn (8, b = 0)            # returns 1, positional, named and default.

Значение = изменяется в зависимости от того, находится ли оно в определении или в вызове.

В определении он помечает необязательный аргумент и устанавливаетзначение по умолчанию.

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

13 голосов
/ 26 февраля 2012

Аргумент ключевого слова - это просто позиционный аргумент со значением по умолчанию.Вы должны указать все аргументы, которые не имеют значения по умолчанию.Другими словами, аргументы ключевого слова являются только «необязательными», потому что они будут установлены в значение по умолчанию, если не указано иное.

3 голосов
/ 26 февраля 2012

Позиционные аргументы могут вызываться либо с использованием значений по порядку, либо с помощью именования каждого из них. Например, все три из следующих будут работать одинаково:

def rectangleArea(width, height):
    return width * height

print(rectangleArea(1, 2))
print(rectangleArea(width=1, height=2))
print(rectangleArea(height=2, width=1))
1 голос
/ 22 мая 2018

позиционные аргументы: аргументы, переданные функции в правильном позиционном порядке.Под программой понимают позиционные аргументы функции

#positional arguments example
def combine(str1, str2):
#To join str1 and str2 with str3
    str3 = str1 + str2
    print(str3)

#call combine() and pass 2 strings
combine("Well", "come")   #positional arguments 

. Предположим, что мы передали 'come' first, 'well' second, затем результат будет возвращатьсяКроме того, вызов функции 3 строки становятся ошибкой.

0 голосов
/ 22 мая 2018

Понять ключевые аргументы функции.

Аргументы ключевых слов - это аргументы, которые идентифицируют параметры по их именам.

#keyword arguments example: 
def employee(name, Id):
    print("Employee Name: ", name)
    print("Employee Id  : ", Id)
#call employee() and pass 2 arguments
employee(name = "inban", Id = "pay001")
employee(Id = "pay002", name = "karthik") #we can change the order args.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...