【发布时间】:2017-08-17 15:45:36
【问题描述】:
我想使用传递给format 方法的变量计算 f 字符串中的数学运算。例如我需要类似的东西:
print(f"{{a}} * 3".format(a=2))
此代码打印:
2 * 3
但我想要的结果是 6。我也不会使用 python eval 函数来评估这个字符串。
【问题讨论】:
我想使用传递给format 方法的变量计算 f 字符串中的数学运算。例如我需要类似的东西:
print(f"{{a}} * 3".format(a=2))
此代码打印:
2 * 3
但我想要的结果是 6。我也不会使用 python eval 函数来评估这个字符串。
【问题讨论】:
如PEP 498所述:
str.format()“表达式解析器”不适合在实现 f 字符串时使用。
虽然你可以这样做:
name = "John"
age = 30
print(f'My name is {{0}} and I am 5 years older than {age - 5}'.format(name))
您在原始问题中要求的内容不可行。
您还可以阅读this Reddit thread 了解为什么这可能是个坏主意。
【讨论】:
print(f"{a * 3}".format(a=2))。 +1
您还需要将3 放在花括号中:
>>> a = 2
>>> print(f"{a * 3}")
6
>>>
【讨论】:
str.format 方法。此外,您从未明确表示您必须使用str.format 方法。下次请在问题中说明您的所有要求。
print(f"{a * 3}".format(a=2)) 确实有效,但 f 弦的用途是什么?
print(f"{a * 3}".format(a=2)) 引发NameError: name 'a' is not defined。
你可以试试这个。
print((int(f"{{a}}".format(a=2)))*3)
【讨论】:
eval(或int或float for ...)函数!