2010-05-06 7 views
0

Disons que nous avonsvariables Assign avec la variable en fonction

def Foo(Bar=0,Song=0): 
    print(Bar) 
    print(Song) 

Et je veux attribuer une des deux paramètres de la fonction avec la variable chanter et SongVal:

Sing = Song 
SongVal = 2 

Alors que il peut être exécuté comme: Foo(Sing=SongVal) Où Sing affecterait le paramètre Song au SongVal qui est 2. Le résultat devrait être imprimé comme suit:

0 
2 

Alors est-ce que je devrais réécrire ma fonction ou est-ce possible de le faire comme je le veux? (Avec le code ci-dessus vous obtenez une erreur disant que Foo n'a pas de paramètre Sing. Lequel je comprends pourquoi, un moyen de surmonter cela sans réécrire la fonction trop? Merci d'avance

Répondre

4

Ce que vous cherchez est le **kwargs façon de transmettre des arguments de mots-clés arbitraires.

kwargs = {Sing: SongVal} 
foo(**kwargs) 

Voir la section 4.7 of the tutorial at www.python.org pour plus d'exemples

+0

travaillé, grâce Seules choses qui a besoin de changement a été Chantez doit être égal à une chaîne Chantez = "Song" – user202459

+0

'Sing'! était déjà '' Song ''dans votre quête ion. –

Questions connexes