背景

我是python的新手,我正在编写一个简单的函数,但是我也对学习以正确的/ pythonic方式做事感兴趣,这是我前进的道路。

让我们考虑下面的功能

def test_func(nested_lists,val):


    return


我期待两个论点。一个参数是包含更多列表的列表。像这样的[[1,2,3,],[4,5,6,] ...]。第二个参数可以是类似1的值。

如果有人说,例如传入一个值作为第一个参数,将数组作为第二个参数。我的代码目前正在返回正确的输出0,但是还有另一种方法可以处理此问题吗?

例如我应该做这样的事情

if(type(value) == list):
   return 0


还是我不需要做任何事情,因为我的函数无论如何都会返回0。

我知道这可能是一个非常基本的问题,所以请原谅我,但是来自Java背景,我是python的新手,所以我不确定如何在python中处理此类情况。

最佳答案

另一个答案说明了事先检查可以预见的问题的正确方法。我将提供另一种方法。

python中的惯用解决方案是“请求宽恕,而不是许可”。有很多事情可能出错,而其他语言可能会要求您预见所有这些问题并手动解决它们,而python鼓励在发生问题时立即对其进行处理。我建议您这样做:

def test_func(nested_lists, val):
    try:
        ...
    except TypeError:
        # do whatever error-handling behavior you need to
        # either throw a custom exception or return a specific value or whatever
        return 0


然后以如下方式设计代码,如果nested_listsvalues不是兼容类型,则它们抛出TypeError(例如,如果nested_lists不是列表,则尝试遍历nested_lists将会失败。您可以在python控制台中尝试这种行为,但是通常情况下,尝试对不正确的变量(因为其类型不正确)执行某些操作会产生TypeError)。

关于python - 如何在python中处理意外的参数类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58420544/

10-10 00:56
查看更多