下划线_作为Python中的变量名

这是该函数(source):


def search(values):

    "Using depth-first search and propagation, try all possible values."

    if values is False:

        return False ## Failed earlier

    if all( len( values[s]) == 1 for s in squares): 

        return values ## Solved!

    ## Chose the unfilled square s with the fewest possibilities

    _,s = min( (len( values[s]), s) 

                for s in squares 

                if len(values[s]) > 1

            )

    return some( search( assign( values.copy(), s, d)) 

                for d in values[s]

            )

(为方便起见,我添加了一些空格,CR和制表符;对Norvig博士表示歉意。)


在评论的正下方,有一行以“ _,s” 开头。那似乎是len(values[s]),s最小值为的解压元组()s。Norvig博士是否使用“ _”作为变量名只是为了表明它是“无关”结果,还是其他情况?有时_建议使用“ ”作为变量名吗?在交互模式下,“ _”保留上一个操作的答案;非交互式代码中有类似的功能吗?


更新资料

感谢您的好答案。我猜答案是Alex Martelli的“增值”;他指出,“ _,vbl_of_interest”惯用语通常是DSU惯用语的副作用,而DSU惯用语本身已被不必要。


子衿沉夜
浏览 914回答 3
3回答

ITMISS

_是的,是“无关紧要”的传统名称(很遗憾,它与I18N中的用法冲突,但这是一个单独的问题;-)。顺便说一句,在当今的Python中,代替:_,s = min( (len( values[s]), s)             for s in squares             if len(values[s]) > 1        )你可能会编码s = min((s for s in squares if len(values[s])>1),         key=lambda s: len(values[s]))(不确定使用哪种版本的Peter Peter写的Python,但他使用的惯用语是“ decorate-sort-undecorate” [[DSU]]的示例,但用min代替了sort,而在当今的Python中,key=可选参数通常是制作DSU的最佳方法;-)。

湖上湖

我正在尝试将递归放进去,以便可以在希望的时候将其删除-我的头还没有学会如何使用递归而不是用循环来做。我的数独求解器中有大量代码,这些“简单”递归def可以使一切消失!Norvig博士选择在他的求解器中使用字符串操作,而不是设置操作。具有讽刺意味的是,在解决数独问题之前,我使用了字符串操作来解决一些平铺难题,因此我为数独使用了列表“ n”组,仅用于体验。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python