【发布时间】:2018-05-20 00:03:52
【问题描述】:
我有一个关于性能的问题。
如果我将一个可变对象传递给一个函数并对该对象进行更改,我知道在 python 中它会更改值,并且所有指针都将指向已更改的值。
但是编写代码的正确方法是什么?
我是否应该使用return 语句并重新分配指向函数输出的指针,以向读取代码的人显示正在更改的代码?
如果将指针分配到它已经指向的同一内存,对性能的影响有多大?
谢谢!
【问题讨论】:
标签: python python-3.x
我有一个关于性能的问题。
如果我将一个可变对象传递给一个函数并对该对象进行更改,我知道在 python 中它会更改值,并且所有指针都将指向已更改的值。
但是编写代码的正确方法是什么?
我是否应该使用return 语句并重新分配指向函数输出的指针,以向读取代码的人显示正在更改的代码?
如果将指针分配到它已经指向的同一内存,对性能的影响有多大?
谢谢!
【问题讨论】:
标签: python python-3.x
是否应该使用 return 语句并重新分配指向函数输出的指针,以向读取代码的人显示它正在被更改?
不,那会让它更加混乱。如果你要改变一个对象,你应该让它变得明显,并且让它变得明显的一部分是不返回相同的对象。以现有的 Python API 为灵感:
>>> import random
>>> a = [1, 2, 3]
>>> random.shuffle(a)
random.shuffle 没有返回任何东西,所以它唯一能做的就是将列表随机播放。
性能在这里无关紧要。
【讨论】:
a) 对性能没有显着影响。
b) 如果你的函数接受一个对象并改变它,这是一个副作用,因此你不应该return那个对象。这会造成混淆和误导,因为它暗示输入与输出不同。
c) 如果您认为应该编写无用的代码,只是为了向代码的读者提供信息,请改用 cmets。
【讨论】: