使用 exec() eval() 方法时如何克服格式化字符串的限制?
How to overcome formatted string limitations when using exec() eval() method?
由于 eval/exec 函数的 限制,我遇到了问题
由于 exec 和 eval 不会自动适应正确的类型(因为我们在格式化字符串中),在(很多)需要代码生成的情况下,这种格式化字符串评估方法将不起作用(请参阅下面的示例)。
所以我问社区是否有更聪明的方法来创建这种 API 一代
示例:
# *context: writing automation using software api*
# I need to apply the dict values to the API, to do so I will use exec()
dict = {
"api" : "value"
"count" : 5
"name" : "MyCustomName"
"color" : [1,0,0]
}
import API
for key,value in dict.items():
exec(f"API.{key} = {value}") #this won't work because value type isn't supported in formatted string
exec
是不必要的,只需使用 setattr
:
for key,value in dict.items():
setattr(API, key, value)
旁注:不要命名变量 dict
,它会隐藏一个内置变量。