相关疑难解决方法(0)

如何在f-string中使用换行符'\n'来格式化Python 3.6中的输出?

我想知道如何使用f-strings以Pythonic方式格式化这种情况:

names = ['Adam', 'Bob', 'Cyril']
text = f"Winners are:\n{'\n'.join(names)}"
print(text)
Run Code Online (Sandbox Code Playgroud)

问题是'\'不能在f-string中使用.预期产量:

Winners are:
Adam
Bob
Cyril
Run Code Online (Sandbox Code Playgroud)

python newline python-3.x python-3.6 f-string

57
推荐指数
5
解决办法
3万
查看次数

为什么f字符串比str()解析值快?

我正在玩f字符串(请参阅PEP 498),因此我决定检查f字符串解析(例如f“ {1}”)的速度与通常的str解析(例如str(1) ))。但是令我惊讶的是,当我使用timeit函数检查两种方法的速度时,我发现

>>> from timeit import timeit
>>> timeit("f'{1}'")
0.1678762999999961
Run Code Online (Sandbox Code Playgroud)

>>> timeit("str(1)")
0.3216999999999999
Run Code Online (Sandbox Code Playgroud)

甚至是repr func,在大多数情况下,它们都比str转换快

>>> timeit("repr(1)")
0.2528296999999995
Run Code Online (Sandbox Code Playgroud)

我不知道为什么呢?我以为f弦在内部调用了str,但是现在,我有点困惑了,有什么想法吗?提前致谢!

PD:就像有人想知道的那样:

assert f"{1}" == str(1) == repr(1)
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-internals python-3.6 f-string

8
推荐指数
1
解决办法
383
查看次数

我应该使用 f 弦吗?

这两个print语句产生相同的结果,至少对我来说,第一个版本看起来更具可读性。

我是否应该坚持使用该f'版本,因为它会在以后给我带来问题,或者导致性能更差,或者不遵循当前的 Python 标准?或者这只是这些版本之一的一致使用问题?

print('My first bicycle was a ' + bicycles[1])
print(f'My first bicycle was a {bicycles[1]})')
Run Code Online (Sandbox Code Playgroud)

python string python-3.x f-string

5
推荐指数
1
解决办法
4827
查看次数

在python日志记录中对字符串进行惰性求值:将`%`与`.format`进行比较

这两个电话之间有什么区别:

import logging

logging.getLogger().debug('test: %i' % 42)
Run Code Online (Sandbox Code Playgroud)

logging.getLogger().debug('test: {}'.format(42))
Run Code Online (Sandbox Code Playgroud)

我们假设42在被投射到字符串(例如750万年)时会被一些长计算所取代,产生最终答案为42.

在将日志记录设置为调试的情况下,是否对前一种方法进行了延迟评估?

python string logging

0
推荐指数
2
解决办法
993
查看次数