f-String在Python 3.6登场时,多数人以为只是比.format()少敲几个字符的语法糖。九年过去,这串看似简单的f"..."里,其实塞着不少官方文档没大声嚷嚷的功能。
比如调试时的自我暴露。写f"{user=}"会自动展开成user='alice',等于把print(user)和print(f'user={user}')拧成了一股绳。再比如嵌套格式化:f"{value:{width}.{precision}}"能把变量塞进格式字符串本身,动态控制小数点位数,报表生成时少写半页代码。
日期格式化也有捷径。datetime对象直接丢进f-String会吐出一串乱码,但f"{now:%Y-%m-%d}"能当场切成可读格式,省掉strftime的括号地狱。更隐蔽的是引号嵌套——外层双引号时内层可用单引号,反过来也行,甚至三引号里能直接塞多行文本,JSON拼接时不用再数反斜杠。
文档里还埋着几个冷僻玩法:用!r强制repr()输出、用!s强制str()、用!a强制ascii(),以及用=同时打印表达式和结果。这些符号在PEP 498里躺了九年,Stack Overflow上关于它们的提问,回复数往往是个位数。
Reddit上有个高赞评论:「我用Python写了八年,今天才知道f-String能这么玩。」这条帖子下面,自称senior dev的回复占了一半。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.