我对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
但对于所有人来说,这似乎有点过头了。
或者这是否属于“明确比隐含更好”,我不应该担心太多?
答案 0 :(得分:0)
如果您确定在您的代码中将命令设置为None
以外的内容,就像在您的示例中一样,您同时拥有if
语句和else
两个部分您要将command
变量设置为某个值,因此您实际上不需要将command
设置为无。
同样可以说 - args
,mode
。
虽然为None
设置short_args, long_args
会更好,因为它们未设置在if
条件中,因此如果遇到尝试使用它们的代码,如果没有定义,你会得到NameError
。
答案 1 :(得分:0)
您应该在需要时使用此类作业,例如什么时候使变量落入适当的namespacw(范围)是有用的。 由于不存在变量声明,因此赋值也用于指示类型。 当然,如果要在任何可能的代码路径中执行此操作,则无需事先分配变量(如果/ else,则在其他答案中注明)