Python f-strings are kinda cool
python·@imwatsi·
0.000 HBDPython f-strings are kinda cool
 --- Python has a number of methods you can use to format strings, so you can include variables in them. I recently started using f-strings and I must admit that I love how they "naturally" fit into the code line. What do I mean by naturally? Well, they don't interupt the flow. All the other methods add extra stuff to the line of code that's handling this formatting. Let's say I have four variables, let's call them: `current = 4` `total = 20` `message = 'log_4.txt'` `elapsed = 15` Let's say there is a process that will take about `60` seconds to complete, where it has to process a total of `20` files and display the progress on the terminal. To have the above state displayed on the terminal, we would need to see something like this (simplified snapshot, to not include a loop): `Processing file 4 of 20 (log_4.txt). Time elapsed: 15 seconds.` To format this in code, without f strings, we could use: **%s and %d formatting:** `print('Processing file %d of %d (%s). Time elapsed: %d seconds.' %(current, total, message, elapsed))` --- **.format method:** This is really no different (visually) from %s formatting though. `print('Processing file {} of {} ({}). Time elapsed: {} seconds.'.format(current, total, message, elapsed))` --- ### Now, for the fun part... <br> **The slick f-string:** `print(f'Processing file {current} of {total} ({message}). Time elapsed: {elapsed} seconds.')` --- F-strings are a lot neater and more readable. They remind me of string formatting used in Kotlin. Of course, you can use `%f` to do `%.<number of digits>f` to fix decimal digits and other various things; but there are also other ways to enforce that in the code preceding that statement, which might ultimately look better. I guess all methods have their place. It depends on preference, appropriateness and convenience I would say, but I'll probably be using f-strings more.