2024-03-29 10:56:46 发布
网友
从Python3.6开始,将值格式化为字符串的最短、最高效的方法是PEP 498 f-strings(例如f'Hello {name}')。在
f'Hello {name}'
将旧格式类型('Hello %s' % name,'Hello {}'.format(name))转换为现有代码库中的新格式类型似乎是一项可以自动完成的任务,但是我找不到任何工具来执行此任务。有没有工具可以自动将使用旧字符串格式的文字转换成f字符串?在
'Hello %s' % name
'Hello {}'.format(name)
看起来pyupgrade既能将%格式转换为format调用,又能将format调用转换为f字符串
%
format
printf-style string formattingAvailability:Unless keep-percent-format is passed.'%s %s' % (a, b) # '{} {}'.format(a, b) '%r %2f' % (a, b) # '{!r} {:2f}'.format(a, b) '%(a)s %(b)s' % {'a': 1, 'b': 2} # '{a} {b}'.format(a=1, b=2)
Availability:
Unless keep-percent-format is passed.
keep-percent-format
'%s %s' % (a, b) # '{} {}'.format(a, b) '%r %2f' % (a, b) # '{!r} {:2f}'.format(a, b) '%(a)s %(b)s' % {'a': 1, 'b': 2} # '{a} {b}'.format(a=1, b=2)
f-stringsAvailability: py36-plus is passed on the commandline.'{foo} {bar}'.format(foo=foo, bar=bar) # f'{foo} {bar}' '{} {}'.format(foo, bar) # f'{foo} {bar}' '{} {}'.format(foo.bar, baz.womp} # f'{foo.bar} {baz.womp}'
py36-plus is passed on the commandline.
py36-plus
'{foo} {bar}'.format(foo=foo, bar=bar) # f'{foo} {bar}' '{} {}'.format(foo, bar) # f'{foo} {bar}' '{} {}'.format(foo.bar, baz.womp} # f'{foo.bar} {baz.womp}'
注意:pyupgrade是故意的,如果它会使表达式变长,或者如果替换参数不是简单名称或虚线名称(因为这会降低可读性),则不会创建f字符串。在
可以使用flynt将多个python文件转换为使用f字符串。在
要运行它,您需要一个python3.6+解释器。那么,它很简单:
pip install flynt flynt [relative or absolute path to the root of your project]
请记住,它会在适当的位置更改文件,因此建议将这些文件提交到您首选的git或SVC系统。在
下面是一篇文章,描述了f字符串的优缺点:
https://medium.com/@ikamenshchikov/f-strings-make-your-python-code-faster-and-more-readable-today-579ef9ca0313
免责声明:我是flynt软件包的作者。在
看起来pyupgrade既能将
%
格式转换为format
调用,又能将format
调用转换为f字符串注意:pyupgrade是故意的,如果它会使表达式变长,或者如果替换参数不是简单名称或虚线名称(因为这会降低可读性),则不会创建f字符串。在
可以使用flynt将多个python文件转换为使用f字符串。在
要运行它,您需要一个python3.6+解释器。那么,它很简单:
请记住,它会在适当的位置更改文件,因此建议将这些文件提交到您首选的git或SVC系统。在
下面是一篇文章,描述了f字符串的优缺点:
免责声明:我是flynt软件包的作者。在
相关问题 更多 >
编程相关推荐