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

时间:2018-02-28 09:24:16

标签: python python-3.x function

我有一些函数可以呈现一些模板,我希望每次调用它时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)
    )

1 个答案:

答案 0 :(得分:2)

如果您总是要使用单个对象中的参数,那么简单地传入对象本身会使您更加清楚,不打算混合和匹配它们。

看看到目前为止你所展示的内容,更有意义的是在你的动作对象上制作一个add_to_context方法。这可能是有些违反直觉的一些,作为add方法通常是在收集保存对象,而不是对象中找到被添加,但是因为如果它&#39的动作已经确定,被添加至S是否有背景(通过action_value参数),至少您将责任放在一个地方。