Format strings vs concatenation

前端 未结 7 633
天命终不由人
天命终不由人 2020-11-28 09:18

I see many people using format strings like this:

root = \"sample\"
output = \"output\"
path = \"{}/{}\".format(root, output)

Instead of si

相关标签:
7条回答
  • 2020-11-28 09:56

    It's just for the looks. You can see at one glance what the format is. Many of us like readability better than micro-optimization.

    Let's see what IPython's %timeit says:

    Python 3.7.2 (default, Jan  3 2019, 02:55:40)
    IPython 5.8.0
    Intel(R) Core(TM) i5-4590T CPU @ 2.00GHz
    
    In [1]: %timeit root = "sample"; output = "output"; path = "{}/{}".format(root, output)
    The slowest run took 12.44 times longer than the fastest. This could mean that an intermediate result is being cached.
    1000000 loops, best of 5: 223 ns per loop
    
    In [2]: %timeit root = "sample"; output = "output"; path = root + '/' + output
    The slowest run took 13.82 times longer than the fastest. This could mean that an intermediate result is being cached.
    10000000 loops, best of 5: 101 ns per loop
    
    In [3]: %timeit root = "sample"; output = "output"; path = "%s/%s" % (root, output)
    The slowest run took 27.97 times longer than the fastest. This could mean that an intermediate result is being cached.
    10000000 loops, best of 5: 155 ns per loop
    
    In [4]: %timeit root = "sample"; output = "output"; path = f"{root}/{output}"
    The slowest run took 19.52 times longer than the fastest. This could mean that an intermediate result is being cached.
    10000000 loops, best of 5: 77.8 ns per loop
    
    0 讨论(0)
提交回复
热议问题