首页 > 解决方案 > Python将多个值返回到另一个函数

问题描述

我正在制作各种电子邮件编译器,我试图从我的函数返回多个值并将它们输入到另一个函数中,但是当我运行代码时,无论我如何尝试,它总是说缺少 1 个必需的参数。有什么建议么 ?

from email.message import EmailMessage
import getpass
import smtplib
import mimetypes
import os.path


def setup_users():
    user = input("Please enter your email ")
    print(f" this will be the senders email {user}")
    recipient = input("Please input senders ")
    print(f"this will be the recipients email {recipient}")
    return (user, recipient)


def load_smtp(sender, message):
    # sender = "sender@ example.com"
    print("connecting to smtp server will")
    mail_server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
    mail_pass = getpass.getpass('Password? ')
    print(mail_pass)
    mail_server.login(sender, mail_pass)
    print("login sucessful")
    mail_server.send_message(message)
    print("email sent")
    mail_server.quit()

def create_email(user, recipient):
    sender = user
    recipient = recipient
    # setting to and from portion
    message = EmailMessage()
    message["From"] = sender
    message["to"] = recipient
    # setting up subject field
    message["Subject"] = f"Greetings this is from {sender} to {recipient}"
    body = """ Hey this is my first pythonic email program lets see how this works
    out! """
    # setting variable and putting body into a function
    message.set_content(body)
    return sender, message


if __name__ == "__main__":
    user = setup_users()
    email = create_email(user)
    print("gathering email data to complie")
    print("Starting program, will initiate load_smtp")
    smtp_server = load_smtp(email, user)
    print("sending email")

标签: python

解决方案


当你写

return (user, recipient)

你实际上没有返回 2 个值。您正在返回 1 个值,而该 1 个值是一个包含 2 个元素的元组。

要从元组中获取这两个值,您有多种选择。一种选择是使用解包:

user, recipient = setup_users()
email = create_email(user, recipient)

推荐阅读