On 04/02/2018 08:28 AM, Peter Otten wrote: > Steven D'Aprano wrote: > >> On Mon, Apr 02, 2018 at 06:49:52AM -0600, Mats Wichmann wrote: > >>> so since we're all learning things here, how would this play out with >>> the new f-strings? >> >> I don't think f-strings are even a bit Pythonic. >> >> They look like string constants, but they're actually a hidden call to >> eval(). > > But because you cannot f-ify a string variable (without an additional eval() > call) you aren't tempted to feed them user-provided data. > >> They can only be used once, and are not re-usable (unlike proper >> templates): > > You can't eat your cake an have it. As "proper templates" they would indeed > be as dangerous as eval(). > >> By my count, they violate at least three of the Zen of Python: >> >> Explicit is better than implicit. >> Simple is better than complex. >> Special cases aren't special enough to break the rules. > > As I'm getting tired of writing > > "...{foo}...{bar}...".format(foo=foo, bar=bar, ...) > > lately I'd say they win big in the "practicality beats you-name-it" area.
so swooping back to the origial code, it seems there are several options for expressing the output. Picking one of the lines (and replacing the writes to a file with prints for simplicity): print("Date: {}-{}-{} {}:{}\n".format(now.year, now.month, now.day, now.hour, now.minute)) print("Date:", format(now, "%Y-%m-%d %H:%M")) print(f"Date: {now:%Y-%m-%d %H:%M}") those aren't exactly identical, since the using %m-%d form causes zero-padding: Date: 2018-4-2 10:23 Date: 2018-04-02 10:23 Date: 2018-04-02 10:23 For me, I don't know if the f-string version is the most Pythonic, but it has an appealing conciseness in this particular context :) _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor