127 votes

Argument de position vs argument de mot-clé

Sur la base de cette

Un argument positionnel est un nom qui n'est pas suivi d'un signe égal. (=) et d'une valeur par défaut.

Un mot-clé est suivi d'un signe égal et d'une expression qui donne sa valeur par défaut.

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

print rectangleArea(width=1, height=2)

Pregunta. Je suppose que les deux width y height sont des arguments de position. Dans ce cas, pourquoi ne pouvons-nous pas l'appeler avec la syntaxe des arguments par mot-clé ?

1voto

Arguments positionnels : arguments transmis à une fonction dans le bon ordre. le programme ci-dessous permet de comprendre les arguments positionnels d'une fonction.

#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 

Supposons que nous ayons passé 'come' en premier, 'well' en second, alors le résultat sera comewell. aussi, appeler la fonction 3 chaînes devient une erreur.

0voto

Comprendre les mots-clés arguments d'une fonction.

Les arguments de type mot-clé sont des arguments qui identifient les paramètres par leur nom.

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

0voto

leo adams Points 22

Je suppose que la largeur et la hauteur sont des arguments de position. Dans ce cas, pourquoi ne pouvons-nous pas l'appeler avec la syntaxe de l'argument mot-clé ?

Pour éviter cela, vous pouvez utiliser des arguments uniquement positionnels :

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

print rectangleArea(width=1, height=2)

Le message d'erreur serait le suivant :

TypeError : rectangleArea() a reçu des arguments uniquement positionnels passés en tant qu'arguments de mot-clé : 'width, height'

0voto

Maggyero Points 292

Voici quelques informations supplémentaires pour compléter les informations de @Nazime Lakehal. excellente réponse .

Un paramètre positionnel facultatif ne peut être suivi d'un paramètre positionnel ou d'un paramètre positionnel ou mot-clé obligatoire :

# SyntaxError.

def f(a=1, b, /):
    pass

# SyntaxError.

def f(a=1, /, b):
    pass

Un paramètre de type positionnel ou mot-clé facultatif ne peut être suivi d'un paramètre de type positionnel ou mot-clé obligatoire :

# SyntaxError.

def f(a=1, b):
    pass

Pour lier un paramètre positionnel facultatif, tous les paramètres positionnels précédents qui sont facultatifs doivent être liés, ce qui les rend tous obligatoires. C'est peut-être là l'origine de la confusion entre les paramètres positionnels et les paramètres obligatoires :

def f(a=1, b=2, /):
    pass

f(1, 0)

Pour lier un paramètre de mot-clé ou un paramètre de mot-clé ou de position qui est facultatif, tous les autres paramètres de mot-clé et de mot-clé ou de position qui sont facultatifs ne doivent pas être liés. C'est peut-être l'origine de la confusion entre les paramètres de mot-clé et les paramètres optionnels :

def f(c=3, *, a=1, b=2):
    pass

f(b=0)

def f(a=1, b=2, *, c=3):
    pass

f(b=0)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X