相关疑难解决方法(0)

如何从函数返回多个值?

在支持它的语言中返回多个值的规范方法通常是tupling.

选项:使用元组

考虑这个简单的例子:

def f(x):
  y0 = x + 1
  y1 = x * 3
  y2 = y0 ** y3
  return (y0, y1, y2)
Run Code Online (Sandbox Code Playgroud)

但是,随着返回值的增加,这很快就会出现问题.如果您想要返回四个或五个值,该怎么办?当然,你可以保持它们的组合,但很容易忘记哪个值在哪里.在任何想要接收它们的地方解压缩它们也相当丑陋.

选项:使用字典

下一个合乎逻辑的步骤似乎是引入某种"记录符号".在python中,显而易见的方法是通过a dict.

考虑以下:

def g(x):
  y0 = x + 1
  y1 = x * 3
  y2 = y0 ** y3
  return {'y0': y0, 'y1': y1 ,'y2': y2}
Run Code Online (Sandbox Code Playgroud)

(编辑 - 要清楚,y0,y1和y2只是作为抽象标识符.正如所指出的,在实践中你会使用有意义的标识符)

现在,我们有一个机制,我们可以在其中投射返回对象的特定成员.例如,

result['y0']
Run Code Online (Sandbox Code Playgroud)

选项:使用课程

但是,还有另一种选择.我们可以返回一个专门的结构.我已经在Python的上下文中对此进行了构建,但我确信它也适用于其他语言.事实上,如果你在C工作,这可能是你唯一的选择.开始:

class ReturnValue:
  def __init__(self, y0, y1, y2):
     self.y0 = y0
     self.y1 = y1
     self.y2 = y2

def …
Run Code Online (Sandbox Code Playgroud)

python coding-style return return-value

1011
推荐指数
12
解决办法
111万
查看次数

如何从Python中的函数返回两个值?

我想从两个单独的变量中的函数返回两个值.例如:

def select_choice():
    loop = 1
    row = 0
    while loop == 1:
        print('''Choose from the following options?:
                 1. Row 1
                 2. Row 2
                 3. Row 3''')

        row = int(input("Which row would you like to move the card from?: "))
        if row == 1:
            i = 2
            card = list_a[-1]
        elif row == 2:
            i = 1
            card = list_b[-1]
        elif row == 3:
            i = 0
            card = list_c[-1]
        return i
        return card
Run Code Online (Sandbox Code Playgroud)

我希望能够分别使用这些值.当我尝试使用时return i, card,它返回一个tuple …

python return function list return-value

189
推荐指数
5
解决办法
40万
查看次数

函数返回多个值是pythonic吗?

在python中,您可以让函数返回多个值.这是一个人为的例子:

def divide(x, y):
    quotient = x/y
    remainder = x % y
    return quotient, remainder  

(q, r) = divide(22, 7)
Run Code Online (Sandbox Code Playgroud)

这似乎非常有用,但看起来它也可能被滥用("嗯......功能X已经计算出我们需要的中间值.让我们让X返回那个值").

你什么时候画线并定义一个不同的方法?

python function return-value multiple-return-values

80
推荐指数
3
解决办法
5万
查看次数

38
推荐指数
3
解决办法
12万
查看次数

验证和异常与错误消息元组

我正在研究验证功能.我理解异常用于错误和意外情况,但在验证函数的情况下,如果内部不满足条件,我希望它返回False而不是异常.

问题是在验证结束后,我需要用以下消息引发一个消息窗口:"Tool exited because X condition not met".我的工作流程是返回带有结果和消息的元组:

(True, Y_message)
Run Code Online (Sandbox Code Playgroud)

或(假,X_condition_not_met)

然后:

a, b = result
if not a:
    raise_window(message=b)
Run Code Online (Sandbox Code Playgroud)

然而,最近我偶然发现多个答案引发了关于这个问题的争议,我很困惑.例如,有些人说要总是使用异常:从Python中的函数返回多个值的最佳方法是什么?和其他人说元组是最好的方法在python中获得错误与成功的返回值.

如果有人能指出我正确的方向,我将不胜感激.

python tuples exception

1
推荐指数
1
解决办法
1529
查看次数