python条件类型转换

python条件类型转换,python,types,casting,try-catch,Python,Types,Casting,Try Catch,我试图确保用户参数是某种类型的,当使用->python script.py argv1 argv2 argv3等从cmd行运行脚本时 其思想是,如果用户只输入2个cmd行参数,arg_列表中的其余变量将默认。我想确保他们输入的是正确的类型 下面是一个模拟的情况,我有。当if条件失败时,它没有被except块拾取(有没有办法解决这个问题??)实际上有更多的变量,所以为每个if子句尝试except是不实际的 arg1 = 3.14 arg2 = "Default 1" arg3 = "Default

我试图确保用户参数是某种类型的,当使用->python script.py argv1 argv2 argv3等从cmd行运行脚本时

其思想是,如果用户只输入2个cmd行参数,arg_列表中的其余变量将默认。我想确保他们输入的是正确的类型

下面是一个模拟的情况,我有。当if条件失败时,它没有被except块拾取(有没有办法解决这个问题??)实际上有更多的变量,所以为每个if子句尝试except是不实际的

arg1 = 3.14
arg2 = "Default 1"
arg3 = "Default 2"
arg4 = True
arg_list = [arg1, arg2, arg3, arg4]

for i in range(1, len(sys.argv)):

    try:
        if i==1:
            arg_list[i-1] = float(sys.argv[i])
        elif i==2 or i==3:
            arg_list[i-1] = str(sys.argv[i])
        else i==4:
            arg_list[i-1] = bool(sys.argv[i])

    except TypeError as e:
        # do stuff
任何帮助都会很好,谢谢

typelist = [float, str, str, bool]

for i, item in enumerate(sys.argv[1:]):
    assert type(item) == typelist[i]