syntax difference

Cameron Simpson cs at cskk.id.au
Sat Jun 16 18:55:35 EDT 2018


On 16Jun2018 12:01, Sharan Basappa <sharan.basappa at gmail.com> wrote:
>Is there a difference between these prints. The first one looks a bit complex. So, why should it be used?
>
>my_age = 35 # not a lie
>
>print "my age %s." % my_age
>print "my age ", my_age
>
>Output:
>%run "D:/Projects/Initiatives/machine learning/programs/five.py"
>my age 35.
>my age  35

In case nobody else notices, the reason the second one has 2 spaces before "35" 
is that print puts a space between items. So you have a space from the "my age 
" and also a space from the item separation. The first print statement is only 
printing one item.

Regarding which style to use: the latter is better because it is more readable.  
The former can be better when constructing a string with several values where 
you want more control and better readablility _for the message as a whole_.

Consider:

  # variables, just to make the examples work
  # in a real programme perhaps these came from
  # some more complex earlier stuff
  name = "Sharon"
  age = 35
  print "The person named %r is %d years old." % (name, age)

versus:

  name = "Sharon"
  age = 35
  print "The person named", repr(name), "is", age, "years old."

I'd be inclined to prefer the former one because I can see the shape of the 
message.

Also, I notice you're using Python 2 (from the print syntax). In Python 3 we 
have "format strings", which let you write:

  name = "Sharon"
  age = 35
  print(f"The person named {name|r} is {age} years old.")

Win win!

Cheers,
Cameron Simpson <cs at cskk.id.au>



More information about the Python-list mailing list