【问题标题】:pythonic way: vars in dictpythonic方式:dict中的vars
【发布时间】:2013-11-04 10:32:08
【问题描述】:

各位 Python 程序员,

在我的脚本中,我有一些设置变量,它们由函数生成并在字典中返回。 这些设置变量被传递给几个函数。我正在尝试编写易于阅读的代码,所以我想知道您更喜欢哪种表示法?

def fooA(a,b,c):
    return a+b+c

def fooB(D,c):
    return D['a']+D['b']+c


settings = { 'a':1, 'b':2 }
c = 3

print fooA(settings['a'],settings['b'],c)
print fooB(settings,c)

或者您认为最好的方法是不要将设置变量包装在字典中?

【问题讨论】:

  • 您不应该使用set 作为变量名。它将覆盖内置。
  • @Tim:当然,我改变了我的例子!

标签: python notation


【解决方案1】:

我当然不是 Pythonic 专家,但我认为这很糟糕。

使用一个对象,或a named tuple,或其他东西。在我看来,字典访问语法对于设置之类的东西不是很好。

【讨论】:

    【解决方案2】:

    在字典中存储实际上是键值对的设置是绝对可以的(这可能是实现这一点的最佳方式)。正如您在示例中所示,您的代码变得更短且更易于理解。

    Django 将其设置存储在字典中。

    mod_wsgi 将请求环境(标头)存储在字典中,实际上是设置。

    os.environ 是一个字典。

    【讨论】:

      【解决方案3】:

      使用 dict 或类似 dict 的对象进行设置是可以的(您可能想要使用一些自定义的不可变的类似 dict 的对象,但无论如何......),就像任何自定义“设置”对象 FWIW 一样(提示: Python 对象大多是美化的 dicts...)。

      wrt/ 你的函数调用,没有一刀切的答案。第一个版本“更好”,因为它更加解耦(不依赖于您的设置,不假设定义了哪些设置等)并且更明确,但是有些代码确实与应用程序的设置相关联,然后它可能会传递整个“设置”字典或对象或提供检索它的方法更有意义。

      【讨论】:

        【解决方案4】:

        我认为字典没问题,如果您想将设置写入人类可读的文件,您可以使用标准库中的 configparser:http://docs.python.org/2/library/configparser.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-03-17
          • 2021-12-28
          • 2020-09-07
          • 2023-03-21
          • 1970-01-01
          • 2019-01-25
          • 2018-06-02
          • 1970-01-01
          相关资源
          最近更新 更多