gpt4 book ai didi

python - 在行延续中混合普通字符串和 f 字符串

转载 作者:行者123 更新时间:2023-12-02 00:55:10 26 4
gpt4 key购买 nike

可以像这样混合普通字符串和新的 f-string 吗:

import timeit

format = """
def format(name, age):
return (
f'He said his name is '
f'{name} and he is '
f'{age} years old.'
)
""", """
def format(name, age):
return (
'He said his name is '
f'{name} and he is '
f'{age} years old.'
)
"""

test = """
def test():
for name in ('Fred', 'Barney', 'Gary', 'Rock', 'Perry', 'Jackie'):
for age in range (20, 200):
format(name, age)
"""

for fmt in format:
print(timeit.timeit('test()', fmt + test, number=10000))

[out]:
3.4188902939995387
3.3931472289996236

这可以使用吗,或者混合普通弦和 f 弦不被认为是最佳做法?

最佳答案

这里没有意见的问题是它是什么平均值 到“编译时连接”格式化字符串“文字”真正是运行时表达式?语言引用仅says that you can .

实验 dis表明即使是一个单独的 f 字符串也被分解为间隙字符串文字和格式化表达式(编译为新的 FORMAT_VALUE 操作码,而不是变成对 str.format 左右的调用)。每个 f 字符串都以这种方式处理 单独 (在串联之前,所以 f"{x" f"}" 是无效的)。由这种分解产生的前缀和后缀字符串文字(如果有)然后与相邻的普通字符串文字(或由相邻 f 字符串产生的字符串文字)连接。最后,同样新的 BUILD_STRING操作码用于有效地连接片段。请注意,这意味着您的两个 format函数编译为 相同 字节码和任何时间差异只是噪音。

从这个(实现者)的角度来看,规则是显而易见的;从用户的角度来看,格式化发生,直观地,只在 f"…" 内部发生。 .是否写是一个品味问题f"v={{{x},{y}}}\n""v={" f"{x},{y}" "}\n" ,但我当然可以想到后者更可取的情况。如果人们对语义有疑问,只要你愿意指出这个问题,我会说这足以使 半意见回答“是的,没关系”。

关于python - 在行延续中混合普通字符串和 f 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54823506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com