如果您只在循环内分配变量,那么实例化变量以在循环外使用的最佳做法是什么?

What is best practice for instantiating a variable for use outside of a loop if you are only assigning to it within the loop?

我经常发现自己处于想要根据某些比较或其他逻辑的结果分配给变量的情况。我做了一些谷歌搜索,我知道我可以将 None 分配给一个变量,然后再分配给它,但我只想知道这是否真的是最好的方法。

这是我的想法的一个例子:

def function(v1, v2):
    least = None
    if v2 < v1:
        least = v2
    else:
        least = v1

我的想法告诉我一定有更好的方法,但我绝对不会称自己是 Python 方面的专家。

我不会写第一个作业,因为它会立即被覆盖,并且代码保证采用两个分支之一。

def function(v1, v2):
    if v2 < v1:
        least = v2
    else:
        least = v1

如果您愿意,可以将其缩短为一行。

def function(v1, v2):
    least = v2 if v2 < v1 else v1

这比以前的版本好还是坏是个人喜好问题。我喜欢它,但随着逻辑变得越来越复杂,它很快变得不可读。

在你的例子中没有必要首先分配它,因为条件的所有分支都分配了它。

如果可能存在未分配变量的代码路径,则必须先分配默认值。一种常见的情况是,如果您在循环中分配变量;如果循环执行零次,则不会设置变量。

def function(lst):
    result = None
    for item in lst:
        if somefunc(item):
            result = item
    return result

如果不在循环前初始化result,当列表为空或none个元素满足somefunc()条件时会报错。