返回变量名而不是它的值

时间:2019-10-16 13:37:18

标签: python

def my_function(x, y, z):
    mini = min(x,y,z)
    return mini

a = 78*453
b = 654-877
c = 98765*785

print(my_function(a,b,c))

我正在学习Python中的函数,并且想知道如何在此代码中返回变量名而不是它的值。 我知道变量b(分配给局部变量y)具有最小值,但是如何基于该值打印“ b”或“ y”而不是“ -223”?

3 个答案:

答案 0 :(得分:0)

您可以将dict作为参数传递给函数,并将变量名设置为dict键,如下所示:

d={'a': 78*453, 'b': 654-877, 'c': 98765*785}

,然后获得带有最小值的键名,如下所示:

def my_function(d):
    return min(d, key=d.get)

答案 1 :(得分:0)

尽管可能不建议这样做,但是从python 3.8开始,您可以在f字符串中使用新的=。 举个例子:

def return_value(a):
    return a

def return_variable_name_with_value(a):
    return f'{a=}'

print(return_value(5))
# Output:
# 5
print(return_variable_name_with_value(5))
# Output:
# a=5

答案 2 :(得分:0)

min()将找到最小值,因此它不在乎参数名称。但是min()也可以将Iter作为参数。

data = [2, 3, 1]
print(data.index(min(data))

这样您将获得最小值的位置。

您还可以使用更复杂的方法-存储一些元数据,例如带有数据的名称:

data = [('a', 3), ('b', 0), ('c', 1)]

这里有元组列表,但是要找到最小值,您必须让min知道用于比较的值:

minValue = min(list(map(lambda x: x[1], data)))
minPosition = list(map(lambda x: x[1], data)).index(minValue)
print(data[minPosition]) # prints ('b', 0)

不建议直接搜索变量名,以后有人可能会重构某些内容,并且您的代码将被破坏。最好将更多信息存储为数据。