'%smoney( '$ , and as usuala simple function like this can be applied in more advanced contexts toosuch as the iteration tools we met in and will study fully in later [commas(xfor in ( )[' , , '' , , ''% %stuple(commas(xfor in ( )' , , , , 'join(commas(xfor in ( )' , , , , for better or worsepython developers often seem to prefer adding special-case built-in tools over general development techniques-- tradeoff explored in the next section why the format methodnow that 've gone to such lengths to compare and contrast the two formatting techniquesi wish to also explain why you still might want to consider using the format method variant at times in shortalthough the formatting method can sometimes require more codeit alsohas handful of extra features not found in the expression itself (though can use alternativeshas more flexible value reference syntax (though it may be overkilland often has equivalentscan make substitution value references more explicit (though this is now optionaltrades an operator for more mnemonic method name (though this is also more verbosedoes not allow different syntax for single and multiple values (though practice suggests this is trivialas function can be used in places an expression cannot (though one-line function renders this mootalthough both techniques are available today and the formatting expression is still widely usedthe format method might eventually grow in popularity and may receive more attention from python developers in the future furtherwith both the expression and method in the languageeither may appear in code you will encounter so it behooves you to understand both but because the choice is currently still yours to make in new codelet' briefly expand on the tradeoffs before closing the book on this topic extra featuresspecial-case "batteriesversus general techniques the method call supports few extras that the expression does notsuch as binary type codes and (as of python and thousands groupings as we've seenthoughthe string fundamentals