我有很多变量,它们的值是用户的输入。所以我想如果输入== 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"
答案 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)