Подтвердить что ты не робот

Позиционный аргумент v.s. ключевой аргумент

Основываясь на этом

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

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

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

print rectangleArea(width=1, height=2)

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

4b9b3361

Ответ 1

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

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

Когда они говорят об определении функции в разделе 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.

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

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

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

Ответ 2

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

Ответ 3

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

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

print(rectangleArea(1, 2))
print(rectangleArea(width=1, height=2))
print(rectangleArea(height=2, width=1))

Ответ 4

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

#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 

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

Ответ 5

Поскольку в Python 3.8 были введены только позиционные аргументы, этот пост требует обновления.

Позиционные аргументы, ключевые аргументы, обязательные аргументы и необязательные аргументы часто путают. Позиционные аргументы НЕ ТО ЖЕ КАК обязательные аргументы. и ключевые слова аргументы НЕ ТО ЖЕ КАК необязательные аргументы.

Позиционные аргументы - это аргументы, которые можно вызывать по их позиции в определении функции.

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

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

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

Необязательный позиционный аргумент (python 3.8)

def f(a=2, /):
    pass


f()  # Allowed, argument is optional
f(1)  # Allowed, it a positional argument
f(a=1)  # Error, positional only argument

Требуемый позиционный аргумент (python 3.8)

def f(a, /):
    pass


f()  # Error, argument required
f(1)  # Allowed, it a positional argument
f(a=1)  # Error, positional only argument

Ключевой аргумент, который является необязательным

def f(*, a=1):
    pass


f()  # Allowed
f(1)  # Error, keyword only arguments
f(a=1)  # Allowed, it a keyword argument

ключевой аргумент, который требуется

def f(*, a)
    pass


f()  # Error, argument required
f(1)  # Error, keyword only arguments
f(a=1)  # Allowed, it a keyword argument

Позиционный и ключевой аргумент, необязательный

def f(a=1)
    pass


f()  # Allowed, argument is optional
f(1)  # Allowed, it a positional argument
f(a=1)  # Allowed, it a keyword argument

# In fact this function is the same as
def f(*, a=1, /):
    pass

Требуемый позиционный и ключевой аргумент

def f(a):
    pass


f()  # Error, argument required
f(1)  # Allowed, it a positional argument
f(a=1)  # Allowed, it a keyword argument

# In fact this function is the same as
def f(*, a, /):
    pass

Заключение, аргумент может быть необязательным или обязательным , но не одновременно. Он также может быть позиционным, ключевым или одновременно both at the same time.

В Python 3.8 введены только позиционные параметры.

def f(positional_argument, /, positional_or_keyword_argument, *, keyword_argument):
    pass

Ответ 6

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

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

#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.