How to make argparse accept "-4^2+5.3*abs(-2-1)/2" string argument?

Jach Feng jfong at ms4.hinet.net
Wed Jan 25 01:28:58 EST 2023


Chris Angelico 在 2023年1月25日 星期三下午1:16:25 [UTC+8] 的信中寫道:
> On Wed, 25 Jan 2023 at 14:42, Jach Feng <jf... at ms4.hinet.net> wrote: 
> > I was happy working with argparse during implement my script. To save the typing, I used a default equation for testing. 
> > 
> > sample = "-4^2+5.3*abs(-2-1)/2, abs(Abc)*(B+C)/D, (-3) * sqrt(1-(x1/7)*(y1/7)) * sqrt(abs((x0-4.5)/(y0-4)))" 
> > parser = argparse.ArgumentParser(description='Convert infix notation to postfix') 
> > parser.add_argument('infix', nargs='?', default=sample, help="....") 
> >
> You're still not really using argparse as an argument parser. Why not 
> just do your own -h checking? Stop trying to use argparse for what 
> it's not designed for, and then wondering why it isn't doing what you 
> expect it to magically know. 
> 
> ChrisA
I just don't get what you mean?

> You're still not really using argparse as an argument parser. Why not just do your own -h checking?

Is a math equation not qualified as a command line "argument"? What criteria do you use when judging the quality of an "argument"?

> Stop trying to use argparse for what it's not designed for,

Even the author considers a positional argument begin with '-' is a legal argument. Below is a quote from its manual.

"If you have positional arguments that must begin with - and don’t look like negative numbers, you can insert the pseudo-argument '--' which tells parse_args() that everything after that is a positional argument"

> and then wondering why it isn't doing what you expect it to magically know."

I don't expect magic, I expect the consistency of a parser.


More information about the Python-list mailing list