Передача возвращенного значения внутренней функции внешней функции в Python? - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть две функции:

1. SendMail(to, f_name, table ) - отправляет почту to получателю, используя smtplib.Фрагмент кода:

def SendMail(to, f_name, table )
        . 
        .
        .

        server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
        server.ehlo()
        server.login(gmail_user, gmail_password)
        print("Type 'Y' to send the mail! ")
        text = input(">")
        if text.lower() == "y":
            #print("Sending mail")
            server.sendmail(gmail_user, to, msg.as_string())
            print("Mail sent to "+ first_name)
            server.close()
            status = 'success'
            return status
        else:
            print("Mail NOT sent to " + first_name)
            status = 'fail'
            return status
MailLoop(): у меня есть список людей, которым я отправляю персонализированное письмо.

def MailLoop(): for owner in owner_list: to = 'somemailaddress' f_name = 'somefirstname' table = 'sometable' SendMail(to, f_name, table )

Вопрос: Как передать значение status, которое возвращается из функции SendMail(to, f_name, table ) после каждой итерации, во внешнюю функцию MailLoop()?Я хотел бы сохранить состояние каждой итерации в списке, чтобы видеть и распечатывать результат после завершения функции MailLoop().

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Для этого вы можете добавить результат в список или сделать его генератором.

Пример для генератора:

def MailLoop():
    for owner in owner_list:
        to = 'somemailaddress'
        f_name = 'somefirstname'
        table = 'sometable'
        yield SendMail(to, f_name, table )

Затем вы можете вызвать его как:

for mailer in MailLoop():
    do_somthing_with_returned_status(mailer)
0 голосов
/ 14 сентября 2018

Вернуть список из MailLoop:

def MailLoop():
    statuses = []
    for owner in owner_list:
        to = 'someemailaddress'
        f_name = 'somefirstname'
        table = 'sometable'
        statuses.append(SendMail(to, f_name, table))
    return statuses
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...