Python:是否可以按要求返回可变数量的变量?
发布时间:2020-12-20 11:07:37 所属栏目:Python 来源:网络整理
导读:我想为 python(3.x)中的函数返回一个或两个变量.理想情况下,这取决于用户在函数调用时请求的返回变量的数量.例如,max()函数默认返回最大值,并且可以返回argmax.在python中,这看起来像: maximum = max(array)maximum,index = max(array) 我目前用额外的参数r
我想为
python(3.x)中的函数返回一个或两个变量.理想情况下,这取决于用户在函数调用时请求的返回变量的数量.例如,max()函数默认返回最大值,并且可以返回argmax.在python中,这看起来像:
maximum = max(array) maximum,index = max(array) 我目前用额外的参数return_arg解决这个问题: import numpy as np def my_max(array,return_arg=False): maximum = np.max(array) if return_arg: index = np.argmax(array) return maximum,index else: return maximum 这样,第一个代码块看起来像这样: maximum = my_max(array) maximum,index = my_max(array,return_arg=True) 有没有办法避免额外的争论?也许测试用户期望的多少个vaules?我知道你可以在调用时返回一个元组并解压缩(这就是我正在做的事情). 假设我正在执行的实际功能是这种行为有意义的功能. 解决方法
您可以返回一个int子类(或float,具体取决于您要处理的数据类型)的实例,它具有一个额外的索引属性,并在序列上下文中使用时返回两个项的迭代器:
class int_with_index(int): def __new__(cls,value,index): return super(int_with_index,cls).__new__(cls,value) def __init__(self,index): super().__init__() self.index = index def __iter__(self): return iter((self,self.index)) def my_max(array,return_arg=False): maximum = np.max(array) index = np.argmax(array) return int_with_index(maximum,index) 以便: maximum = my_max(array) maximum,index = my_max(array) 都会按预期工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |