编写python函数的有效方法

编写python函数的有效方法,python,django,django-models,Python,Django,Django Models,以上代码是函数的一部分。 我将一个标志分配给一个变量,并根据标志条件进行筛选操作。 有没有一种有效的编写方法?我假设您希望删除过滤器的重复项,您可以先将它们配置为字典,然后再进行编辑 def getObj(self, x,y,z): sheet = self.sheet is_flag = sheet[FLAGTYPE] if is_flag: lines = adlines.objects.filter( key="",

以上代码是函数的一部分。 我将一个标志分配给一个变量,并根据标志条件进行筛选操作。
有没有一种有效的编写方法?

我假设您希望删除过滤器的重复项,您可以先将它们配置为字典,然后再进行编辑

def getObj(self, x,y,z):

    sheet = self.sheet
    is_flag = sheet[FLAGTYPE]

    if is_flag:
        lines = adlines.objects.filter(
            key="",
            msc_cd=adlines.op,
            tid=x,
            svc_beg_dt__gte=datera.start,
            svc_beg_dt__lte=datera.end
        ).exclude(ind='Y')
    else:
        lines = adlines.objects.filter(
            key="",
            msc_cd=adlines.op,
            pid=x,
            svc_beg_dt__gte=datera.start,
            svc_beg_dt__lte=datera.end
        ).exclude(ind='Y')

什么是低效的?是的,据我所知,它是有效的,但是有没有其他的方法,比如使用is_flag来缩短这些代码?我假设你想使用某种三元运算符来减少代码重复?这是可能的,但不是必要的。它看起来很清晰。你也可以将if语句缩短为
filter_args['tid'if is_flag else'pid']=x
,但我认为这看起来很难看。@kate-这是在你原来的代码片段中,我根本没有改变它的功能。“ind”值没有通过函数参数。因此,我们将其排除在表格层面。@kate-我不明白你的意思,但这听起来像是一个完全不同的问题,你应该用你的尝试/研究作为一个新问题来问
filter_args = {
    'key': "",
    'msc_cd': adlines.op,
    'svc_beg_dt__gte': datera.start,
    'svc_beg_dt__lte': datera.end
}

if is_flag:
    filter_args['tid'] = x
else:
    filter_args['pid'] = x

lines = adlines.objects.filter(**filter_args).exclude(ind='Y')