Python:是否可以按要求返回可变数量的变量?

Python:是否可以按要求返回可变数量的变量?,第1张

概述我想为 python(3.x)中的函数返回一个或两个变量.理想情况下,这取决于用户在函数调用时请求的返回变量的数量.例如,max()函数默认返回最大值,并且可以返回argmax.在python中,这看起来像: maximum = max(array)maximum, index = max(array) 我目前用额外的参数return_arg解决这个问题: import numpy as np 我想为 python(3.x)中的函数返回一个或两个变量.理想情况下,这取决于用户在函数调用时请求的返回变量的数量.例如,max()函数默认返回最大值,并且可以返回argmax.在python中,这看起来像:

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:是否可以按要求返回可变数量的变量?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存