Skip to main content
 首页 » 编程设计

Python之在 for in 语句中使用字符串

2025年05月04日20tintown

所以我知道这是一种解决方法,可能有更好的方法来做到这一点,但事情就是这样。我从收集这些信息的地方简化了代码,并只给出了可靠的值。

curSel = nuke.selectedNodes() 
knobToChange = "label" 
codeIn = "[value in]" 
 
kcPrefix = "x" 
kcStart = "['" 
kcEnd = "']" 
 
changerString = kcPrefix+kcStart+knobToChange+kcEnd 
 
 
for x in curSel: 
    changerString.setValue(codeIn) 

但我得到了我想我会的错误 - 这是一个字符串没有属性“setValue”

因为如果我只键入 x['label'] 而不是 changerString,它就可以工作,但即使 changer string 说的是完全相同的东西,它也会被读取为字符串而不是代码。

有什么想法吗?

请您参考如下方法:

看起来您正在寻找一些东西来根据您当前的命名空间将字符串评估为 python 对象。一种方法是使用 globals 字典:

globals()['x']['label'].setValue(...) 

换句话说,globals()['x']['label'] 与 x['label'] 是一样的。

或者为您的情况明确说明:

globals()[kcPrefix][knobToChange].setValue(codeIn) 

其他人可能会建议 eval:

eval('x["label"]').setValue(...)  #insecure and inefficient 

但是 globals 绝对是一个更好的主意。


最后,通常当你想做这样的事情时,你最好首先使用字典或其他某种数据结构来让你的数据更有条理