选择 2-3 个选项作为函数参数的 Pythonic 方式

新手上路,请多包涵

我有一个 Python 函数,它需要一些参数,其中之一是要执行的模拟类型。例如,选项可以是“solar”、“view”或“both.

允许用户设置这些的 Pythonic 方法是什么?

我可以看到各种选项:

  1. 使用字符串变量并检查它 - 所以它将是 func(a, b, c, type='solar')

  2. 在类中设置一些常量并使用 func(a, b, c, type=classname.SOLAR)

  3. 如果只有两个选项(就像我的一些函数一样),通过使用诸如 func(a, b, c, do_solar=False) 之类的东西来强制它进入 True/False 参数,让它使用“view”选项。

对 Pythonic 方式的任何偏好(或其他想法)?

原文由 robintw 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 442
1 个回答

如果 Niklas 在 他的回答 中提出的观点不成立,我会使用字符串参数。标准库中有使用类似参数的 Python 模块。例如 csv.reader()

 sim_func(a, b, c, sim_type='solar')

请记住在函数内部给出一个合理的错误,这可以帮助人们在输入错误的内容时解决问题。

 def sim_func(a, b, c, sim_type='solar'):
    sim_types = ['solar', 'view', 'both']
    if sim_type not in sim_types:
        raise ValueError("Invalid sim type. Expected one of: %s" % sim_types)
    ...

原文由 Steven T. Snyder 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题