2014-12-29 11 views
7

czytałem następujących w dokumentacji :Różnica między --default i --store_const w argparse

'store_const' - ten przechowuje wartość określoną przez słowa kluczowego const argument. (Należy zauważyć, że argument słowa kluczowego const domyślnie przyjmuje wartość niepoprawną Brak ). Działanie "store_const" jest najczęściej używane z opcjonalnymi argumentami, które określają jakąś flagę. Na przykład:

>>> parser = argparse.ArgumentParser() 
>>> parser.add_argument('--foo', action='store_const', const=42) 
>>> parser.parse_args('--foo'.split()) Namespace(foo=42)` 

Jak to różni się od ustawiania wartości domyślnej dla argumentu z opcją default?

Odpowiedz

9

Co otrzymałeś z parse_args(''.split())? Spodziewałbym się foo=None.

Teraz dodaj default='39' do definicji argumentu.

default to wartość, którą otrzymuje atrybut, gdy argument jest nieobecny. const to wartość, jaką otrzyma, gdy zostanie podana. Zauważ również, że const jest dozwolone tylko wtedy, gdy akcja jest store_const (i kilka innych specjalnych przypadków).

Uwaga co się dzieje, kiedy zdefiniować store_true działania:

In [30]: p.add_argument('--bar', action='store_true') 
Out[30]: _StoreTrueAction(option_strings=['--bar'], dest='bar', nargs=0, 
    const=True, default=False, type=None, choices=None, help=None, metavar=None) 

Przedmiotem Action że tworzy posiada atrybut const=True i default=False atrybut. Ma także nargs=0. Jest to akcja store_const z tymi specjalnymi wartościami.

[Zaawansowany użytkownik może eksperymentować z add_argument('--foo', nargs='?', default='one', const='two')].

+0

'add_argument ('- foo', nargs = '?', Domyślnie = 'jeden', const = 'dwa')' jest niesamowite – Cychih

Powiązane problemy