使用 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,它会隐藏一个内置变量。