Existe-t-il une méthode pour passer un variable number of arguments à une fonction et pour qu'elle change ces arguments en utilisant le style d'argument (*args, **keywords)
qui passe? J'ai essayé quelques petites choses, mais pas de changement soit voir ou avoir fait une erreur soulevée par le compilateur:Python: Affectation d'objets avec liste d'arguments variables
def foo(*args):
args[0] = 4
Cela me reçoit TypeError: object does not support assignment
(ils sont tuples.) Ou
def foo(*args):
plusOne = [ item+1 for item in args ]
args = plusOne
qui n'a pas effectuez quoi que ce soit. S'il n'y a pas de mécanisme ni de travail, je peux admettre ma défaite.
Edit:
Pour expliquer pourquoi je suis en train d'emprunter cette voie, considérons le cas ici:
class bar(object):
def __init__(self,obj):
self.obj = obj
def foo(input):
input.obj = "something else"
Si je passe mon objet bar
dans foo, je reçois un changement dans l'état . Pour créer un décorateur qui effectue un deepcopy
qui réinitialise tous ces états, je le personnalise actuellement pour N arguments. Je voudrais en créer un qui accepte n'importe quel nombre d'arguments. D'où la question.
connexes: http://stackoverflow.com/questions/575196/in -python-pourquoi-peut-une-fonction-modifier-certains-arguments-comme-perçu-par-l'appelant-b – SilentGhost
Merci pour le lien. – wheaties