【问题标题】:Python return for another functionPython 返回另一个函数
【发布时间】:2020-03-27 04:39:47
【问题描述】:

我正在使用 PyOpenGL,我想制作小型 RGB 转换器功能。 用于颜色的 PyOpenGL 使用从 0 到 1 的浮点数。 所以 0 0 0 - 黑色 1 1 1 - 白色。 我做这个:

def RGB(Red, Green, Blue):
    Red = 1 / 255 * Red
    Green = 1 / 255 * Green
    Blue = 1 / 255 * Blue
    return Red, Green, Blue

我是这样使用他的:

glClearColor(RGB(255, 255, 255), 1)

但我得到错误:

this function takes 4 arguments (2 given)

我不明白如何返回多个参数

【问题讨论】:

  • glClearColor(*RGB(255, 255, 255), 1)
  • 为什么不把 RGB 放在一边,把它的返回值放在 3 个变量中,然后将这 3 个变量传递给 glClearColor? (R, G, B = RGB(255, 255, 255),然后是glClearColor(R, G, B, 1)

标签: python return pyopengl


【解决方案1】:

您的函数 glClearColor 需要 4 个参数,您传递了两个:元组和整数。

你想用* 操作符解压元组:

def RGB(Red, Green, Blue):
    Red = 1 / 255 * Red
    Green = 1 / 255 * Green
    Blue = 1 / 255 * Blue
    return Red, Green, Blue

def glClearColor(a, b, c, d):
    print(a, b, c, d)

glClearColor(*RGB(255, 255, 255), 1)
# 1.0 1.0 1.0 1

【讨论】:

    【解决方案2】:

    问题不在于您的RGB 函数,而在于您如何调用glClearColor

    您的 RGB 函数返回一个 3 元组,这意味着 glClearColor(RGB(255, 255, 255), 1) 使用元组和 1 调用 glClearColor(2 个参数,如错误所示)。

    您可以使用 * 将 3 元组扩展为 3 个单独的参数:

    glClearColor(*RGB(255, 255, 255), 1)
    

    这种方式 glClearColor 被分别调用元组的每个元素 + 1(总共 4 个参数)。

    相当于:

    r, g, b = RGB(255, 255, 255)
    glClearColor(r, g, b, 1)
    

    【讨论】:

      【解决方案3】:

      你的函数RGB返回元组(1.0, 1.0, 1.0)你可以使用asterisk(*) operator来解压它,就像glClearColor(*RGB(255, 255, 255), 1)这样。

      【讨论】:

        猜你喜欢
        • 2010-09-15
        • 2017-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-16
        • 1970-01-01
        • 2021-11-02
        • 1970-01-01
        相关资源
        最近更新 更多