【问题标题】:Can I avoid setting a bunch of variables to None just so I can use them later?我可以避免将一堆变量设置为 None 以便我以后可以使用它们吗?
【发布时间】:2015-06-23 04:06:20
【问题描述】:

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

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

或者这属于“显式优于隐式”,我不应该太担心?

【问题讨论】:

  • 你为什么不用argparse?
  • @JamesMills 我真的不需要它。
  • 我不想使用你的 CLI 工具 :) 可用性。
  • @JamesMills 对于一个简单的工具,您不需要引入复杂的库:) 简单胜于复杂。
  • argparse 是 python 标准库的一部分;所以我不认为它是*复杂的”:)

标签: python coding-style


【解决方案1】:

您应该在需要时使用这样的分配,例如当使变量落在适当的名称空间(范围)内很有用时。 由于没有变量声明之类的东西,赋值也用于指示类型的目的。 如果您要在任何可能的代码路径中进行分配(如果/否则,如另一个答案中所述),当然没有必要事先分配变量

【讨论】:

    【解决方案2】:

    如果您确定该命令将在您的代码中设置为不是 None 的内容,例如在您的示例中,您同时拥有 if 语句和 else 并且在这两部分中您都在设置 @987654324 @ 变量,所以你真的不需要将command 设置为无。

    关于args,mode也可以这样说。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 2019-01-10
      • 2014-11-08
      相关资源
      最近更新 更多