Python 评估对象的内容

Python 评估对象的内容,python,tkinter,eval,Python,Tkinter,Eval,我正在尝试使用Python3创建一个电子表格应用程序,但我很难将其设置为能够执行跨单元格功能,例如: a0+2 其中a0是包含字符串的tkinter文本框。我制作了一个字典,将每个地址(a0、a1、a2等)映射到cell对象,但不确定是让程序解析字符串寻找地址字符串,还是有一些非常简洁的eval()技巧。我尝试过使用eval(),但一直出现错误 TypeError:globals必须是真正的dict;尝试eval(expr,{},mapping) 无论我把字典放在哪里,或者即使我尝试使用全局强

我正在尝试使用Python3创建一个电子表格应用程序,但我很难将其设置为能够执行跨单元格功能,例如:

a0+2
其中a0是包含字符串的tkinter文本框。我制作了一个字典,将每个地址(a0、a1、a2等)映射到cell对象,但不确定是让程序解析字符串寻找地址字符串,还是有一些非常简洁的
eval()
技巧。我尝试过使用
eval()
,但一直出现错误

TypeError:globals必须是真正的dict;尝试eval(expr,{},mapping)


无论我把字典放在哪里,或者即使我尝试使用全局强制转换。任何帮助都将不胜感激。

不要使用eval来评估公式。它使人们能够将几乎任何python代码放入电子表格中,这意味着您拥有的每个电子表格都能够对您的计算机系统造成无法估量的损害。这是一个非常糟糕的主意。

我不明白您使用eval的目的是什么。简单的例子是,如果我们有三个单元格,例如:

a0=3; a1=2; a3=a0+a1

只需求a0和a1的和,我不介意没有eval()的情况下你将无法得到结果。

也许可以考虑使用类似的东西,而不是
eval()
。它应该允许用户在单元格中进行计算,只要您可以链接符号(如这里的
a0

我们需要查看您的代码您必须解析每个文本框中的字符串,以确定它是否包含文字字符串、整数或对单元格的引用。提取单元格地址/键后,您可以访问该单元格中的值(dict lookup),该值也需要进行分析。请查看此高评级。或者更一般地说,不要使用eval,永远——除非你确切知道自己在做什么,并且已经探索了所有其他的选择。我真的很讨厌那种下意识的反应,几乎每个人都讨厌使用
eval
。是的,在某些情况下可能很危险,但这并不是每个应用程序中的每个人都关心的问题。它是语言的一部分是有原因的,而且非常有用。@martineau:是的。但在这种情况下,这是一个令人担忧的问题。这并不是下意识的。我也解释了原因。在使用Python 11年之后,我很少说这是下意识的。好吧,我能说的是,在Python方面的经验大致相当,我不同意你的评估。Python
TypeError
error消息甚至建议使用它。不仅如此,其他颇受尊敬的Python开发人员也正是为了这个目的而使用它的?没有理智的人会这么说。您的链接谈到了“电子表格样式逻辑”,这是一个重要的区别。问题是一个单元格可能有字符串
“a0+a1”
。OP希望以某种方式计算该字符串以获得总和。