3 ms·
Python added "f strings" recently (read: in 2015)[1], which look like f"{some_var}" which evaluates "some_var" in the local scope. Sort of like Ruby's "#{
by cyphar 9y ago
Python added "f strings" recently (read: in 2015)[1], which look like
f"{some_var}"
which evaluates "some_var" in the local scope. Sort of like Ruby's "#{...}" (if I'm remembering that syntax correctly). Rust supports named parameters in format strings[2] but that's not quite the same.
[1]: https://www.python.org/dev/peps/pep-0498/ https://www.python.org/dev/peps/pep-0498/
[2]: https://doc.rust-lang.org/std/fmt/#named-parameters https://doc.rust-lang.org/std/fmt/#named-parameters
- vog 9y agoNote that you can do this in old version of Python, too, using the "format-locals" idiom: some_var = ... "{some_var}".format(**locals()) Although this does have some limitations regarding variables to strictly being in the local scope, this is a fine idiom if you need to be compatible with older Python versions.
- cyphar 9y agoThat is a bit of a hack though ;). You could also do it with %-style formatting as well: some_var = ... "%(some_var)s" % locals() If you want to do both locals and globals you can do: some_var = ... "%(some_var)s" % dict(globals(), **locals()) New Python versions (>=3.5) have this syntax: "%(some_var)s" % {**globals(), **locals()} But those versions also have f-strings so that's sort of moot.