将单独的参数或整个对象传递给函数

问题描述 投票:1回答:1

我有一些函数可以呈现一些模板,我希望每次调用时都有user_idchannel_id在上下文中。

将整个action对象传递给函数是一个好习惯,还是应该将个别参数传递给像render_add_screen({'user_id': action.user.id, 'channel_id': action.channel.id})这样的上下文?是否值得将render_add_screen函数限制为action对象?

@action_callback('help_monitor_controls')
def do_monitor_controls_action(action):
    if action.action_value == 'add':
        return render_add_screen(action)


def render_add_screen(action=None, context=None):
    if not context:
        context = {}

    if action:
        context['user_id'] = action.user.id
        context['channel_id'] = action.channel.id

    return combine(
        render_text('screens/add/text.html', context),
        render_attachments('screens/add/select_item.json', context)
    )
python python-3.x function
1个回答
2
投票

如果您总是要使用单个对象中的参数,那么只需传入对象本身就可以更清楚地表明您不打算混合和匹配它们。

然而,看看你到目前为止所展示的内容,更有意义的是在你的动作对象上制作一个add_to_context方法。这可能与某些人有点违反直觉,因为add方法通常在持有对象的集合而不是被添加的对象上找到,但是因为该操作已经决定它是否被添加到上下文中(通过action_value)参数)那么至少你要把责任放在一个地方。

© www.soinside.com 2019 - 2024. All rights reserved.