重构函数内部的代码复制

2024-10-06 11:23:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我想重构assign_hotkey函数,因为我不喜欢if语句中的重复代码。你知道吗

代码:

n_path_i = 0
c_node_i = 1
h_key_i = 2

hotkeys = [
        ['Filter/Blur', 'Blur, size 20 label "hello world"', 'A'],
        ['Draw/LightWrap', 'LightWrap', 'B'],
        ['Draw/Grain', 'Grain2', 'X']
        ]

def assign_hotkey(n_path, c_node, h_key):
    c_node_splitted = c_node.split(',')
    if len(c_node_splitted) > 1:
        menu.addCommand(n_path, 
                        lambda: nuke.createNode(*c_node_splitted),
                        h_key)
    else:
        menu.addCommand(n_path, 
                        lambda: nuke.createNode(c_node),
                        h_key)

for i in hotkeys:
    assign_hotkey(i[n_path_i], i[c_node_i], i[h_key_i])

Tags: pathlambdakey代码nodeifmenudraw
1条回答
网友
1楼 · 发布于 2024-10-06 11:23:55

由于您正在解压从拆分c_node得到的列表,当您将其传递给nuke.createNode时,没有理由对列表的长度设置特殊的大小写。你知道吗

您可以更改:

if len(c_node_splitted) > 1:
    menu.addCommand(n_path, 
                    lambda: nuke.createNode(*c_node_splitted),
                    h_key)
else:
    menu.addCommand(n_path, 
                    lambda: nuke.createNode(c_node),
                    h_key)

收件人:

menu.addCommand(n_path, 
                lambda: nuke.createNode(*c_node_splitted),
                h_key)

相关问题 更多 >