我可以避免将一堆变量设置为None,这样我以后可以使用它们吗?

时间:2015-06-23 04:06:20

标签: python coding-style

我对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

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

或者这是否属于“明确比隐含更好”,我不应该担心太多?

2 个答案:

答案 0 :(得分:0)

如果您确定在您的代码中将命令设置为None以外的内容,就像在您的示例中一样,您同时拥有if语句和else两个部分您要将command变量设置为某个值,因此您实际上不需要将command设置为无。

同样可以说 - argsmode

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

答案 1 :(得分:0)

您应该在需要时使用此类作业,例如什么时候使变量落入适当的namespacw(范围)是有用的。 由于不存在变量声明,因此赋值也用于指示类型。 当然,如果要在任何可能的代码路径中执行此操作,则无需事先分配变量(如果/ else,则在其他答案中注明)