¿Cómo hago un bucle a través de ** kwargs en Python?

En el código a continuación, quiero leer obj.subject y colocarlo en var subject, también leer obj.body y colocarlo en body . Primero quiero leer las variables de kwargs y buscar palabras clave dentro de la cadena para reemplazar, si no existe ninguna, kwargs .

¿Cómo puedo iterar a través de kwargs en Python?

 for key in kwargs: subject = str(obj.subject).replace('[%s]' % upper(key), kwargs[key]) for key in kwargs: body = str(obj.body).replace('[%s]' % upper(key), kwargs[key]) return (subject, body, obj.is_html) 

Para usuarios de Python 3:

Puedes iterar a través de kwargs con .items()

 subject = obj.subject body = obj.body for key, value in kwargs.items(): subject = subject.replace('[%s]' % key.toupper(), value) body = body.replace('[%s]' % key.toupper(), value) return (subject, body, obj.is_html) 

Para usuarios de Python 2:

Puedes iterar a través de kwargs con .iteritems() :

 subject = obj.subject body = obj.body for key, value in kwargs.iteritems(): subject = subject.replace('[%s]' % key.toupper(), value) body = body.replace('[%s]' % key.toupper(), value) return (subject, body, obj.is_html) 

Solo una nota rápida para aquellos que se actualicen a Python 3.

En Python 3 es casi lo mismo:

 subject = obj.subject body = obj.body for key, value in kwargs.items(): subject = subject.replace('[{0}]'.format(key.toupper()), value) body = body.replace('[{0}]'.format(key.toupper()), value) return (subject, body, obj.is_html) 

Observe que iteritems() convierte en items() ya que dict ya no tiene iteritems método.