@soraros
Mojo 目前缺乏与 Python 等效的数据类型,这可能是由于对特征的持续研究。 存在替代方案,例如 ,但尚未与该机制集成。 因此,依赖构造函数(类似于 Python 的)仍然是必要的。list
DynamicVector
List
Literal
list()
也就是说,我认为这是 Python 中的一种反模式。 因为 确实是一个通常绑定到 的动态变量,所以 Python 会生成一个额外的变量,因此生成的字节码会稍差一些。 我不认为它会极大地影响你的Python代码的实际性能,这只是一个很好的了解。 由于同样的原因,有一些轻微的开销。list()
list
buildins.list
LOAD_GLOBAL
dict
from dis import dis
def f():
l = []
def g():
l = list()
print('f:')
dis(f)
print('g:')
dis(g)
Result:
f:
3 0 RESUME 0
4 2 BUILD_LIST 0
4 STORE_FAST 0 (l)
6 LOAD_CONST 0 (None)
8 RETURN_VALUE
g:
6 0 RESUME 0
7 2 LOAD_GLOBAL 1 (NULL + list)
14 PRECALL 0
18 CALL 0
28 STORE_FAST 0 (l)
30 LOAD_CONST 0 (None)
32 RETURN_VALUE
在 Mojo 中不会观察到类似的开销(至少在运行时),因为它是编译的并且名称是静态解析的。