Skip to main content
 首页 » 编程设计

python之使用命名参数作为变量

2025年05月04日16haluo1

我正在使用 django,但我认为这个问题主要属于 Python 本身。

我有这样的东西:

def get(self, request, arg, *args, **kwargs): 
 
    if kwargs['m0'] == 'death': 
      if kwargs['m1'] == 'year': 
         result = Artists.objects.filter(death_year=arg) 
      elif kwargs['m1'] == 'month': 
         result = Artists.objects.filter(death_month=arg) 
      elif kwargs['m1'] == 'day': 
         result = Artists.objects.filter(death_day=arg) 
    elif kwargs['m0'] == 'birth': 
      if kwargs['m1'] == 'year': 
         result = Artists.objects.filter(birth_year=arg) 
      elif kwargs['m1'] == 'month': 
         result = Artists.objects.filter(birth_month=arg) 
      elif kwargs['m1'] == 'day': 
         result = Artists.objects.filter(birthh_day=arg) 

death_year 是一个命名参数,它是我的模型 Artists 中的一个字段,表示我的数据库中的一个列。变量 'm0' 和 m1 从 urlconf 传递到我的 get 函数(它实际上是我的 View 类中的一个 get 方法)。 我能否在不使用 if else if 链的情况下控制变量 death_year 的名称值(即使其成为 death_month 或 birth_year)?由于我有很多选择,因此我将不得不使用一个非常长的条件链,该条件链通向同一行,但具有不同的命名参数。

我强烈怀疑你是否应该理解整个问题来回答这个问题。最初的问题很简单:我可以在 Python 中使用命名参数及其对应的值作为变量吗?

请您参考如下方法:

据我所知,您可以构建 key ,然后传入一个 arg 来构建字典,然后将其包含在过滤器中

key = '%s_%s' % (kwargs['m0'], kwargs['m1']) 
result = Artists.objects.filter(**{key: arg})