如何解决python,del或delattr哪个更好?
第一个比第二个更有效。 del foo.bar
编译成两条字节码指令:
2 0 LOAD_FAST 0 (foo)
3 DELETE_ATTR 0 (bar)
而delattr(foo, "bar")
需要五个:
2 0 LOAD_GLOBAL 0 (delattr)
3 LOAD_FAST 0 (foo)
6 LOAD_CONST 1 ('bar')
9 CALL_FUNCTION 2
12 POP_TOP
这意味着第一次运行的速度 稍 快(但在我的机器上并没有太大的差异——0.15 渭s)。
就像其他人所说的那样,当您要删除的属性是动态确定的时,您真的应该只使用第二种形式。
[编辑显示函数内部生成的字节码指令,编译器可以在其中使用LOAD_FAST
和LOAD_GLOBAL
]
解决方法
这可能很愚蠢,但它已经在我的大脑后面唠叨了一段时间。
Python 为我们提供了两种从对象中删除属性的内置方法, del 命令字和 delattr 内置函数。我更喜欢 delattr
,因为我认为它更明确一点:
del foo.bar
delattr(foo,"bar")
但我想知道它们之间是否存在内部差异。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。