【发布时间】:2020-01-03 11:37:28
【问题描述】:
基本上foo() 期望的参数应该作为int 传递,但也有可能有人将它作为str 传递(如果str 可以转换为int 也有效) .这是我想出的:
def foo(input_argument):
func_name = 'foo'
if type(input_argument) is not int or type(input_argument) is not str:
print(
'%s: "input_argument" expects int/str, not %s' % (
func_name,
type(input_argument)
)
)
return None
try:
input_argument= int(input_argument)
except:
print(
'%s: "input_argument" expects number in str/int format' % func_name
)
return None
是否有内置的东西可以以更 Python 的方式简化它?
编辑:布尔类型应被视为无效
【问题讨论】:
-
坦率地说,我只是将其简化为
input_argument = int(input_argument)。如果它已经是一个 int,那么这是一个空操作,如果可能,解析一个字符串,如果它是一个字符串但不能解析为一个 int,则抛出一个 ValueError,或者抛出一个 TypeError。而且你几乎不应该使用裸露的except:。 -
@jonrsharpe 也许我应该说 True 也不是有效的输入参数类型
-
为什么不是?
-
嗯,从技术上讲是这样,但从“功能性”的角度来看,它不是
-
为什么这个问题被标记为python-2.7?
标签: python python-2.7