在Python 2.7中编写模块时,我需要一种方法来执行
name = "Rodrigo"
age = 34
print f"Hello {name}, your age is {age}".format()
虽然我知道我可以这样做:
print "Hello {name}, your age is {age}".format(name=name, age=age)
format()
会查看变量name
和age
的范围,将它们转换为字符串(如果可能)并粘贴到消息中。我发现这已经在Python 3.6+中实现,名为 Formatted String Literals 。所以,如果有人为Python 2.7做了类似的事情,我想知道(无法找到谷歌搜索)
答案 0 :(得分:3)
您可以通过在字符串上组合内置locals
函数和format
方法来尝试 hackish 做事方式:
foo = "asd"
bar = "ghi"
print("{foo} and {bar}".format(**locals())
答案 1 :(得分:1)
这是一个自动插入变量的实现。请注意,它不支持python 3 f-strings所具有的任何更高级功能(如属性访问):
import inspect
def fformat(string):
caller_frame = inspect.currentframe().f_back
names = dict(caller_frame.f_globals, **caller_frame.f_locals)
del caller_frame
return string.format(**names)
a = 1
foo = 'bar'
print fformat('hello {a} {foo}')
# output: "hello 1 bar"