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

2024-04-30 02:24:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用这段代码在表单无法验证时将数据分配给一些变量。这是我在剧本中经常用到的逻辑。我想创建一个函数,这样这个语句的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)

会创建一个元组,这似乎不适合我的需要。你知道吗


Tags: producerorformformatdatadatetitleartist
2条回答

我可以建议你对你的职能做个小小的改变吗:

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 ^{},您可以只使用var_dict = form.data.copy()访问dict中已有的数据,然后根据需要使用var_dict.get(<var>, '')访问字段。你知道吗

一本字典会更好。此外,您还可以使用所需属性的名称创建一个列表或其他容器,然后将逻辑概括为一个循环:

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

相关问题 更多 >