On 25May2022 00:13, Kevin M. Wilson <kevinmwilson1...@yahoo.com> wrote: >Cameron, I have a misunderstanding here, the 'f-string' is used when >the str() is not...isn't it!
No, f-strings (format strings) are just a convenient way to embed values in a string. The result is a string. In days of yore the common formatting method was the % operator like C's printf() format. You could do stuff like this: print("%s: length is %d items" % (thing, len(thing))) which would print something like: Thing5: length is 12 items Ignore the print() itself, that's just how you might use this: format a string with 2 values, then print it out for a person to read. You can do various things with %-formatting, but it is pretty limited and a bit prone to pairing things up incorrectly (human error making the "(thing, len(thing,len(thing)))" tuple) because those values are separates from the string itself. The funky new thing is format strings, where you can write: print(f"{thing}: length is {len(thing)} items") Again ignore the print(), we're really just interested in the expression: f"{thing}: length is {len(thing)} items" which does the same thing as the %-format earlier, but more readably and conveniently. I suspect you think they have another purpose. Whereas I suspect you're actaully trying to do something inappropriate for a number. If you've come here from another language such as PHP you might expect to go: print(some_number + some_string) In Python you need compatible types - so many accidents come from mixing stuff up. You may know that print()'s operation is to take each expression you give it and call str() on that value, then print that string. f-strings have a similar operation: each {expression} inside one is converted to a string for embedding in the larger format string; that is also done with str() unless you've added something special in the {} part. Aside from output you should not expect to be adding strings and numbers; - it isn't normally a sensible thing to do. And when printing things, you need text (strings). But print() takes can of that by passing every value to str(), which returns a string (in a manner appropriate to the type of value). You only want f-strings or manual joining up if you don't want the default separator between items (a space). Can you elaborate on _why_ you wanted an f-string? What were you doing at the time? Cheers, Cameron Simpson <c...@cskk.id.au> -- https://mail.python.org/mailman/listinfo/python-list