Как пройти через **kwargs в Python?

в коде ниже я хочу прочитать obj.subject и поместите его в var subject, Читайте также obj.body и body. Сначала я хочу прочитать kwargs переменные и поиск ключевых слов в строке для замены, если ни один не существует, то двигаться дальше.

как я могу перебрать kwargs в 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)

2 ответов


для пользователей Python 3:

вы можете перебирать kwargs С .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)

для пользователей Python 2:

вы можете перебирать kwargs С .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)

просто краткое Примечание Для тех, кто обновляется до Python 3.

в Python 3 это почти то же:

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)

обратите внимание, что iteritems() становится items() as dict больше не имеет метода iteritems.