Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我是否可以避免将一堆变量设置为“无”,以便以后使用它们?_Python_Coding Style - Fatal编程技术网

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

我对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)
将所有这些变量设置为“无”似乎是非常简单和错误的,我相信一定有更干净的方法来做到这一点

我知道我可以做如下事情:

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标准库的一部分;所以我不认为它是“复杂的”: