1

假设我必须将一行拆分为一个键和一个值,并将其放入dict被调用的props. 让分隔符为=。我可以这样做:

props[line.partition('=')[0]] = line.partition('=')[2]

或这个:

splits = line.partition('=')
props[splits[0]] = splits[2]

第一种形式是对字符串进行两次分区还是将其优化为只进行一次?我想它是依赖于实现的,但是常见的实现会这样做吗(CPython Jython,IronPython)?我知道这是过早的优化。我是python新手,我只是好奇。

4

2 回答 2

3

在第一种情况下,字符串被拆分两次。

作为一种动态语言,Python 不能确定该line值是不可变的,并且该.partition()方法每次都会返回相同的结果。它别无选择,只能line.partition('=')每次执行。

于 2013-08-02T13:17:54.547 回答
0

Python 字节码编译器/解释器非常简单(我敢说,原始的)并且除了一些非常基本的常量折叠和如果被要求抛出断言之外不执行任何优化。当然,您没有常见的子表达式消除通行证。

于 2013-08-02T13:27:46.107 回答