maximum = max(array)maximum,index = max(array)
我目前用额外的参数return_arg解决这个问题:
import numpy as npdef 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)
都会按预期工作.
总结以上是内存溢出为你收集整理的Python:是否可以按要求返回可变数量的变量?全部内容,希望文章能够帮你解决Python:是否可以按要求返回可变数量的变量?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)