使语句(如果尝试)较短

时间:2018-07-11 10:51:34

标签: python refactoring command-line-arguments

我在脚本开头有以下代码块:

try:
    sys.argv[3]
except Exception:
    print(use)
    sys.exit()

if int(sys.argv[2]) > 4:
    print 'works'
    sys.exit()
else:
    print(use)
    sys.exit()

我会进行检查,但是您会发现它看起来并不漂亮,因为重复了“ print(use); sys.exit()”部分。有什么方法可以使它更短更美丽吗?

5 个答案:

答案 0 :(得分:2)

您可以使用argparse免费获得所有这些功能:

from argparse import ArgumentParser, ArgumentTypeError

def greater_than_4(string):
    value = int(string)
    if value <= 4:
        raise ArgumentTypeError('%r must be greater than 4' % string)
    return value

parser = ArgumentParser()
parser.add_argument('first', type=greater_than_4)
parser.add_argument('second')
args = parser.parse_args()

print 'works'

答案 1 :(得分:1)

也许是吗?

try:
    sys.argv[3]
    if int(sys.argv[2]) > 4:
        print 'works'
    else
        raise ValueException("Incorrect parameter passed")
except Exception:
    print(use)
finally:
    sys.exit()

答案 2 :(得分:1)

我将为此创建一个函数

Found value: #
Found value: !
Found value: #
Found value: %
Found value: ,

然后您可以执行以下操作:

def report_and_quit(message=''):
    print(message)
    sys.exit()

答案 3 :(得分:1)

try:
    x = int(sys.argv[2])
    assert x > 4
    y = sys.argv[3]
except Exception:
    print(use)
    sys.exit()

print('works')

答案 4 :(得分:0)

怎么样?

def tmp(use):
    print(use)
    sys.exit()

try:
    sys.argv[3]
except Exception:
    tmp(use)

if int(sys.argv[2]) > 4:
    print 'works'
    sys.exit()
else:
    tmp(use)