Python 接受日期的字符串或整数

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:

在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:

        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