argparse时无法分配给运算符

时间:2018-07-03 18:56:28

标签: python-3.x

所以我试图做基于argparse的项目。实际上,我将所有代码复制自下面的senddex,后者在Youtube上有一个频道。      但是由于某种原因,我的代码无法正常工作,而他的代码确实可以工作。      如果有人帮助我,我会很高兴,因为这很生气)

import argparse
import sys

def main():
    parser=argparse.ArgumentParser()
    parser.add_argument('--x', type=float,default=1.0,
                        help='What is the first number?')
    parser.add_argument('--y', type=float,default=1.0,
                        help='What is the second number?')
    parser.add_argument('--operation', type=str,default='sub',
                        help='What operation? (add, sub, )')
    args=parser.parse_args()
    sys.stdout.write(str(calc(args)))

def calc(args):
    operation=args.operation
    x = args.x
    y = args.y
    if operation == 'add':
        return x + y
    elif operation == 'sub':
        return x - y
if __name__ =='__main__':
    main()
#console:

--x=2 --y=4 --operation=sub
 File "<ipython-input-1-f108b29d54dc>", line 1
   --x=2 --y=4 --operation=sub
                           ^
 SyntaxError: can't assign to operator

1 个答案:

答案 0 :(得分:0)

argparse解析sys.argv,这是通过在命令行中运行脚本来初始化的,但是您是从iPython运行的,因此它将sub视为内置的运算符函数

您应该从命令行将其作为脚本运行,或者将args=parser.parse_args()修改为:

args=parser.parse_args(['--x', '2', '--y', '4', '--operation', 'sub'])

如果您只想测试它而不从命令行运行脚本。