Python 我是否可以避免将一堆变量设置为“无”,以便以后使用它们?
我对Python有点陌生,最近我发现自己编写的代码如下:Python 我是否可以避免将一堆变量设置为“无”,以便以后使用它们?,python,coding-style,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 = 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)
将所有这些变量设置为“无”似乎是非常简单和错误的,我相信一定有更干净的方法来做到这一点
我知道我可以做如下事情:
command = sys.argv[2] if sys.argv[1] == 's' else None
但对他们所有人来说,这似乎有点过头了
或者这属于“显式优于隐式”,我不应该太担心它吗?如果您确定命令在代码中设置为非
None
,如您的示例所示,您既有if
语句,也有else
语句,并且在这两部分中,您都将命令
变量设置为某个值,因此确实不需要将命令
设置为无
关于-args
,模式
也可以这样说
虽然最好为
短参数和长参数设置None
,因为它们不是在if
条件下设置的,因此如果遇到试图使用它们的代码,如果没有定义它们,您将得到namererror
,如果您确定命令将在代码中设置为非None
,就像在您的示例中一样,您有if
语句和else
,并且在这两部分您都将命令
变量设置为某个值,因此,您确实不需要将命令设置为None
关于-args
,模式
也可以这样说
虽然最好为短参数、长参数设置None
,因为它们不是在if
条件下设置的,因此如果您遇到试图使用它们的代码,并且如果它们没有定义,您将得到namererror您应该在需要时使用这样的赋值,例如,将变量放入适当的名称空间(范围)是有用的。
由于不存在变量声明,赋值也用于指示类型。
当然,如果您要在任何可能的代码路径中指定变量(如果/否则,如另一个答案中所述)您应该在需要时使用这种指定,例如,当使变量位于适当的名称空间(范围)中很有用时。
由于不存在变量声明,赋值也用于指示类型。
当然,如果您要在任何可能的代码路径中指定变量,那么没有必要预先指定变量(if/else,如另一个答案中所述)你为什么不使用?@JamesMills我真的不需要它。我不想使用你的CLI工具:)可用性。@JamesMills对于一个简单的工具,你不需要引入复杂的库:)简单比复杂好。argparse是python标准库的一部分;所以我不认为它是“复杂的”:)你为什么不使用?@JamesMills我真的不需要它。我不想使用你的CLI工具:)可用性。@JamesMills对于一个简单的工具,你不需要引入复杂的库:)simple比complex好。argparse是python标准库的一部分;所以我不认为它是“复杂的”: