gpt4 book ai didi

python - 是否可以像使用字符串和格式一样重用f字符串?

转载 作者:行者123 更新时间:2023-12-04 12:53:09 25 4
gpt4 key购买 nike

我想创建一个f-string,它可以与format一起用作以下代码:

TEXT_AMOUNT = 'text {amount}'


def f1(beginning):
return beginning + TEXT_AMOUNT.format(amount=10)


def f2(ending):
return TEXT_AMOUNT.format(amount=100) + ending

如何使用f字符串实现相同的功能?我试过了:
TEXT_AMOUNT = f'text {amount}'


def f1(beginning):
amount = 100
return beginning + TEXT_AMOUNT


def f2(ending):
amount = 10
return TEXT_AMOUNT + ending

但是,出现以下错误:

NameError: name 'amount' is not defined

最佳答案

你不能

f字符串不是一种字符串,它是一种字符串文字,将立即对其求值。您不能将f字符串存储在变量中以供日后评估,也不能接受用户的字符串,等等。1这是它们安全的唯一原因。

那么,如果您确实想多次使用一种格式(或从用户那里获取一种格式,等等)怎么办?您使用str.format

有时,您需要以与f字符串相同的方式捕获所有本地和全局变量,但是要显式地进行捕获。因为这是一种罕见的情况(并且可能是安全漏洞),所以它故意有点丑陋:

TEXT_AMOUNT = 'text {amount}'

def f1(beginning):
amount = 100
return beginning + TEXT_AMOUNT.format(**locals(), **globals())

这使您考虑正在编写的内容—您真的不需要在这里使用 globals,对吗?因此,请不要使用它。而且它还向读者发出信号-如果您输入 locals,他们将希望看到字符串在您的源中确实是一个常量,没有做任何危险的事情。

1.好吧,您可以在传递给 eval的字符串中使用f字符串…但这是一个糟糕的主意。

关于python - 是否可以像使用字符串和格式一样重用f字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52248776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com