所以我试图做基于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
答案 0 :(得分:0)
argparse
解析sys.argv
,这是通过在命令行中运行脚本来初始化的,但是您是从iPython运行的,因此它将sub视为内置的运算符函数
您应该从命令行将其作为脚本运行,或者将args=parser.parse_args()
修改为:
args=parser.parse_args(['--x', '2', '--y', '4', '--operation', 'sub'])
如果您只想测试它而不从命令行运行脚本。