python – 嵌套字符串文字插值是否可行?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 嵌套字符串文字插值是否可行?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1210字,纯文字阅读大概需要2分钟。
内容图文
![python – 嵌套字符串文字插值是否可行?](/upload/InfoBanner/zyjiaocheng/806/42910aa8e16a40dabbe0bff416bf02e1.jpg)
使用formatted string literal时,可以在某种程度上嵌套f字符串.
a = 3
b = 7
res = f"{f'{a*b}'}"
print(res) # '21'
但是,如果内部表达式是包含字符串的变量,则同样不起作用.
a = 3
b = 7
expr = 'a*b'
res = f"{f'{expr}'}"
print(res) # 'a*b'
有没有办法使这个工作,并使第二个输出也是’21’?如果没有,阻止它的第一个和第二个字符串之间有什么区别?
解决方法:
我认为,当调用每个表达式时,看看实际发生的事情会很有帮助.
F “{F ‘{A * B}’}”
def om1(a, b):
return f"{f'{a*b}'}"
dis.dis(om1)
2 0 LOAD_FAST 0 (a)
2 LOAD_FAST 1 (b)
4 BINARY_MULTIPLY
6 FORMAT_VALUE 0
8 FORMAT_VALUE 0
10 RETURN_VALUE
外部f-string遇到它计算的表达式,内部f-string也找到它计算的表达式,这导致对BINARY_MULTIPLY的调用
F “{F ‘{expr}的’}”
def om2(a, b):
expr = 'a*b'
return f"{f'{expr}'}"
dis.dis(om2)
2 0 LOAD_CONST 1 ('a*b')
2 STORE_FAST 2 (expr)
3 4 LOAD_FAST 2 (expr)
6 FORMAT_VALUE 0
8 FORMAT_VALUE 0
10 RETURN_VALUE
这里,第一个f-string遇到一个表达式并对其进行求值,而内部f-string遇到一个字符串,导致调用LOAD_FAST而不是将字符串的内容作为Python代码进行评估.
此外,在第二个示例中还要注意缺少对a和b的LOAD_FAST调用,这些调用存在于第一个示例中.
内容总结
以上是互联网集市为您收集整理的python – 嵌套字符串文字插值是否可行?全部内容,希望文章能够帮你解决python – 嵌套字符串文字插值是否可行?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。