2012-07-23 5 views
1

Dans le code python pour la fonction quand on définit quelque chose comme:def myfunction (silencieux = Faux, x, y) Que fait la partie "silent = False"?

def myfunction(silent=False, x, y) 

Qu'est-silent=False faire?

+1

Vous ne pouvez pas avoir une fonction configurée comme ceci, vous devrez la changer en 'def myfunction (x, y, silent = False),' – jamylak

+1

Cela s'appelle un argument mot-clé, ou plus communément, kwarg. Avoir une lecture de tout tutoriel de base de python. – Hamish

+2

@Hamish: votre description est erronée de plusieurs façons. Les arguments de mots-clés sont effectués par l'appelant. "silent" ici peut être fourni positionnellement, et 'x' peut être fourni en tant que mot-clé. Et "kwarg" est une chose différente, utilisée avec '**'. –

Répondre

6

Avec votre code actuel:

def myfunction(silent = False, x, y) 

L'erreur suivante sera soulevée:

SyntaxError: non-default argument follows default argument 

Si vous modifiez à:

def myfunction(x, y, silent=False) 

silent utilise sa valeur par défaut de False si ce n'est pas passé en paramètre, par exemple. myfunction(x, y) sera l'équivalent de

+0

Peut-être que OP a trouvé du code en utilisant les seuls arguments du mot-clé Py3k. 'Def myfunction (silencieux = False, *, x, y):' et a oublié d'écrire le '' * – JBernardo

+1

Soo la bonne réponse est réelle "arrête la fonction de compilation";) – Voo

+0

@JBernado Ne ressemble pas à quelque chose de la OP serait essayer. – jamylak

2

Comme d'autres l'ont noté, vous devez avoir silent comme dernier paramètre. Ceci définit silent en tant que paramètre facultatif pour votre fonction. Si l'appelant ne fournit pas de valeur, la valeur par défaut False sera utilisée.

Une fois que vous définissez une fonction de cette façon:

def myfunc(x, y, silent=False): 

vous avez une fonction appelée myfunc qui peut être appelé de deux façons différentes:

myfunc(1, 2, True) 
myfunc(1, 2) 

Dans les deux appels, x sera 1 et y sera 2. Dans le premier appel, silent sera True. Dans la seconde, silent sera False.

+0

J'apprécie vraiment toutes les réponses, en particulier Ned et Jamylak. Je suis d'accord que "silencieux" devrait être placé comme le dernier paramètre. Je suis également d'accord avec l'explication, mais je voulais simplement savoir si 'silent' est quelque chose de spécial en python qui a été utilisé sur un code par un développeur. Est-ce pour supprimer l'exécution de n'importe quelle déclaration suivant la définition? Co'z si ce n'est pas quelque chose de spécial, alors il peut juste être remplacé par tout autre mot que je peux penser. – user1544778