+ 1

Why is there 2 methods for string formatting with different sets of format characters?

Case 1 : Method 1 print("{0:b}".format(15)) Output: 1111 Case 1 : Method 2 print("%b"%(15)) ValueError: unsupported format character 'b' Case 2 : Method 1 print("%c"%('a')) Output: a Case 2 : Method 2 print("{0:c}".format('a')) ValueError: unknown format code 'i' for object of type 'int'

11th Jan 2017, 2:45 AM
Arun Manoharan
Arun Manoharan - avatar
7 Réponses
+ 7
As of Python 3.6 there are more three ways to do string formatting. They added f"{my_value}". It works the same as the format method but is more succinct. To answer your question though, the format method was added because it's a bit more useful and has a couple more features than the older method ("%d" % num). The older method was meant to be more compatible with C style string formatting. The new method was added to make string formatting cleaner and keep the language competitive. The reason all three exist is because removing features is challenging. When you remove something everyone has to update their code and that is a challenge.
11th Jan 2017, 3:39 AM
James Durand
James Durand - avatar
+ 2
my_var = 9001 f"my power level is {my_var}"
11th Jan 2017, 1:42 PM
James Durand
James Durand - avatar
+ 1
what's the 3rd method?
11th Jan 2017, 7:55 AM
Arun Manoharan
Arun Manoharan - avatar
+ 1
@Arun, it only works in Python 3.6 and higher
15th Jan 2017, 3:09 PM
James Durand
James Durand - avatar
0
What's the third method
14th Jan 2017, 12:09 AM
sean
0
See my previous comment for the third method...
14th Jan 2017, 12:16 AM
James Durand
James Durand - avatar
0
x = 2 y = 3 z = 2 + 3 ## Method 1 print("Sum of: %i + %i = %i"%(x,y,z)) ## Method 2 print("Sum of: {} + {} = {}".format(x,y,z)) ## Method 3 print(f"Sum of: {x} + {y} = {z}") Output for 1st 2 Methods: Sum of: 2 + 3 = 5 Sum of: 2 + 3 = 5 For Method 3: I'm getting invalid syntax @james am I missing something in method 3?
15th Jan 2017, 8:06 AM
Arun Manoharan
Arun Manoharan - avatar