栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何推迟/推迟对f弦的评估?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何推迟/推迟对f弦的评估?

这是完整的“理想2”。

它不是f字符串,它甚至不使用f字符串,但可以按要求进行操作。语法完全符合规定。没有使用安全性,因为我们没有使用

eval()

它使用了一个小类并实现了

__str__
由print自动调用的类。为了逃避该类的有限范围,我们使用
inspect
模块向上跳一帧,并查看调用者可以访问的变量。

import inspectclass magic_fstring_function:    def __init__(self, payload):        self.payload = payload    def __str__(self):        vars = inspect.currentframe().f_back.f_globals.copy()        vars.update(inspect.currentframe().f_back.f_locals)        return self.payload.format(**vars)template = "The current name is {name}"template_a = magic_fstring_function(template)# use it inside a function to demonstrate it gets the scoping rightdef new_scope():    names = ["foo", "bar"]    for name in names:        print(template_a)new_scope()# The current name is foo# The current name is bar


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669286.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号