gpt4 book ai didi

python - 在 python 中,哪种使用变量的方式在速度、cpu、内存等方面更有效?

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:03 25 4
gpt4 key购买 nike

假设我们有一个函数想要对 objA 的属性 z 进行一些操作。 objA 是 objB 的一个属性,objB 是 objC 的一个属性等等……这两种方法中哪一种更快?有区别吗?

方法 1:对函数中的每个语句使用 objC.objB.objA.z

方法 2:在函数 as 中分配一个像 x 这样的局部变量:

x=objC.objB.objA.z

然后对 x 进行操作,然后将输出分配给首选变量。

我知道方法 2 在编写实际代码方面更容易,但定义新变量不会占用更多内存吗?哪种方法更 pythonic,除了上述方法之外,还有其他(更好的)方法来做事吗?

最佳答案

方法 2 通常会更快,但除非它处于紧密循环中,否则可能不会有明显差异。

每次执行 a.b.c.d 时,Python 都必须查找这些属性的值,即使它们在两次使用之间没有变化。如果您为该值创建一次变量 x,那么 Python 只需查找一次属性,从而节省时间。

x = a.b.c.d 不会创建一个新对象,因此它不使用任何内存。 x 将是对 a.b.c.d 指向的同一对象的引用。但是,正因为如此,您确实需要小心。任何改变 x 的操作都会影响原始对象。例如,如果 a.b.c.d 是一个列表,而您执行 x = a.b.c.d,那么 x.append(1) 将改变原始 a.b.c.d 对象。如果这是你想要的,那就太好了。如果不是,请务必明确复制该值。

关于python - 在 python 中,哪种使用变量的方式在速度、cpu、内存等方面更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16029600/

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