python-3.x - 在Python中,如何知道函数正在获取变量还是对象?

标签 python-3.x

如何测试您的函数是否正在获取 [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/

相关文章:

python - 每次求和通过某个阈值时如何重新采样?

python - 如何使用电机干净地关闭更改流?

python - 从 pandas 系列对象获取值

python - 交换嵌套字典的键

python - 美国人口普查 API - 使用 Python 获取一个州内每个城市的人口

python - 将 Pandas 数据框转换为 float

python-3.x - 无法通过api访问dockerized python azure函数?

python-3.x - 如何将 tf.estimator 转换为 keras 模型?

python - 程序类卡住/空闲,并且在 Anaconda/命令行提示符中第一次调用后不执行剩余调用,但在 Spyder 中工作

python - 您可以在列表上使用 Filter() 函数从更大的列表中创建新列表吗?