多模式随机图生成函数的可选参数实现是否有通用规范?
随机图生成函数的多模式参数设计规范问题
我想编写一个生成随机图的函数,随机图有不同类型,打算用mode参数控制函数行为(目前支持"regular"和"er"两种模式)。每种模式需要不同的输入参数,而且后续可能会添加需要不同数量参数的新模式,想问下这类实现有没有通用规范?
我自己想到了两种方案:
方案一:设置多个可选参数
仅在对应模式被调用时使用对应参数:
def create_random_graph(number_of_vertices, mode = "regular", degree = 3, edge_probability = 0.5): if mode == "regular": # 使用 degree 创建正则随机图,不涉及 edge_probability elif mode == "er": # 使用 edge_probability 创建ER随机图,不涉及 degree
优点:调用方式简单直观;
缺点:新增模式会让函数签名越来越臃肿,特定模式下部分参数完全不会被用到。
方案二:通过字典传递模式参数
把各模式需要的参数打包进字典传入:
def create_random_graph(number_of_vertices, mode = "regular", param_dict = None): if mode == "regular": if param_dict is None: degree = 3 else: degree = param_dict["degree"] # 创建正则随机图 # 其他模式同理,从字典中读取对应参数
优点:函数签名不会因新增模式而膨胀;
缺点:调用和编写文档的难度更高,默认参数的展示也不够直观。
内容的提问来源于stack exchange,提问作者BeneP
相关产品推荐
相关产品推荐

