我的Python项目能够在两个不同的目的地上执行操作,让他们称之为SF和LA。哪种方法更好?
选项A:
destinations.py
LA = 1
SF = 2
example_operation.py
import destinations
run_operation(destination=destinations.LA)
def run_operation(destination):
assert destination in [destinations.LA, destinations.SF]
...
OR
选项B:
example_operation.py
run_operation(destination='LA')
def run_operation(destination):
assert destination in ['LA', 'SF']
...
我意识到我也可以使用字典或许多其他方法来实现这一目标。我想知道哪种是宣布和验证这些内容的最佳做法。
答案 0 :(得分:0)
由于它非常主观,我会避免评论哪种方式会更好。您可以尝试从性能点争论(整数比字符串快,但变量查找比常量慢?),或者从代码完成视图(编辑器可以自动完成变量)或可扩展性(您可以轻松使用新的字符串,但最后,它并不重要:它主要是个人偏好。
然而,我想要评论的是验证问题:如何验证这些参数?我通常的回答是:不要。
Python通常在没有很多故障保险的情况下使用。例如,Python没有真正的私有成员,并且stdlib的大部分甚至没有完全隐藏其内部。如果你愿意,你可以使用那些内部,搞乱所有的东西 - 但如果出现问题,那就是你的问题。通常情况下,您只希望用户正确使用您的代码:如果他们传递了您的函数不期望的参数,那么,某些东西将会失败。当然,进行某种验证并不坏,但通常不需要在任何地方放置断言。