【问题标题】:How to check whether function gets paramter or not如何检查函数是否获取参数
【发布时间】:2020-06-29 13:59:17
【问题描述】:

我想通过传递任何参数来检查用户是否调用了函数。

这是我的功能

def HEXtoRGB(hexlist):

    rgblist = []
    for i in range(len(hexlist)):
        h = hexlist[i].lstrip('#')
        rgb = tuple(int(h[i:i+2], 16) for i in (0, 2, 4))
        rgblist.append(rgb)

    return(rgblist)


print(HEXtoRGB())

HEXtoRGB()hexlist 作为参数。如果用户在没有参数的情况下调用HEXtoRGB() 函数,则应打印错误消息。 为此,我尝试在 python 中进行错误处理,但它不起作用

def HEXtoRGB(hexlist):

    try:
        rgblist = []
        for i in range(len(hexlist)):
            h = hexlist[i].lstrip('#')
            rgb = tuple(int(h[i:i+2], 16) for i in (0, 2, 4))
            rgblist.append(rgb)
    
        return(rgblist)
    except:
        print("Hex Color List Not Found")

print(HEXtoRGB())

上面的异常处理给了我同样的错误

  File "test.py", line 10, in <module>
    print(HEXtoRGB())
TypeError: HEXtoRGB() missing 1 required positional argument: 'hexlist'

有没有最好的方法来处理缺少参数的错误,以防用户调用没有参数的函数

【问题讨论】:

  • 您能否说明您要达到的目标? def HEXtoRGB(hexlist): 已经意味着 HEXtoRGB 必须 用参数调用,调用 HEXtoRGB() 是错误的——正如 TypeError 所示。你还想要什么其他行为?
  • 想处理类型错误,以便下次用户可以传递参数
  • 是用户错误调用HEXtoRGB他们必须处理。用户可以 已经处理了错误并在下次传递参数。如果HEXtoRGB 在内部处理错误,则用户不会立即收到通知表明他们做错了什么,并且可能会因错误的结果而跛行。您希望向用户呈现什么行为?
  • def HEXtoRGB(hexlist==None): 然后测试if not(hexlist)
  • 这能回答你的问题吗? Best way to check function arguments?

标签: python-3.x exception


【解决方案1】:

你可以给参数一个默认值,例如:

def HEXtoRGB(hexlist=None):
    if hexlist is None:
        print("Hex Color List Not Found")
    else:
        rgblist = []
        for i in range(len(hexlist)):
            h = hexlist[i].lstrip('#')
            rgb = tuple(int(h[i:i+2], 16) for i in (0, 2, 4))
            rgblist.append(rgb)
        return(rgblist)

print(HEXtoRGB())

请注意,None 在这种情况下将是返回值。您可能想要返回其他内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    相关资源
    最近更新 更多