4 ms·
> "My name is {name} and I am {age} years old".format(name=name, age=age) This is a textbook example of string interpolation. You can look it up on wikipedia.
by rantanplan 10y ago
> "My name is {name} and I am {age} years old".format(name=name, age=age)
This is a textbook example of string interpolation.
You can look it up on wikipedia. I am not sure what you mean.
- TAForObvReasons 10y agoThe wikipedia examples are somewhat misleading. The string "My name is {name} and I am {age} years old" is a plain string. By itself, there is no interpolation: >>> x = "My name is {name} and I am {age} years old" >>> x 'My name is {name} and I am {age} years old' The format function is what confers meaning. This is identical to a standard printf situation, wherein the string "%d %x" encodes a transformation but in and of itself isn't a transformation. Contrast with the proposal for f-strings: >>> x = f"My name is {name} and I am {age} years old" # this is an error unless name and age are defined The literal mandates a particular interpretation, and the f-string cannot exist outside of that in the same way that the standard string does. Or as the PEP puts it: > It should be noted that an f-string is really an expression evaluated at run time, not a constant value.
- rantanplan 10y agoBy itself there's no interpolation, which simply means it's not an expression. But when you do: "{foo} {bar}" % {"foo": "blah", "bar": "blooh"}, this is string interpolation. Is there a definition, anywhere(even a book would suffice), where it has your strict definition of what interpolation is? I'm not trying to undermine the usefulness of the interpolated expressions and what you said. I just really want to know if the definition is so strict. UPDATE: http://rosettacode.org/wiki/String_interpolation_(included) http://rosettacode.org/wiki/String_interpolation_(included) I think that you are the one who's making the definition so specific and strict. I can't find a single source on the Internet that agrees with your definition.
- actsasbuffoon 10y agoReading the text of the Wikipedia article, I think it does make a distinction between the two styles. string interpolation is the process of evaluating a string literal containing one or more placeholders, yielding a result in which the placeholders are replaced with their corresponding values. I read this as saying that the evaluation of the string literal yields a string where the substitution has already been made. That's not the case with the format style of "string interpolation." You provide a template string and call a function with some arguments, and that replaces the placeholders. The string literal does not handle the substitutions itself. I believe the Wikipedia article agrees that this is the deciding factor. A few sentences later, the article includes this statement: Some languages do not offer string interpolation, instead offering a standard function where one parameter is the printf format string, and other(s) provide the values for each placeholder. This sounds pretty similar to what was in Python prior to this release (especially if you know how methods work in Python). Also notice how the statement begins by saying that not all languages offer string interpolation. I think that's the final nail in the coffin of the argument. You could use virtually any language to write a function that handles substitutions in template strings. If that qualified as string interpolation then every language would have it. Since some languages do not, I think we can safely say that we're talking about a syntax feature.