gpt4 book ai didi

python - 为什么可以在 Python 函数中使用超过 2 ^ 16 个常量?

转载 作者:太空狗 更新时间:2023-10-30 01:01:43 25 4
gpt4 key购买 nike

在内部模块中,如 peephole , LOAD_CONST 的参数存储在opcode之后的两个字节中.

例如,它用于获取操作参数的宏实现为:

#define GETARG(arr, i) ((int)((arr[i+2]<<8) + arr[i+1]))

LOAD_CONST 的参数是 consts 的索引数组。

所以我猜也许我们最多只能在 Python 函数中使用 2 ^ 16 个常量。

但是当我试验一个使用 66666 (> 65536) 个常量的函数时,它仍然可以正常运行。

可能是什么原因?

最佳答案

来自dis文档:

EXTENDED_ARG(ext)

Prefixes any opcode which has an argument too big tofit into the default two bytes. ext holds two additional bytes which,taken together with the subsequent opcode’s argument, comprise afour-byte argument, ext being the two most-significant bytes.

如果操作码需要超过 2 个字节的参数,则 EXTENDED_ARG 操作码会提供多 2 个字节的参数。

关于python - 为什么可以在 Python 函数中使用超过 2 ^ 16 个常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23039803/

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