Python使用什么来划分代码块:使用函数简化代码块 [Python]

我正在寻找一种通过函数简化我的代码的方法。我的操作的 90 % 是相等的,并且仅与 if 条件不同。

例如。

if isFile:
    
    fFound = False
    for key in files:
        if item["path"] in key:
            fFound = True
            for c in cmds.keys():
                if item["path"] in cmds[c]["files"]:
                    ifxchecker(item["requiredIFX"], cmds[c]["ifx_match"])
            outputCFG()
    if not fFound:
        notFound.append(item['path'])
else:
    dir = item["path"][:-1]
    pFound = False
    for key in files:
        if dir in key:
            pFound = True
            for c in cmds.keys():
                for file in cmds[c]["files"]:
                    if dir in file:
                        ifxchecker(item["requiredIFX"], cmds[c]["ifx_match"])
            outputCFG()
    if not pFound:
        notFound.append(dir)

我的代码工作正常,我只是想在一个函数中获得最大的收益,并且只与这些小的 if 条件不同。

我做了一些小功能,如你所见,但我认为会有一个更好的方法来简化整个结构。

0

不幸的是不能测试它,因为多个 var 和方法没有定义,但它似乎工作。也许使用is_dirbool 变量而不是 elem 会更好,如果你愿意:用is_dir替换elem并在函数的开头添加以下行:

elem = item["path"][:-1] if is_dir else item["path"] 
def do_stuff(elem, files, item, cmds, notFound):
    fFound = False
    for key in files:
        if elem in key:
            fFound = True
            for c in cmds.keys():
                if elem in cmds[c]["files"]:
                    ifxchecker(item["requiredIFX"], cmds[c]["ifx_match"])
            outputCFG()
    if not fFound:
        return elem
if isFile:
    res = do_stuff(item["path"], files, item, cmds)
    if res is not None:
        notFound.append(res)
else:
    do_stuff(item["path"][:-1], files, item, cmds)
    if res is not None:
        notFound.append(res)
0

我用 @ azro 方法解决了它:

def cfgFunction(x):
    global file
    fFound = False
    for file in files:
        if x in file:
            fFound = True
            for group in cmds.keys():
                if x in cmds[group]["files"]:
                    ifxchecker(item["requiredIFX"], cmds[group]["ifx_match"])
            outputCFG()
if not fFound:
    notFound.append(x)

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(645)
Ufs2.1:如何从FreeBSD(ZFS和UFS)上的inode获取路径
上一篇
Python中if语句用法:finally语句的用法
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(15条)