对于班级我正在从事翻译,目前正在研究扫描仪。作为一个将被多次调用的类,我希望它能够针对速度进行优化。在扫描仪中,要对操作员进行分类,您必须将当前令牌与6个左右的操作员进行比较。什么方法最适合速度,但也是为了便于阅读。
这是我能想到的唯一案例。哪个最好,或者如果你有更好的方法请分享。我实现了#2,因为它占用了最少的代码行。
答案 0 :(得分:1)
任何明智的手写扫描仪都基于switch语句。请注意,如果您将特殊字符直接返回给解析器,则可以节省案例操作:
# using the session to update
session.query(Category).filter_by(id=category.id).update({
"cat_name": category.id,
"assigned_user": category.assigned_user,
"includes": category.includes,
"excludes": category.excludes,
"parent_id": category.parent_id
})
# using the category object to edit, then commit
category_from_db = session.query(Category).filter_by(id=category.id).first()
category_from_db.cat_name = category_json['cat_name']
category_from_db.assigned_user = category_json['assigned_user']
category_from_db.excludes = category_json['excludes']
category_from_db.includes = category_json['includes']
category_from_db.parent_id = category_json['parent_id']
session.commit()
答案 1 :(得分:-1)
对于少数项目,差异很小。如果你有很多物品,你一定要使用开关。
如果交换机包含五个以上的项目,则使用查找表或哈希列表实现。这意味着与if
列表相比,所有项目都获得相同的访问时间,其中最后一个项目需要更长的时间才能到达,因为它必须首先评估每个先前的条件。
同样@Qix评论switch
它更具可读性。