基于函数参数名称的条件语句

时间:2013-01-01 21:26:37

标签: python

  

可能重复:
  How to get the original variable name of variable passed to a function

在python中是否存在类似下面的内容,根据传递给函数的参数名称,我们可以执行下面的条件语句。

def func(a,b,c,d)

if fourth paramter = d:
#code

elif fourth parameter = e:
#code

else:

#code

   def main():
         func(a,b,c,d)
         func(a,b,c,e)

2 个答案:

答案 0 :(得分:5)

您应该使用关键字参数:

def func(a, b, c, **kwargs):
    if 'd' in kwargs:
        ....
    elif 'c' in kwargs:
        ....

但这并不完全等同于你想要的东西。如果您想确保de第四个参数,那会更麻烦。

然后你可以试试像:

def func(a, b, c, d=None, e=None):
    if d is not None and e is None:
        ....
    elif e is not None and d is None:
        ....

请注意,这并不是您所要求的。它不会访问作为位置参数传递给函数的变量的“原始”名称,如Stuart链接的question。你甚至不应该尝试这样做,这是毫无意义的。

答案 1 :(得分:0)

kwargs不会准确地提供您想要的内容,但它可以很接近:

def func(a, b, c, **kwargs):
   if 'd' in kwargs:
       print "do something"
   elif 'e' in kwargs:
       print "do something else"


 def main():
     func(a = 1 ,b = 2 ,c = 3, d = 'some_value')
     func(a = 1 ,b = 2 ,c = 3, e = 'some_value')