【发布时间】:2015-12-25 18:14:45
【问题描述】:
在我的函数中,我期待一个可能是tuple 或str 的参数。作为 Python 新手,我了解到“请求宽恕”比“请求许可”要好。因此,我不检查参数的类型,而是这样做:
def f(a):
try: # to handle as tuple
e1, e2, e3 = a
...
except ValueError: # unpacking failed, so must be a string.
pass
# handle as string
但是,这并不总是有效。如果a 是长度为3 的str 怎么办?代码会将其视为元组。
在这种情况下我该怎么办?求助于类型检查?它不那么“Pythonic”吗?请解释最“Pythonic”的解决方案以及为什么会这样。
【问题讨论】:
-
参数是用户输入的吗?可能有比在函数内部更好的检查格式的地方。
-
重要的是,您使用具有两种不同参数类型的同一个函数吗?
-
我建议使用
isinstance()而不是type()stackoverflow.com/questions/1549801/… -
使用关键字参数并接受两个不同的参数?
-
你会拆分字符串最终得到一个元组吗?
标签: python exception coding-style