如何检查我在函数中传递的参数是否是python中的整数,字符串或日期?
我的函数可以接受字符串或整数作为日期:
def check(self, dat1):
# print(self.path)
# dat1 = raw_input("data = ")
print(type(dat1))
try:
datetime.datetime.strptime(dat1, '%Y-%m-%d')
except ValueError:
try:
int(dat1)
except ValueError:
print("str it is")
else:
print(dat1)
rand1 = random.randint(int(dat1) - (int(dat1) % 7), int(dat1) + (int(dat1) % 7))
print(rand1)
return rand1
else:
print("date it is")
check(100)
当我传入一个整数时,我收到这样的错误:
datetime.datetime.strptime(dat1, '%Y-%m-%d')
TypeError: must be string, not int
我知道有一个类似的问题,但它适用于raw_input()
而不适用于参数。
答案 0 :(得分:2)
datetime.datetime.strptime()
方法的第一个参数必须是一个字符串。您传递的是整数,这意味着会引发TypeError
。
也抓住那个异常,而不仅仅是ValueError
(如果传入正确的类型但是无法解析字符串,则抛出该异常):
try:
datetime.datetime.strptime(dat1, '%Y-%m-%d')
except (ValueError, TypeError):
答案 1 :(得分:0)
您可以尝试使用isinstance
>>> my_str = "Foo"
>>> isinstance(my_str, str)
True
>>> my_int = 1234
>>> isinstance(my_int, int)
True
>>> my_date = datetime.date.today()
>>> isinstance(my_date, datetime.date)
True
# Assuming you used "import datetime" at the top of your file
然后,您可以使用if-elif结构来引发适当的异常。