Python函数将数据分配给多个变量

时间:2017-08-02 16:48:22

标签: python variables

如果表单未验证,我正在使用此代码将数据分配给某些变量。这是我将在我的脚本中使用很多的一些逻辑。我想创建一个函数,以便该语句的else部分存储在一个函数中,这样我就可以调用它而不是每次都粘贴这些行。

if form.validate_on_submit():
        do something

else:

        brand_title=form.brand_title.data or ''
        carrier_format=form.carrier_format.data or ''
        recording_artist=form.recording_artist.data or ''
        producer=form.producer.data or ''
        session=form.session.data or ''
        tx_date=form.tx_date.data or ''
        network=form.network.data or ''
        programme_number=form.programme_number.data or ''
        start_time_1=form.start_time_1.data or ''

我创建了一个类似的函数:

def variables():
        brand_title=form.brand_title.data or ''
        carrier_format=form.carrier_format.data or ''
        recording_artist=form.recording_artist.data or ''
        producer=form.producer.data or ''
        session=form.session.data or ''
        tx_date=form.tx_date.data or ''
        network=form.network.data or ''
        programme_number=form.programme_number.data or ''
        start_time_1=form.start_time_1.data or ''

但是如何返回变量以便调用函数镜像输出每一行(如代码的第一部分中的else部分)。 我已经读过,只需返回每个变量:

return (brand_title. carrier_format, recording_artist, producer, session, tx_date, network, programme_number, start_time_1)

会创建一个元组,这似乎不是我需要的正确选项。

2 个答案:

答案 0 :(得分:3)

我可能会建议您对功能进行一些小改动:

def variables():
    var_dict = {}

    var_dict['brand_title'] = form.brand_title.data or ''
    var_dict['carrier_format'] = form.carrier_format.data or ''
    var_dict['recording_artist'] = form.recording_artist.data or ''
    var_dict['producer'] = form.producer.data or ''
    var_dict['session'] = form.session.data or ''
    var_dict['tx_date'] = form.tx_date.data or ''
    var_dict['network'] = form.network.data or ''
    var_dict['programme_number'] = form.programme_number.data or ''
    var_dict['start_time_1'] = form.start_time_1.data or ''

    return var_dict

使用字典存储数据更加清晰,尤其是当您有这么多相关变量时。

If this is a WTForm,您可以只使用var_dict = form.data.copy()访问已包含在dict中的数据,然后根据需要使用var_dict.get(<var>, '')访问您的字段。

答案 1 :(得分:0)

字典会更好。此外,您可以使用所需属性的名称创建列表或其他容器,然后将逻辑推广到循环中:

def get_values(form):
    names = ['brand_title', 'carrier_format', 'recording_artist'] # add others
    return {name: getattr(form, name).data or '' for name in names}