键入检查python?

时间:2013-02-12 17:52:33

标签: python

有没有办法从用户输入检查它是什么类型?并做这样的事情:

if input == str:
   do this
elif input == int:
   do this
else:
   do this

5 个答案:

答案 0 :(得分:5)

您可以使用isinstance来检查某些内容的类型 - 但您可能真的不想这样做...

这也很大程度上取决于您如何从用户那里获得输入。如果您使用的是raw_input,那么它始终是一个字符串,您需要try将其转换为您想要的任何类型:

try:
   x = int(input):
except ValueError:
   try:
       x = float(input):
   except ValueError:
       print "No recognizable type!"

python的一个基本原则是鸭子打字。如果一个物体看起来像一只鸭子,听起来像一只鸭子,闻起来像一只鸭子,那么它就是一只鸭子(前提是你只关心物体的外观,气味和声音)。最终,在python中,最好try看看它是否是“鸭子”。如果它不是鸭子,那么你捕获异常并处理它(如果你知道如何)。这是您没有看到人们在代码中使用isinstance的主要原因以及我警告不要使用它的主要原因。

答案 1 :(得分:1)

如果您的意思是键盘输入,那么所有输入都是一个字符串。即使用户输入类似“88”的数字,结果也是字符串"88"而不是整数88。但是,您可以使用此模式来判断字符串是否包含数字,而不是其他内容:

if input.isdigit():
    print "input is a number"
else:
    print "input is not a number"

更好的是将输入转换为数字,这将处理注释中提到的“50.0”或“-10”之类的输入(如果小数有效,则使用float()或Decimal()而不是int ()这里):

try:
    number = int(input)
except ValueError:
    print "input is not a number"

如果您不是指键盘输入,那么有多种方法可以检查类型,但一般来说,最好的办法是简单地使用输入,就像它有效一样,并捕获将出现的异常无效。这样,您可以根据对象的实际方法和属性来定义输入要求,而不仅仅是它的名义类(这是“鸭子打字”)。

答案 2 :(得分:1)

您可以使用isinstance http://docs.python.org/2/library/functions.html#isinstance

例如

isinstance('hello', str)

返回 True

答案 3 :(得分:0)

我认为你正在寻找isinstance


你打败了我,但是我的链接:

http://docs.python.org/2/library/functions.html#isinstance


顺便说一句,我一直在试驾PyCharm IDE,如果您在代码中assert isinstance(),他们会自动为您进行类型检查,然后进行自动完成。它还允许您在docstring中指定类型参数。然后,它使用此类型信息来帮助您完成自动完成。非常方便......

答案 4 :(得分:0)

isinstance(input, type)

type内置函数也可以这样做,但建议使用isinstance()内置函数来测试对象的类型。