背景
我是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_lists
和values
不是兼容类型,则它们抛出TypeError
(例如,如果nested_lists
不是列表,则尝试遍历nested_lists
将会失败。您可以在python控制台中尝试这种行为,但是通常情况下,尝试对不正确的变量(因为其类型不正确)执行某些操作会产生TypeError)。关于python - 如何在python中处理意外的参数类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58420544/