我写了下面的函数来构建参数,我想知道在python中有没有其他方法可以这样做,从而提高代码效率。。。在
build_parameters(users[keys]["email"], Null , xsmtpapi, Message_Subject, Message_Content, Message_Content, 'support@brightspyre.com', 'BrightSpyre', 'support@brightspyre.com', Null, Null, Null, Null)
这是函数
^{pr2}$更新
我已经按照@J0HN
的描述更新了代码
_allowed_keys = {'to', 'toname', 'x-smtpapi', 'subject', 'text', 'html', 'from', 'cc', 'ccname', 'bcc', 'bccname', 'fromname', 'replyto', 'date', 'files', 'content', 'headers'}
def build_parameter(**kwargs):
return {key:value for key, value in kwargs.items() if key in _allowed_keys}
params = build_parameter(to = users[keys]["email"], toname = users[keys]["name"], x-smtpapi = xsmtpapi, subject = Message_Subject,text = Message_Content, html = Message_Content, from = 'support@bs.com', fromname = 'BS', replyto = 'support@bs.com')
错误
params = build_parameter(to = users[keys]["email"],toname = users[keys]["name"], x-smtpapi = xsmtpapi, subject = Message_Subject,text = Message_Content, html = Message_Content, from = '
support@bs.com', fromname = 'BSe', replyto = 'support@bs.com')
^
SyntaxError: invalid syntax
循序渐进:
_allowed_keys
以包含所有关键字参数的名称。有关详细信息,请参阅set documentation。在**kwargs
。请参阅Understanding kwargs in Python以了解有关它的详细信息。在kwargs
生成新词典items
用于迭代字典的键值对key in _allowed_keys
我相信这是不言自明的因此,此函数接收任意数量的关键字参数,但筛选出不在
_allowed_keys
中的键。在UPD:好,
from
是一个关键字,x-smtpapi
不能是关键字参数,因为它包含-
。这是一个预期的行为,但是canonical way来解决它会使整个方法变得无用。在因此,您需要以不同的方式表示它们,例如:
^{pr2}$像这样使用
build_parameter(_from='from value', x_smtpapi: 'x-smtpapi value', ...)
不过,我不建议这样做,因为这可能会让人很困惑。相反,考虑其他方法,例如,构建一个类来封装创建
params
dict(并且可能使用它)就建一本字典吧。在
没有必要为此使用方法。在
相关问题 更多 >
编程相关推荐