gpt4 book ai didi

python - python 中 .format 的局限性

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:12 28 4
gpt4 key购买 nike

所以我对 Python 相当陌生,我相信这会变得很明显。无论如何,使用 .format 时我可以传递的参数数量是否有限制?我有一个包含 8000 个数字的列表,需要在输入的各个位置替换长输入中的现有数字。目前,我正计划这样做:

text = """ very long input with many {0}..{1}..{8000} in various places """
file = open('new_input', 'w')
file.write(text.format(x,x1,x2,....x8000))

如有任何建议,我们将不胜感激!

最佳答案

As wim notes ,你可以通过参数解包来做到这一点,但如果你实际上将它们作为单独的命名参数按位置传递,它就不起作用;有 255 个明确提供的单个参数的限制。

演示:

>>> globals().update(('x{}'.format(i), i) for i in range(8000))
>>> codestr = '("{{}}"*8000).format({})'.format(', '.join('x{}'.format(i) for i in range(8000)))
>>> eval(codestr)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
SyntaxError: more than 255 arguments

限制是由于 CALL_FUNCTION 操作码是如何定义的;它被编码为指示操作码的单个字节,然后一个字节表示位置参数的数量,一个字节表示关键字参数的数量。虽然理论上它可以处理多达 510 个参数,但它们实际上强加了 255 个参数的组合限制,大概是为了保持一致性。因此,如果不涉及 *** 解包,您实际上无法调用总参数超过 255 个的函数。

顺便说一句,这在技术上都是一个实现细节;没有语言要求它以这种方式工作,因此它可能会在 CPython 的 future 版本(引用解释器)中发生变化,并且现在在任何其他解释器(其中大多数不生成或使用 CPython 字节码)中表现不同。

关于python - python 中 .format 的局限性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36345279/

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