我可以避免将一堆变量设置为 None 只是为了以后可以使用它们吗?

Can I avoid setting a bunch of variables to None just so I can use them later?

我对 Python 有点陌生,我最近发现自己在写这样的代码:

command = None
args = None
mode = None
query = None
short_args, long_args = None, None
if sys.argv[1] == '-s':
    # search mode
    command = sys.argv[2]
    query = sys.argv[3]
    mode = SEARCH
else:
    # normal mode
    command = sys.argv[1]
    args = sys.argv[2:]
    mode = NORMAL
    short_args, long_args = get_args(args)

将所有这些变量设置为 None 似乎非常样板而且错误,我确定必须有一些更简洁的方法来做到这一点?

我知道我可以做类似的事情:

command = sys.argv[2] if sys.argv[1] == 's' else None

但这对所有人来说似乎有点过头了。

或者这是否属于 "explicit is better than implicit," 而我不应该太担心它?

如果您确定该命令将在您的代码中设置为不是 None 的内容,就像在您的示例中一样,您既有 if 语句也有 else 并且在这两部分你都将 command 变量设置为某些东西,所以你真的不需要将 command 设置为 None.

同样可以说 - args , mode .

虽然最好为 short_args, long_args 设置 None ,因为它们没有设置在 if 条件下,因此如果您遇到尝试使用的代码他们,如果他们没有被定义,你会得到 NameError.

您应该在需要时使用这样的赋值,例如当使变量落在适当的命名空间(范围)中有用时。 由于没有变量声明这样的东西,因此赋值也起到了指示类型的作用。 如果您要在任何可能的代码路径中进行分配,当然没有必要事先分配变量(if/else,如其他答案中所述)