2016-01-27 1 views
0

Je veux définir une fonction avec des arguments optionnels, disons A (obligatoire) et B (facultatif). Quand B n'est pas donné, je veux qu'il prenne la même valeur que A. Comment pourrais-je faire cela?Argument de fonction facultatif Python pour la valeur par défaut d'un autre argument

J'ai essayé, mais cela ne fonctionne pas (nom « B » est pas défini):

def foo(A, B=A): 
    do_something() 

Je comprends que les valeurs des arguments ne sont pas affectés avant que le corps de la fonction.

Répondre

2

Vous devez le faire à l'intérieur de votre fonction.

Prendre votre fonction d'origine:

def foo(A, B=A): 
    do_something() 

essayer quelque chose comme:

def foo(A, B=None): 
    if B is None: 
     B = A 
    do_something() 

La chose importante est que les valeurs par défaut de fonction pour les arguments de la fonction sont donnés à l'époque, la fonction est définie.

Lorsque vous appelez la fonction avec une certaine valeur pour A, il est trop tard car la valeur par défaut B a déjà été affectée et réside dans la définition de fonction.

1

Vous pourriez le faire comme ceci. Si B a une valeur de None, puis l'affecter de A

def foo(A, B=None): 
    if B is None: 
     B = A 

    print 'A = %r' % A 
    print 'B = %r' % B