type . - , . nargs* , , .
Pythonic ( ) - . argparse simulation.
, , ( ):
parser = argparse.ArgumentParser()
parser.add_argument("--sample", type=int, action='append')
parser.add_argument("--sample-differently", action="store_true")
parser.add_argument("--sample-objects", nargs="*", action="append")
args = parser.parse_args()
--sample, --sample-objects True/False --sample-differently.
simulation ( ):
alist = []
if args.sample_differently:
alist.append(Simulation.sample_differently())
for i in args.sample:
alist.append(Simulation.sample(range(i)))
for i in args.sample_objects:
def foo(i):
res = []
for j in i:
try:
j = int(j)
except ValueError:
pass
res.append(j)
return res
alist.append(Simulation.sample(foo(i))
, alist .
Action, Simulation.sample. values, namespace. , .
===============
'-samples-objects':
def intorstr(astr):
try:
astr = int(astr)
except ValueError:
pass
return astr
class SamplesAction(argparse._AppendAction):
def __call__(self, parser, namespace, values, option_string=None):
values = Simulation.sample(values)
items = _copy.copy(_ensure_value(namespace, self.dest, []))
items.append(values)
setattr(namespace, self.dest, items)
parser.add_argument("--sample-objects", nargs="*",
action=SamplesAction, dest="sample", type=intorstr)
, lambda simulation: simulation..... , , . lambdas .