一般建议:
- 避免不必要的类型检查,并依赖默认的异常行为。
has_key()
长期以来不建议in
使用运算符:请改用该运算符。- 简介你的程序,尝试任何性能优化之前。对于任何给定代码的零努力分析运行,只需运行:
python -m cProfile -s cumulative foo.py
具体要点:
list
成为一名优秀的堆栈开箱。特别是,它允许您使用 切片表示法 (教程)更换pop
/pop
/append
足下的舞蹈。ARITHMETIC_OPERATORS
可以直接引用操作员实现,而无需getattr
间接引用。
将所有这些放在一起:
ARITHMETIC_OPERATORS = { '+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.div, '%': operator.mod, '**': operator.pow, '//': operator.floordiv,}def postfix(expression, operators=ARITHMETIC_OPERATORS): stack = [] for val in expression.split(): if val in operators: f = operators[val] stack[-2:] = [f(*stack[-2:])] else: stack.append(int(val)) return stack.pop()


