使用 for 循环简化代码

今天才刚开始使用Python,所以如果我在这里做疯狂的事情,请告诉我。我一直在努力简化代码块,以便可以更轻松地重用它。我的目标是在每次重用期间只更新一组变量。我最后的工作代码是这样的:


class_a='amstaff'

class_b='beagle'

class_c='doberman'

class_d='germanshepherd'

class_e='rottweiler'


with open(file_path +class_a+'.zip', 'rb') as class_a, open(file_path +class_b+'.zip', 'rb') as class_b, open(file_path +class_c+'.zip', 'rb') as class_c, open(file_path +class_d+'.zip', 'rb') as class_d, open(file_path +class_e+'.zip', 'rb') as class_e:


    model = visual_recognition.create_classifier(

        classifier_name,

        amstaff_positive_examples=class_a,

        beagle_positive_examples=class_b,

        doberman_positive_examples=class_c,

        germanshepherd_positive_examples=class_d,

        rottweiler_positive_examples=class_e)

print(json.dumps(model, indent=2))

这为我的原始代码节省了大量时间,但仍然需要进行大量编辑。所以我在想我可能可以使用for循环,但是我半途陷入了困境。这是到目前为止的内容,但是我对如何从此处继续感到困惑。


classes=["amstaff", "beagle", "doberman", "germanshepherd", "rottweiler"]


for x in classes:

    with open(file_path +x+'.zip', 'rb') as x:


model = visual_recognition.create_classifier(

    classifier_name,

    amstaff_positive_examples=class_a,

    beagle_positive_examples=class_b,

    doberman_positive_examples=class_c,

    germanshepherd_positive_examples=class_d,

    rottweiler_positive_examples=class_e)

print(json.dumps(model, indent=2))


隔江千里
浏览 152回答 1
1回答

慕村9548890

如果您使用python 3.3+,则可以使用ExitStack来管理所有上下文管理器。所有打开的文件将在with语句的末尾自动关闭。classes=["amstaff", "beagle", "doberman", "germanshepherd", "rottweiler"]with ExitStack() as stack:    files = [stack.enter_context(open(fname)) for fname in classes]并且files将拥有打开可用于创建模型的文件的所有句柄。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python