【发布时间】:2020-12-17 04:32:03
【问题描述】:
什么?
我想使用变量的名称,而不是它的值。例如,在下面的示例中,我希望函数返回 my_list[1],而不是 B..
my_list = ['A', 'B']
def example(list_element):
print(repr(eval(list_element)))
example(my_list[1]) # I would like this to print `my_list[1]`
但是为什么呢?
我正在尝试创建一个函数,该函数从列表中获取给定元素,并且还使用前一个列表元素。通过获得名称my_list[1],我可以减去一个并获得my_list[0]。一旦我有了这两个名称,我就可以利用存储在这些名称下的值。
是的,我可以简单地在函数中添加两个字段,然后每次都将它们放入,但我希望让我的代码主体更易于阅读。
【问题讨论】:
-
你的意思是
print(f"{list_element=}")? -
对象不知道它们在任何给定时间碰巧绑定到哪些变量。你打算硬编码这个只使用一个特定的变量“my_list”还是应该是通用的?
-
@grismar 你有什么建议?留下同样的问题?我在评论中加入了“不要这样做”和“从列表中返回一个切片或者可能是 prev/act 值的元组”的建议。如果我们让它打开,同样糟糕的糟糕答案会出现 - 使用 eval、使用检查、搜索 global() 等
-
@PatrickArtner - 不,提供一个简单的答案,说明数据和代码之间的差异。我下面的答案与 OP 需要的一样简单。您可以编写一个更好的答案,简明扼要地解释差异并产生类似的解决方案。引用的答案的作用是“当然,如果你想成为一个白痴:这就是方法” - 它们没有错,但它们对刚开始的编码人员没有好处,他们只是不知道更好,答案只会把他们送进死胡同。
-
@SolebaySharp - 很高兴听到这句话,这意味着您正在朝着更好的方向前进。我的评论更笼统,像这样的问题比每天都出现。但感谢您的反馈。我认为我们可以保持原样:)