函数可以在其定义内使用不同的参数调用自身吗?

时间:2019-09-12 05:45:06

标签: python function call

此功能具有3种模式,即“ hh”,“ ih”和“ ho”。

    def mutate_add_connection(self, mode = 'hh'):
        if mode == 'hh':    # hidden --> hidden
            node_a = random.choice(self.hidden_nodes_dict.values())
            node_b = random.choice(self.hidden_nodes_dict.values())
            self.connect_node_pair(node_a,node_b, 'sort')
        elif mode == 'ih':  # input --> hidden
            node_a = random.choice(self.input_nodes_dict.values())
            node_b = random.choice(self.hidden_nodes_dict.values())
            node_b.set_links((node_a,random.choice([-1, 1])))
        elif mode == 'ho':  # hidden --> output
            node_b.set_links((node_a,random.choice([-1, 1])))
            node_a = random.choice(self.hidden_nodes_dict.values())
            node_b = random.choice(self.output_nodes_dict.values())

在添加连接变异的实践中,我需要使用这三种模式。每种模式不要说33.33%。

因此,我打算在此功能中添加模式“自动”。为了将“ 3”模式称为“随机”。

    def mutate_add_connection(self, mode = 'hh'):
        if mode == 'auto':
            chosen_mode = random.choice(['hh','ih','ho'])
            self.mutate_add_connection(mode=chosen_mode)
        # the code above .......

但是我不确定这是一个好主意。您能否提出实现我的建议的更好方法?谢谢〜

1 个答案:

答案 0 :(得分:6)

虽然递归函数经常有很好的用法,但实际上并不需要。只需重新分配mode参数即可。

    def mutate_add_connection(self, mode = 'hh'):
        if mode == 'auto':
            mode = random.choice(['hh','ih','ho'])
        # the code above .......