基于存储在字符串元组中的不同值创建字符串条件



我有一组字段(字符串(,在不同的结构下,我想从它们创建一个字符串;

  1. 我有一组默认字段作为元组:('created_at', 'active')

  2. r_field作为自变量接收,可以是None'all'或元组('descr', city')

  3. 一个函数set_fields,用于转换字符串中的字段:

    def set_fields(fields=None, particle=None):
    default_fields = ('created_at', 'active')
    default_fields = ', '.join([(particle + '.' if particle else "") + s for s in default_fields])
    if isinstance(fields, tuple):
    fields = default_fields + ', ' + ", ".join([(particle + '.' if particle else "") + s for s in fields])
    elif isinstance(fields, str) and fields == 'all':
    fields = '*'
    else:
    fields = default_fields
    return fields
    

set_fields由其他函数调用。此函数获取字段并对它们或它们的值执行其他操作。

def rodan(fields=None)
set_fields=(fields=(fields, 'is_bold'), particle='c')
................. 

问题是,每个方法都可以自己添加其他字段,如is_bold

示例1:

rodan(fields=('name', 'prime'))

结果:

c.created_at, c.active, c.is_bold, c.name, c.prime

示例2:

rodan()

结果:

c.created_at, c.active, c.is_bold

示例3:

rodan(fields='all')

结果:

*

我的函数可以工作,但不处理函数何时需要添加其他默认字段,如'is_bold',除了为调用set_fields的所有其他函数添加的一般默认字段。此外,我不确定我的方法是否是最佳的,对于我想要实现的目标。

我不确定我是否完全理解这个问题。你的意思是想处理其他方法调用的其他默认字段吗?如果是这样的话,只需简单添加可选的args:

def set_fields(fields=None, particle=None, addl_def_fields=None):
default_fields = ('created_at', 'active')
# additional handling for other default fields
if addl_def_fields:
if isinstance(addl_def_fields, tuple):
default_fields += addl_def_fields
elif isinstance(addl_def_fields, str):
default_fields += (addl_def_fields, )
# default fields will now contain all your added defaults.
# ... rest of your codes

现在,当您的其他函数引用set_fields时,只需在调用时添加新的关键字addl_def_fields=('is_bold', 'is_italics')

def rodan(fields=None)
set_fields=(fields=fields, particle='c', addl_def_fields=('is_bold', 'is_italics'))
................. 

最新更新