Python 接受日期的字符串或整数
在python中,如何检查我传入函数的参数是整数、字符串还是日期 My函数可以接受字符串或整数作为日期:Python 接受日期的字符串或整数,python,Python,在python中,如何检查我传入函数的参数是整数、字符串还是日期 My函数可以接受字符串或整数作为日期: def check(self, dat1): # print(self.path) # dat1 = raw_input("data = ") print(type(dat1)) try: datetime.datetime.strptime(dat1, '%Y-%m-%d') except ValueError:
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()
而不是参数。方法datetime.datetime.strtime()
的第一个参数必须是字符串。您将向其传递一个整数,这意味着将引发TypeError
也捕获该异常,而不仅仅是ValueError
(如果传入正确的类型但无法解析字符串,则会引发该异常):
您可以尝试使用
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结构来引发适当的异常
>>> 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