gpt4 book ai didi

Python 不会 eval() 代码

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:11 27 4
gpt4 key购买 nike

我有以下 eval() 东西:

c = Customer()
eval("c.name = row.value('customer', '{c}')".format(c=column_name), { 'c': c, 'row': row})

当我尝试运行它时,我得到了这个:

Traceback (most recent call last):
File "./import.py", line 19, in <module>
c = Customer.save_from_row(row)
File "/home/jason/projects/mcifdjango/mcif/models/customer.py", line 43, in save_from_row
eval("c.name = row.value('customer', '{c}')".format(c=column_name), { 'c': c, 'row': row})
File "<string>", line 1
c.name = row.value('customer', 'name')
^
SyntaxError: invalid syntax

我做错了什么?

编辑:因为看起来我没有很好地解释我的问题的背景,如果有人好奇的话,这就是我最终做的事情:

@classmethod
def save_from_row(cls, row):
c = cls()
map(lambda column_name: setattr(c, column_name, row.value('customer', column_name)), c.distinguishing_column_names())
return c.upsert()

在我发现 setattr() 之前,我在 c 上分别设置了几个不同的属性。

最佳答案

eval 计算表达式。赋值是一个语句,而不是一个表达式。

甚至不要让我开始了解 eval 是多么容易被滥用,而且在 99.99% 的情况下都是完全不必要的。只需引用许多其他 eval 问题,我敢打赌每个人在回答或评论中至少有一个这样的咆哮 - 所以我会屏住呼吸并链接到 one I like . (也就是说,对于语句,exec 的工作方式类似于 eval。)

关于Python 不会 eval() 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com