如何测试您的函数是否正在获取 [1,2,4,3]
或 l
?
这可能有助于决定是否要返回(例如)有序列表或就地替换它。
例如,如果它获取[1,2,4,3]
,则应返回[1,2,3,4]
。如果它得到 l
,它应该将有序列表链接到 l
并且不返回任何内容。
最佳答案
你无法以任何合理的方式区分差异;您可以使用 gc 模块来计算引用数,但这不是一个合理的方法。匿名对象和命名变量之间没有区别(除了引用计数),因为无论函数何时接收到它,它都会被命名; “变量”并不是真正的东西,Python 有引用对象的“名称”,而对象完全不关心它是否具有命名引用或未命名引用。
制定一致的 API。如果您需要让它以两种方式运行,要么让它做两件事(就地变异并返回变异副本以获得完整性),要么创建两个不同的 API(其中一个可以根据另一个来编写,方法是让变异版本用于通过制作参数的本地副本,将其传递给变异版本,然后返回变异的本地副本来实现返回新版本。
关于python-3.x - 在Python中,如何知道函数正在获取变量还是对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557376/