如果条件为假,如何返回变量名的字符串?

时间:2019-09-23 14:25:47

标签: python python-3.x

我有很多变量,它们的值是用户的输入。所以我想如果输入== 0变量的值成为它的名字!我知道我可以尝试:

Var = something if something else "var"

但是在实际代码中,“某物”部分很长,代码将是WET。 我试图定义一个函数,但是还有另一个问题:

X = 9
Y = 0

Def f(x):
   digit_finder = max(list(map(lambda x:abs(x) , re.findall(r'\d+', str(x))
   if digit_finder > 0:
     x = x
   else:
     x = str(x)
   return x
Print(f(x))
Print(f(y))
Pri
>>> 9
>>> 0.0 # I want this part returns "y"

2 个答案:

答案 0 :(得分:0)

如果仅出于测试目的需要它,建议您抛出异常:

def f(v):
    if v:
        return v * 2
    else:
        raise ValueError()


x = 1
y = 0
f(x)
f(y)

结果:

Traceback (most recent call last):
  File "C:/.../test.py", line 11, in <module>
    f(y)  <----------------------------------- here is variable name
  File "C:/.../test.py", line 5, in f
    raise ValueError()
ValueError

答案 1 :(得分:0)

正如所有评论所暗示的那样,您不能真正做您想做的事。无论如何,您都会做一些额外的工作。如果确实需要返回“ y”,则可以尝试使用关键字参数。

import re

def f(**kwargs):
   # make sure kwargs has one element otherwise raise some error?
   name, value = tuple(kwargs.items())[0]
   digit_finder = max(list(map(lambda x:abs(int(x)) , re.findall(r'\d+', str(value)))))
   if digit_finder > 0:
     return value

   return name

x = {'x': '9'}
y = {'y': '0'}

f(**x)
f(**y)